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