Phần sụn 3.18.x phá vỡ I²C, SPI, âm thanh, lirc, 1 dây (ví dụ: / dev / i2c-1, Không có tệp hoặc thư mục như vậy)


19

Tôi đang sử dụng I²C để điều khiển mô-đun Bright Pi .

Tôi đã làm theo hướng dẫn từ 'Định cấu hình GPIO - Adaf nhung ' và 'Định cấu hình I²C - Adafbean ' để thiết lập I²C. Tôi đã làm điều này một vài tháng trước và mọi thứ đều ổn.

Đây là cách tôi kết nối Bright Pi trên Raspberry Pi (Model B):

Mạch sáng Pi

Kể từ hôm nay, tôi nhận thấy I²C không hoạt động nữa như trước đây. Sử dụng các lệnh như ' sudo i2cdetect -y 1 ' và ' sudo i2cset -y 1 0x70 0x00 0xff ' sẽ báo lỗi:

Không thể mở tệp '/ dev / i2c-1' hoặc '/ dev / i2c / 1': Không có tệp hoặc thư mục như vậy

Sử dụng lệnh ' sudo i2cdetect ' sẽ báo lỗi

Không có i2c-bus được chỉ định!

có nghĩa là i2c-dev đang chạy.

Tệp '/ etc / mô-đun' trông như thế này:

#/etc/modules: kernel modules to load at boot time. 
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

snd-bcm2835
i2c-dev
i2c-bcm2708

Tệp '/etc/modprobe.d/raspi-blacklist.conf' trông như thế này:

blacklist spi and i2c by default (many users don't need them)

#blacklist spi-bcm2708
#blacklist i2c-bcm2708
blacklist snd-soc-pcm512x
blacklist snd-soc-wm8804

Tôi đã thử cài đặt lại tất cả các mô-đun cần thiết, nhưng điều đó cũng không giúp được gì. Ngoài ra apt-get updateapt-get upgradekhông giúp đỡ.

Lệnh ' lsmod | grep i2c 'cho thấy điều này:

i2c_bcm2708          6004  0   
i2c_dev              6709  0

Nó là lạ, bởi vì nó được sử dụng để làm việc trước đây. Tôi có thể nghĩ rằng nó đã bị "hỏng" vì tôi đã cập nhật firmware hai ngày trước, bởi vì Raspberry Pi của tôi đã hiển thị các lỗi kernel kỳ lạ.

Làm cách nào để khắc phục sự cố với I²C?

Câu trả lời:


35

Phần sụn mới nhất thực hiện hỗ trợ cây thiết bị . Điều đó sẽ có những thứ bị hỏng như I²C, SPI và xe buýt 1 dây.

Để biết chi tiết đầy đủ hơn, xem I²C, SPI, I2S, LIRC, PPS, đã ngừng hoạt động? Đọc này. .

Tóm lược

Add one or more of the following to your /boot/config.txt and reboot.

I2C
No longer add: dtparam=i2c1=on (or dtparam=i2c0=on on old models)
Instead add: dtparam=i2c_arm=on (as this is correctly mapped to 0 or 1 for each model)
A very few users might need: dtparam=i2c_vc=on (for the other i2c interface - see note below)

SPI
Add dtparam=spi=on

I2S
Add dtparam=i2s=on

lirc-rpi
Add dtoverlay=lirc-rpi
Add module parameters to the end of the dtoverlay line,
e.g. dtoverlay=lirc-rpi,gpio_in_pin=16,gpio_in_pull=high

w1-gpio
If you require the external pullup
dtoverlay=w1-gpio-pullup,gpiopin=x,pullup=y
otherwise
dtoverlay=w1-gpio-pullup,gpiopin=x
(where x and y are gpios).

Audio card
Add one of the following
dtoverlay=hifiberry-dac
dtoverlay=hifiberry-dacplus
dtoverlay=hifiberry-digi
dtoverlay=iqaudio-dac
dtoverlay=iqaudio-dacplus

heartbeat LED
dtparam=act_led_trigger=heartbeat

Lưu ý: Bạn chỉ nên sử dụng i2c_vc (và i2c_vc_baudrate) nếu bạn thực sự cần - ví dụ: nếu bạn đang lập trình HAT EEPROM. Kích hoạt i2c_vc có thể ngăn chặn Camera Pi được phát hiện.


Ngài là người hùng của tôi! Điều này đã cố định I2C của tôi.
LittleOne

7

Bạn có thể sử dụng sudo raspi-configvà trong Tùy chọn nâng cao vô hiệu hóa Cây thiết bị. Có thể nhanh hơn thay đổi cấu hình bằng tay.


1

Hoặc bạn chỉ có thể sử dụng sudo raspi-configđể kích hoạt I2C trong

Advanced Options> I2C.

cho bố cục từ raspi-configphiên bản 20160108, tháng 1 năm 2016 hoặc trong các phiên bản mới hơn

Interfacing Options> I2C.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.