เฟิร์มแวร์ 3.18.x แบ่งI²C, SPI, เสียง, lirc, 1-wire (เช่น / dev / i2c-1, ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว)


19

ฉันใช้I²Cเพื่อควบคุมโมดูลBright Pi

ฉันทำตามคำแนะนำจาก 'การกำหนดค่า GPIO - Adafruit ' และ 'การกำหนดค่าI²C - Adafruit ' เพื่อตั้งค่าI²C ฉันทำสิ่งนี้เมื่อไม่กี่เดือนที่ผ่านมา

นี่คือวิธีที่ฉันเชื่อมต่อ Bright Pi กับ Raspberry Pi ของฉัน (Model B):

เซอร์กิตไบร์ท

ตั้งแต่วันนี้ฉันสังเกตเห็นว่าI²Cไม่ทำงานอีกต่อไปอย่างที่เคยเป็น การใช้คำสั่งเช่น ' sudo i2cdetect -y 1 ' และ ' sudo i2cset -y 1 0x70 0x00 0xff ' จะให้ข้อผิดพลาด:

ไม่สามารถเปิดไฟล์ '/ dev / i2c-1' หรือ '/ dev / i2c / 1': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว

การใช้คำสั่ง ' sudo i2cdetect ' จะทำให้เกิดข้อผิดพลาด

ไม่ได้ระบุ i2c-bus!

ซึ่งหมายความว่า i2c-dev กำลังทำงาน

ไฟล์ '/ etc / modules' มีลักษณะดังนี้:

#/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

ไฟล์ '/etc/modprobe.d/raspi-blacklist.conf' มีลักษณะดังนี้:

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

ฉันลองติดตั้งโมดูลที่จำเป็นทั้งหมดใหม่ แต่ก็ไม่ได้ช่วยอะไร apt-get updateและยังapt-get upgradeไม่ได้ช่วย

คำสั่ง ' lsmod | grep i2c 'แสดงสิ่งนี้:

i2c_bcm2708          6004  0   
i2c_dev              6709  0

มันแปลกเพราะมันเคยทำงานมาก่อน ฉันอาจคิดว่ามัน "เสีย" ตั้งแต่ฉันอัปเดตเฟิร์มแวร์เมื่อสองวันก่อนเพราะ Raspberry Pi ของฉันแสดงข้อผิดพลาดเคอร์เนลแปลก ๆ

ฉันจะแก้ไขปัญหาด้วยI²Cได้อย่างไร

คำตอบ:


35

เฟิร์มแวร์ล่าสุดใช้การสนับสนุนทรีของอุปกรณ์ นั่นจะมีสิ่งที่แตกสลายเช่นI²C, SPI และ 1-bus bus

สำหรับรายละเอียดเพิ่มเติมให้ดูI²C, SPI, I2S, LIRC, PPS หยุดทำงานหรือไม่ อ่านนี่. .

สรุป

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

หมายเหตุ:ขอแนะนำให้คุณใช้ i2c_vc (และ i2c_vc_baudrate) ถ้าคุณต้องการจริงๆเท่านั้นตัวอย่างเช่นหากคุณกำลังเขียนโปรแกรม HAT EEPROM การเปิดใช้งาน i2c_vc สามารถหยุดการตรวจพบกล้อง Pi


คุณเป็นฮีโร่ของฉัน! สิ่งนี้ทำให้ I2C ของฉันคงที่
LittleOne

7

คุณสามารถใช้sudo raspi-configและในตัวเลือกขั้นสูงปิดการใช้งานทรีอุปกรณ์ อาจเร็วกว่าการเปลี่ยนการกำหนดค่าด้วยตนเอง


1

หรือคุณสามารถใช้sudo raspi-configเพื่อเปิดใช้งาน I2C ใน

Advanced Options> I2C.

สำหรับเลย์เอาต์จากraspi-configเวอร์ชั่น 20160108, มกราคม 2016 หรือในรุ่นที่ใหม่กว่า

Interfacing Options> I2C.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.