Thread 中讨论的其他器件:SysConfig、 C2000WARE
大家好!
我的代码基于 TMS320F28375S、我要在 Launchpad 28379D 中进行调试。 我已通过 SysConfig 工具配置了 I2C、如下图所示。

我了解 I2C 协议、但不知道它在 CCS (TI 控制器)中是如何工作的
这是用于 I2C 协议的代码的一部分、
void main()
{
myI2C0_init();
//-----------------------------------//
// while loop from main()
while(1)
{
while(I2C_isBusBusy(myI2C0_BASE)); // bus check
I2C_sendStartCondition(myI2C0_BASE); // start
I2C_putData(myI2C0_BASE, 0xB4); // addr + 0 (write)
I2C_putData(myI2C0_BASE, 0x20); // read reg no 32
I2C_sendStartCondition(myI2C0_BASE); // repeated start
I2C_putData(myI2C0_BASE, 0xB5); // addr + 1 (read)
I2C_buf[0] = I2C_getData(myI2C0_BASE); // read MSB
I2C_sendNACK(myI2C0_BASE); // send NACK
I2C_buf[1] = I2C_getData(myI2C0_BASE); // read LSB
I2C_sendNACK(myI2C0_BASE); // send NACK
I2C_sendStopCondition(myI2C0_BASE); // stop
while (I2C_getStopConditionStatus(myI2C0_BASE)); // stop status
}
}
// I2C init function in Board.c file //
void myI2C0_init(){
I2C_disableModule(myI2C0_BASE);
I2C_initController(myI2C0_BASE, DEVICE_SYSCLK_FREQ, 400000, I2C_DUTYCYCLE_33);
I2C_setConfig(myI2C0_BASE, I2C_CONTROLLER_SEND_MODE);
I2C_setTargetAddress(myI2C0_BASE, 90);
I2C_disableLoopback(myI2C0_BASE);
I2C_setBitCount(myI2C0_BASE, I2C_BITCOUNT_8);
I2C_setDataCount(myI2C0_BASE, 2);
I2C_setAddressMode(myI2C0_BASE, I2C_ADDR_MODE_7BITS);
I2C_disableFIFO(myI2C0_BASE);
I2C_setEmulationMode(myI2C0_BASE, I2C_EMULATION_STOP_SCL_LOW);
I2C_enableModule(myI2C0_BASE);
}
我的从器件地址是90 (十进制)。
I2C 未按此方式工作。 有时候公交车很忙,有时我在得到停止条件状态时被搞砸了。
请帮助我从 AM4096获取数据。
提前感谢。
此致
穆扎米尔·克雷希




