主题中讨论的其他器件:TMP102
您好!
我使用 MSP430通过 I2C 与一些温度器件通信。 我使用的是 driverlib 库、并且在使用该库时遇到了 I2C 通道的奇怪行为。
当尝试重复发送多字节消息时、不会发送消息的第一个字节。 下面 是一个代码示例:
空 I2C_EUSCI_B1_Config ()
{
Param.selectClockSource = EUSCI_I2C_CLOCKSOURCE_SMCLK;
param.i2cClk = CS_getSMCLK ();
param.datarate = EUSCI_B_I2C_SET_DATA_RATE_100KBPS;
Param.autoSTOPGeneration = EUSCI_B_I2C_NO_AUTO_STOP;
EUSCI_B_I2C_initMaster (EUSCI_B1_BASE、param);
EUSCI_B_I2C_ENABLE (EUSCI_B1_BASE);
}
void main()
{
while (1)
{
// I2C Tx 消息–0x01、0xAA
EUSCI_B_I2C_setSlaveAddress (EUSCI_B1_BASE、TMP102_ADDRESS);
EUSCI_B_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x01);
EUSCI_B_I2C_masterSendMultiByteNext (EUSCI_B1_BASE、0xAA);
EUSCI_B_I2C_masterSendMultiByteStop (EUSCI_B1_BASE);
// I2C Tx 消息–0x01、0xBA
EUSCI_B_I2C_masterSendMultiByteStart (EUSCI_B1_BASE、0x01);
EUSCI_B_I2C_masterSendMultiByteNext (EUSCI_B1_BASE、0xBA);
EUSCI_B_I2C_masterSendMultiByteStop (EUSCI_B1_BASE);
}
}
第一次进入 while 循环时、第一条消息被正确发送- 0x01、然后是0xAA。 但在接下来的消息中、不会再次发送0x01。
在所有消息中、只发送0xAA 和0xBA。
我看到另一个奇怪的行为、在发送第一条消息(0x01、0xAA)然后尝试发送单字节消息后、不发送数据字节... 仅提供地址。
出于某种原因、它似乎会丢弃传输的第一个字节。
感谢您的帮助、
谢谢!