PIC32MK HW I2C zahada v rychlosti cteni
Libor Konečný
support na mikrovlny.cz
Pátek Leden 20 11:14:52 CET 2023
Dneska jsem zkusil puvodni SW driver, ten funguje perfektne, delay mam
nastaveny mezi jednou zmenou clocku 2us.
U HW driveru je rychlost 400kHz.Na analyzatoru rychlost odpovida. Vzdy
jsem pouzival SW driver, nebot slo o par bajtu.
SDA SCL si resi uz HW driver.
Nyni potrebuji nacitat 8 sensoru rychle za sebou a vysledek je horsi.
Zkousel jsem i dalsi dve desky , dokonce cipy maji datecode o 4 roky
rozdil a maji jine pouzdro.
Mel bych dotaz k tomu RCEN
I2C4CONbits.RCEN = 1; // Enable the receiver
Nedela tento zapis to, ze pri cteni i2c bajtu PIC spusti 8 x clock a
nacita z SDA pinu 8xbit?
while (!I2C4STATbits.RBF) {;} pak ceka az na konec cteni.
Vychazel jsem z Harmony plib, kde se ten RCEn nastavuje az pred ctenim
bajtu.
Na analyzatoru je vsechno perfektni, cteni je bez prodlevy, ale zustane
to 50ms cekat na tomto cyklu while (!I2C4STATbits.RBF) {;}
Projekt mam cisty, jen i2c a debug.
LK
Dne 19.01.2023 v 23:35 Jan Waclawek napsal(a):
> [preposielam]
> ---
>
> Dobry vecer,
>
> s danym MCU nemam ziadne skusenosti, ale skusim par otazok.
>
> Aka je rychlost citania I2C pri inych typoch MCU? Ake mate skusenosti z
> praxe.
> Skusal ste jednoduchu "holu" aplikaciu len so zapisom a len s citanim?
> Skusil ste druhy cip? Najlepsie z inej sarze...
> Ako mate nastavene piny SDA SCL?
>
> A este taky tip
>
> I2C4CONbits.RCEN = 1; // Enable the receiver
>
> by som dal len do uvodnej inicializacie a volal ho len jeden raz pri
> resete. Nepovoloval by som receiver pri kazdom volani rutiny citania.
> Myslim si, ze toto moze byt ta chyba.
>
> A.
>
>
> Zapis asi 10 ti registru spotrebuje max 1ms, ale jakmile chci nacitat
> tak jeden bajt spotrebuje cca 50ms.
>
> Pokud pouzivam repeatread, tak kazdy bajt spotrebuje 50ms.
>
> Na logickem analyzatoru nevidim nic zvlastniho.
>
> Pritom zadnou chybu v driveru nevidim
>
> _I2c_read je toto:_
>
> I2C4CONbits.RCEN = 1; // Enable the receiver
>
> while (!I2C4STATbits.RBF) {;}
>
> DATA = I2C4RCV;
>
> Ten while spotrebuje onech 50 msec, nechapu proc.
>
> _______________________________________________
> 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