我使用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