O firmware 3.18.x interrompe I²C, SPI, áudio, lirc, 1 cabo (por exemplo, / dev / i2c-1, arquivo ou diretório inexistente)


19

Estou usando o I²C para controlar um módulo Bright Pi .

Eu segui as instruções de ' Configurando o GPIO - Adafruit ' e ' Configurando o I²C - Adafruit ' para configurar o I²C. Eu fiz isso há alguns meses e tudo correu bem.

É assim que eu conectei o Bright Pi no meu Raspberry Pi (modelo B):

Circuit Bright Pi

Desde hoje, notei que o I²C não funciona mais como costumava. Usando os comandos como ' sudo i2cdetect -y 1 ' e ' sudo i2cset -y 1 0x70 0x00 0xff ', ocorrerá o erro:

Não foi possível abrir o arquivo '/ dev / i2c-1' ou '/ dev / i2c / 1': esse arquivo ou diretório não existe

Usar o comando ' sudo i2cdetect ' dará o erro

Nenhum barramento i2c especificado!

o que significa que o i2c-dev está sendo executado.

O arquivo '/ etc / modules' fica assim:

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

O arquivo '/etc/modprobe.d/raspi-blacklist.conf' fica assim:

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

Eu tentei reinstalar todos os módulos necessários, mas isso também não ajudou. Também apt-get updatee apt-get upgradenão ajudou.

O comando ' lsmod | grep i2c 'mostra isso:

i2c_bcm2708          6004  0   
i2c_dev              6709  0

É estranho, porque costumava trabalhar antes. Eu acho que está "quebrado" desde que fiz uma atualização de firmware há dois dias, porque meu Raspberry Pi estava mostrando erros estranhos no kernel.

Como posso resolver o problema com o I²C?

Respostas:


35

O firmware mais recente implementa o suporte à árvore de dispositivos . Isso terá problemas com I²C, SPI e barramento de 1 fio.

Para obter detalhes completos, consulte I²C, SPI, I2S, LIRC, PPS, parou de funcionar? Leia isso. .

Sumário

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

Nota: Recomenda-se usar o i2c_vc (e o i2c_vc_baudrate) se você realmente precisar - por exemplo, se estiver programando uma HAT EEPROM. A ativação do i2c_vc pode impedir a detecção da câmera Pi.


Você senhor, é meu heroi! Isso corrigiu meu I2C.
LittleOne 24/01

7

Você pode usar sudo raspi-confige, nas Opções avançadas, desativar a Árvore de dispositivos. Pode ser mais rápido do que alterar a configuração manualmente.


1

Ou você pode apenas usar sudo raspi-configpara ativar o I2C em

Advanced Options> I2C.

para o layout da raspi-configversão 20160108, janeiro de 2016 ou em versões posteriores

Interfacing Options> I2C.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.