Witam kolegów,
od jakiegoś czasu próbuje skomunikować ze sobą dwa procesory STM32 za pomocą magistrali I2C za wykorzystaniem przerwań po stronie Slave. W zasadzie wszystko działa

No właśnie!! ale czy poprawnie? Ciekawi mnie jedna zagwostka, której nie potrafię wytłumaczyć sobie sam. Otóż ile danych nie pobierałbym od slave to zawsze w ramce widoczny jest jeden bajt za dużo jak w przebiegu poniżej (zapis 6 bajtów + odczyt 2 bajtów). Transmisja jest realizowana na jednym mikrokontrolerze z wykorzystaniem I2C1 i I2C2. Zastanawiam się nad tym:
-dlaczego master dalej generuje przebieg na SCL po nadaniu NACK(niechęć do przyjmowania kolejnych danych)?
-dlaczego na końcu dodatkowy bajt to zawsze 0xFF (podejrzewam, że linia SDA została już ściągnięta do VCC a SCL jeszcze nie, stąd to zamieszanie)?
-wynikła sytuacja jest spowodowana rozsynchronizowaniem się slave i master (w co wątpię bo sygnał SCL nadal istnieje)?
-powodem jest niedoskonałość analizatora(Sal....e lo...c)?

Będę wdzięczny za każdą Waszą wskazówkę.