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获取数据。
提前感谢。
此致
穆扎米尔·克雷希