I2C v AT91SAM7

Tomáš Hamouz hamouz na alsoft.cz
Čtvrtek Červenec 7 10:07:42 CEST 2011


Dík za odpověď, už jsem si říkal jsem na nějakém utajeném ban listu
:-/

Potíž je v tom, že to fungovalo, a navíc po zapnutí i chvíli funguje.
Kontrolováno osciloskopem, všechny přechody jsou jak mají být.
Problém nastal až s postupným nabýváním SW, a nejsem schopen
vystopovat kdy to přestane fungovat.

Další symptom je, že nenastavuje RxReady bit, takže vypadávám na
timeout, bez ohledu jak ho protáhnu. Ostatní chování s tím bude
pravděpodobně souviset.

Domnívám se že to bude spíš chyba v křemíku, našel jsem že si lidé
stěžovali na podivné chování I2C v tomto MCU. Doporučovali vyřešit to
sw driverem, což jsem také udělal a chodí to naprosto bez problémů.
Ach jo :-((

Tomáš



JL> Dne středa 22 Červen 2011 17:08:06 Tomáš Hamouz napsal(a):

>> Frame vypadá tedy takto:
>>   <start>
>>   adresa zařízení + write
>>   interní adresa (1-2 byty, podle periférie)
>>   <repeated start>
>>   adresa zařízení + read
>>   1. datový byte
>>   <nack>
>>
>> Kudy se vydat při hledání chyby?
>> 
>> Tomáš
>> 

JL> Možná se teď ztrapním, naposledy jsem něco s i2c programoval (driver ku i2c hw
JL> v LPC2294) před dvěma lety tak si pamatuju pendrek slave NACK chápe jako povel
JL> k ukončení přenosu. Jestli má MCU nějaký fifo na data, tak třeba je plný, nebo
JL> jste omylem v adrese poslal write bit a nack pochází od druhé strany než
JL> předpokládáte, nebo máte špatné pull-upy na sběrnici a bity se vám tam náhodně
JL> mění jak nabíjíte kapacitu drátů, nemáte výstupy jako open drain, nebo máte
JL> špatně zablokované napájení.

JL> Tohle z wikipedie mi si beru na pomoc s tím co ten NACK může znamenat:

JL> "After every 8 data bits in one direction, an "acknowledge" bit is transmitted
JL> in the other. The transmitter and receiver switch roles for one bit and the
JL> erstwhile receiver transmits a single 0 bit (ACK) back. If the transmitter
JL> sees a 1 bit (NACK) instead, it learns that:

JL>     If the master is transmitting, the slave is unable to accept the data. No
JL> such slave, command not understood, or unable to accept any more data.
JL>     If the slave is transmitting, the master wishes it to stop after this data
JL> byte."


JL> Asi jsem moc nepomohl, to mám z toho že jsem se probudil v sobotu bezdůvodně
JL> ve 4 hodiny ráno.






Další informace o konferenci Hw-list