我使用PIC18F87J11作爲主設備,LiPower Shield作爲從設備,我所要做的就是能夠從LiPower Shield讀取電池電壓值。我正在使用MPLAB C18庫進行I2C通信。我無法獲得正確的讀數,因爲我認爲兩個設備之間的通信設置不正確。使I2C工作在PIC18上
我正在尋找解釋波形信號以檢測問題。此外,我想知道如果我在代碼中丟失了某些東西。任何改進代碼的建議都會有所幫助。
LiPower Shield附帶Arduino示例代碼,但我使用Microchip的PIC18芯片。示例代碼找到here。
這是我在嘗試讀取電池電壓時得到的信號。
代碼:
SSP2ADD = 19;
OpenI2C2(MASTER,SLEW_OFF);
StartI2C2();
IdleI2C2();
WriteI2C2(0x36);
IdleI2C2();
data = ReadI2C2(); // Read byte of data
printf ("\r\nAddress 32");
printf (" Byte:");
PrintChar(data);
IdleI2C2();
AckI2C2();
IdleI2C2();
WriteI2C2(0x02);
IdleI2C2();
data = ReadI2C2(); // Read byte of data
printf ("\r\nAddress 02");
printf (" Byte:");
PrintChar(data);
IdleI2C2();
AckI2C2();
StopI2C2(); // Stop condition I2C on bus
輸出:我認爲是錯誤的。
Address 32 Byte:FF
Address 02 Byte:FF
我真的不知道,如果我寫/從正確的地址讀取,但是這是他們在他們的示例代碼中使用的地址。如果可能的話,我希望我能夠對代碼的信號和反饋作出一些解釋。
任何意見將不勝感激! – Ammar 2014-10-27 03:54:20