piątek, 21 września 2018

PIC32MM i piny alternatywne dla I2C1 - odkrywamy najskrytsze tajemnice :)

Interfejs I2C1 w PIC32MM nie możemy przyporządkować do innych pinów niż wymusza to producent firma Microchip. Standardowo mamy tutaj przyporządkowane następujące piny RB9 -> SDA1 i RB8 -> SCK1 . Z tabelki z opisem pinów MCU wynika jednak , że jest dostępna alternatywa. Ponieważ sam się drapałem w głowę przez chwilę nad tym zagadnieniem. Dlatego czynię niniejszy wpis przy okazji przywołujący mi skojarzenie ze słynnym serialem Stanisława Bareji - Alternatwy 4.



W powyższej tabelce na pozycji nr 5 i 45 mamy coś takiego jak  ASCL1 i ASDA1 a pod tabelką następującą informację : "Alternate pin assignments for I2C1 as determined by the I2C1SEL Configuration bit."

Z powyższych informacji wynika, że na pinie RC9 możemy ustawić alternatywnie SCL1 dla I2C1 a na pinie RB5 - SDA1 .  Radośnie zatem próbujemy znaleźć w rejestrach twór I2C1SEL i mamy zong bo nigdzie takowego nie znajdziemy. Przeprowadziłem zatem małe śledztwo w tym zakresie i ustaliłem co następuje : alternatywne przyporządkowanie pinów dla I2C1 ustawimy w takim dziwacznym rejestrze :


aby być pewnym, że mamy piny RB5 i RC9 przyporządkowane alternatywnie do I2C1 wystarczy w funkcji konfiguracyjnej  zrobić wpis :

AFDEVOPTbits.ALTI2C = 0;

Najmniej się napracujemy konfigurując I2C1 w MCC bo tam jak przyporządkujemy kłódeczkami  w Pin Module piny alternatywne dla I2C1 to w pliku mcc.c pojawi się wpis jak poniżej :


#pragma config ALTI2C = ON    // Alternate I2C1 Pins Location Enable bit->Alternate I2C1 pins are used

, który załatwia nam sprawę. 

Pozdrawiam
picmajster.blog@gmail.com

Brak komentarzy:

Prześlij komentarz