I2C lock-up

j s jarin.hw na gmail.com
Pondělí Srpen 20 14:37:03 CEST 2012


Kolegovia,

nerad Vam rusim hypoteticku debatu okolo prepipavania neexistujucich
kablov vo vymyslenej situacii, ale mam otazku ohladom pomerne
konkretnej I2C zbernice :-)
Mam tu male zariadenie, kde pouzivam I2C zbernicu z PIC24F ako mastera
k malemu OLED displeju (DEP096032 z TME) a EEPROM 24LC1025. Po dlhsom
testovani sa ukazalo, ze z casu na cas sa komunikacia na IIC "sekne" a
nepomoze ani reset I2C modulu MCU - treba power-on-reset I2C slave
zariadeni. Seknutie sa prejavuje tak, ze vsetka sranda skonci na tom,
ze SDA linka je na nule a I2C modul zahlasi bus collision (teda pri
pokuse stiahnut SDA ako sucast start bitu alebo prenasaneho bajtu
vidi, ze nie je na zbernici sam, kto taha za SDA). Typicky pripad je
slave potvrdzujuci ACK, ktory si "nevsimne" deviaty SCK bit. Potom
slave caka na deviaty bit a master caka na volnu zbernicu. Ked to
nastane, treba jeden az devat krat potahat za SCL drot (vacsinou sa
uvolni po prvom clocku). Toto som vlozil aj do I2C inicializacie, pre
pripad.

Zda sa, ze to funguje (je to mimochodom v I2C specifikacii - UM10204,
strana 20 dolu), ale nejak zvlast sa mi to nepaci. Pravdupovediac,
nejak zvlast sa mi ani nepaci I2C zbernica vobec, uz dlhe roky :-)
Riesite taketo veci u svojich I2C implementacii? Ak ano, mate este
nejake ine postrehy/skusenosti?

J.


Další informace o konferenci Hw-list