主题中讨论的其他器件: ADS1100
工具/软件:Code Composer Studio
这是初始化函数调用和函数
TI_USCI_I2C_receiveinit (0x48、0x12);
void TI_USCI_I2C_receiveinit (unsigned char slave_address、 unsigned char 预分频){ P3SEL |= SDA_PIN + SCL_PIN; //将 I2C 引脚分配给 USCI_B0 UCB0CTL1 = UCSWRST; //启用 SW 复位 UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; // I2C 主设备,同步模式 UCB0CTL1 = UCSSEL_2 + UCSWRST; //使用 SMCLK、保持软件复位 UCB0BR0 =预分频; //设置预分频 器 UCB0BR1 = 0; UCB0I2CSA = SLAVE_ADDRESS; //设置从地址 UCB0CTL1 &=~UCSWRST; //清除 SW 复位、恢复运行 UCB0IE = UCNACKIE; UCB0IE = UCRXIE; //启用 RX 中断 }
之后调用接收函数、这里是该函数的函数
TI_USCI_I2C_Receive (3、array2);
void TI_USCI_I2C_Receive (unsigned char byteCount、unsigned char * field){
TI_receive_field = field;
if (byteCount = 1){
byteCtr = 0;
_disable_interrupt ();
UCB0CTL1 |= UCTXSTT; // I2C 启动条件
while (UCB0CTL1 & UCTXSTT); //起始条件是否已发送?
UCB0CTL1 |= UCTXSTP; // I2C 停止条件
__ENABLE_INTERRUPT();
}否则(byteCount >1){
byteCtr = byteCount -2;
UCB0CTL1 |= UCTXSTT; // I2C 起始条件
}否则
while (1); //非法参数
}
如果有人能帮助我解决 i2c 的问题,我会非常感激。以上是2张图片,可以帮助解释我的问题。收到第一个字节后,数据线就会保持高电平。 左侧是我使用 MSP430F5529获得的结果、右侧是我使用 Arduino 获得的结果、我使用一些示例代码进行了调试。 我认为这更像我应该得到的东西。有人知道我做了什么错误,还是有我应该尝试的示例代码? 如果您需要头文件或 c 文件、请告诉我。


