Raspberry Pi 3 - nefunguje I2C sběrnice

Raspberry Pi 3 - nefunguje I2C sběrnice
« kdy: 18. 04. 2018, 10:43:55 »
Zdravím.
Včera se mi asi posmolil expander MCP23017.
Vůbec jsem ho neviděl.
Vyměnil jsem ho za nový o kterém vím, že je na 100% funkční.
Přes i2cdetect 1 ho vidím, ale to je vše.

Kód: [Vybrat]
sudo i2cset -y 1 0x20 0x12 0xFF
sudo i2cset -y 1 0x20 0x13 0xFF
sudo i2cset -y 1 0x20 0x00 0x00
sudo i2cset -y 1 0x20 0x01 0x00

Error: Write failed

Muže byt spálena sběrnice, když ho vidím?
« Poslední změna: 18. 04. 2018, 13:06:41 od Petr Krčmář »


Honza

Re:Raspberry Pi 3 - i2c sběrnice
« Odpověď #1 kdy: 18. 04. 2018, 12:04:20 »
Podívej se na blokáč na straně 2 zde (http://ww1.microchip.com/downloads/en/DeviceDoc/20001952C.pdf), zamysli se a sám si odpověz...

Honza

Re:Raspberry Pi 3 - nefunguje I2C sběrnice
« Odpověď #2 kdy: 18. 04. 2018, 13:30:15 »
A abych tu jen neplkal.

A co přesně znamená "když ho vidím?"
Kód: [Vybrat]
i2cset ti píše
Kód: [Vybrat]
Error: Write failed, takže se mu nedaří zapsat. A možná ho na sběrnici ani "nevidí".

Zkoušel jsi:
Kód: [Vybrat]
sudo i2cdetect -y 1? Výstup?

Re:Raspberry Pi 3 - nefunguje I2C sběrnice
« Odpověď #3 kdy: 18. 04. 2018, 13:34:15 »
A co přesně znamená "když ho vidím?"
Ano, přes sudo i2cdetect -y 1 ho vidím na adrese 20

Honza

Re:Raspberry Pi 3 - nefunguje I2C sběrnice
« Odpověď #4 kdy: 18. 04. 2018, 13:37:13 »
A co přesně znamená "když ho vidím?"
Ano, přes sudo i2cdetect -y 1 ho vidím na adrese 20
Jak přesně vypadá výstup i2cdetect? A jak se změní, když dáš SDA natvrdo na 0 (zem)?


Re:Raspberry Pi 3 - nefunguje I2C sběrnice
« Odpověď #5 kdy: 18. 04. 2018, 13:41:41 »
Takto.

Honza

Re:Raspberry Pi 3 - nefunguje I2C sběrnice
« Odpověď #6 kdy: 18. 04. 2018, 13:44:21 »
Takto.
A jak to vypadá, když dáš SDA na 0 (drátem)?

I když zkoušíš číst registry toho MCP přes i2cdump? Dostáváš nějaké smysluplné hodnoty, které odpovídají datasheetu?

ehmmm

Re:Raspberry Pi 3 - nefunguje I2C sběrnice
« Odpověď #7 kdy: 18. 04. 2018, 14:07:24 »
A jak to vypadá, když dáš SDA na 0 (drátem)?

Muzes prosim poucit bastlirskeho zacatecnika, co by mel v takovem pripade videt?
Neco smysluplneho? Nebo jenom to, ze na adrese 0x20 se uz neozve vubec nic?

Jako amater bych si asi na SCL a SDA povesil osciloskop a snazil bych se pochopit, co se tam deje.

Honza

Re:Raspberry Pi 3 - nefunguje I2C sběrnice
« Odpověď #8 kdy: 18. 04. 2018, 14:56:18 »
A jak to vypadá, když dáš SDA na 0 (drátem)?

Muzes prosim poucit bastlirskeho zacatecnika, co by mel v takovem pripade videt?
Neco smysluplneho? Nebo jenom to, ze na adrese 0x20 se uz neozve vubec nic?

Jako amater bych si asi na SCL a SDA povesil osciloskop a snazil bych se pochopit, co se tam deje.
Pískomil zřejmě osciloskop nemá.

Další postup má více alternativ, napadá mně třeba:
  • Měřit - takže ten tebou zmíněný osciloskop, nebo nějaký i velmi jednoduchý logický analyzátor
  • Testovat zjednodušeně bez hlubší znalosti věci (pokus-omyl) - je k dispozici jiná I2C součástka? Třeba EEPROM paměť, nebo nějaký teploměr? Šup tam s ní a vyzkoušet
  • Testovat důkladně. Rozumíš I2C protokolu? Rozumíš přesné funkci a datovému rozhraní expanderu MCP a nemáš vybavení na měření? Naplánuj si testy a zkus vydedukovat co se děje a proč.

A co se stane při připojení SDA na zem? Pokud není přerušená (zřejmě ne, jinak by se neozvalo jen zařízení na adrese 0x20), tak bude i2cdetect hlásit přítomnost zařízení na všech testovaných adresách. A proč? Protože i2cdump kontroluje jediné - a to ACK na zaslanou adresu. A ACK znamená SDA v 0. Stejně tak by šlo zkusit SDA na logickou 1 - to potom "není vidět" žádné zařízení, protože od žádného nepřijde do kontroléru ACK.

Pokud Pískomil nemá osciloskop ani nic jiného, ať vezme i2cdump + datasheet obvodu a zjistí, jestli se mu na sběrnici něco děje a jestli je to to, co očekává.

V základu sběrnice totiž funguje - zcela jistě jdou hodiny a jde zapsat adresu na SDA + přečíst zpět ACK. To ale neznamená, že tam nemůže být jiná bota...

Pískomil postupuje dost chaoticky. Vrací mu i2cset Write error jenom až na to 4. volání nebo už při prvním? Proč to nezkusí po jednom? Čeho vlastně chtěl dosáhnout těmi 4 zápisy (GPIOA, GPIOB,  IODIRA, IODIRB)?

Atd, atp...


ehmmm

Re:Raspberry Pi 3 - nefunguje I2C sběrnice
« Odpověď #9 kdy: 18. 04. 2018, 15:38:15 »
A co se stane při připojení SDA na zem? Pokud není přerušená (zřejmě ne, jinak by se neozvalo jen zařízení na adrese 0x20), tak bude i2cdetect hlásit přítomnost zařízení na všech testovaných adresách. A proč? Protože i2cdump kontroluje jediné - a to ACK na zaslanou adresu. A ACK znamená SDA v 0. Stejně tak by šlo zkusit SDA na logickou 1 - to potom "není vidět" žádné zařízení, protože od žádného nepřijde do kontroléru ACK.

Dekuji za vysvetleni.

Re:Raspberry Pi 3 - nefunguje I2C sběrnice
« Odpověď #10 kdy: 18. 04. 2018, 15:40:15 »
Stah jsem si nového raspbiana a strčil na jinou kartu a vše funguje.
Divné to.
A to si dělám přes crontab zálohu karty jednou týdně, a aní se zálohou to nešlo.