STM32f4 a I2C

Pavel Kutina hw na prelude.cz
Úterý Červenec 14 10:33:28 CEST 2015


U Mikroe kompilatoru Pascalu a STM32F103 mam podobny problem - jakmile se na 
I2C objevi nejaky zadrhel, hryzne se a dal nepokracuje. Nejak se mi to 
nepodarilo osetrit - pokud je slave zivy a odpovida jak ma, tak je vsechno 
OK, ale pokud se jako master snazim oslovit treba neexistujici zarizeni 
(typicky - pri vyvoji se spletu v adrese slave), tak ceka a ceka a ceka. Pri 
nespravne odpovedi (ruseni, chyba v datech) je vysledek velmi podobny. 
Vcelku moc nevim co s tim, tihle brouci i tenhle kompilator jsou mi 
sympaticti, ale s I2C je nekde problem. Fakt je, ze jsem to zatim nezkoumal 
do hloubky, ted je teziste moji "tvorby" malicko jinde.

Pavel Kutina



----- Original Message ----- 
From: "Roman Vostřel" <vostrel na lit.cz>
To: "HW-news" <hw-list na list.hw.cz>
Sent: Tuesday, July 14, 2015 9:20 AM
Subject: Re: STM32f4 a I2C


> Učím se používat Visual TFT od Mikroelektroniky a ta má svůj překladač. 
> Mají tam nějaké knihovny pro komunikaci,nepoužívají přerušení a zaseknou 
> celý program, pokud slave blbě odpoví. Tudy cesta nevede.
>
> Podíval jsem se do výsledného kodu a i když instrukce Armu zatím neznám 
> (skončil jsem u 51), bylo jasné že to čtení tam není. Pokud registr načtu 
> do lokální proměnné,se kterou se dál nepracuje, tak to překladač ignoruje. 
> Už to konečně chodí.
>
> Tři dny hledám, kde je chyba a taková blbost. Jdu se učit instrukce Armu, 
> vidím že to bez toho nejde. Překladač má někdy svou hlavu.
>
>
> Dne 14.7.2015 v 8:35 Jan Waclawek napsal(a):
>>   ADDR: Address sent (master mode)/matched (slave mode)
>> This bit is cleared by software reading SR1 register followed reading 
>> SR2,
>> or by hardware
>> when PE=0
>>
>> Co je u Vas i2c1_sr2?
>>
>> Mimochodom, preco nepouzivate standardne definicie z stm32f4xxx.h?
>>
>> wek
>>
>>
>> ----- Original Message ---------------
>>
>> Subject: STM32f4 a I2C
>>     From: =?ISO-8859-2?Q?Roman_Vost=F8el?= <vostrel na lit.cz>
>>     Date: Tue, 14 Jul 2015 08:11:37 +0200
>>       To: HW-news <hw-list na list.hw.cz>
>>
>>> Zase jeden dotaz k STM32F4. Sna¾ím se odeslat nìco pøes I2c s vyu¾itím
>>> pøeru¹ení. Ode¹le mì to start, adresu,dostane ACK a zasekne se to pøi
>>> odeslání prvního byte. Nìjak ¹patnì nuluji pøíznak ADDR.
>>> Zatím tam mát tohle:
>>>
>>> zaèátek pøeru¹ení
>>>
>>> SR1=I2C1_SR1;
>>>
>>> if (SR1.b1==1)
>>>        {
>>>
>>>          //test1=i2c1_sr1; (zkou¹el jsem obì varianty)
>>>          test2=i2c1_sr2;
>>>          testi1++;
>>>        }
>>>
>>>
>>> 1) po¹lu start
>>> 2) èeká na SB, pak zapí¹u do DR adresu
>>> 3) vrátí se ADDR + TxE, to je ta rutina vý¹e
>>>   -poznámka: pokud to tady stopnu a znovu rojedu debuggerem,  tak se
>>> addr sám vynuluje a ode¹le zbytek dat jak má.
>>> 4) pak obslou¾ím TxE, tam zapí¹i do DR èíslo, tím vynuliji TxE
>>> 5) dál u¾ nic,data se neode¹lou a zacyklí se to na nevynulovaném bitu 1,
>>> tj. ADDR
>>>
>>> Jak tedy správnì vynulovat ADDR? nìkde dìlám chybu.
>>>
>>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
> 



Další informace o konferenci Hw-list