请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28388D 主题中讨论的其他器件:SysConfig、 ADS7128、
尊敬的先生/女士:
我们正在使用 TMS320F28388D 开发套件来测试 ADS7128。 如果 使用以下配置在 SysConfig 中启用 I2C_INT_TXFF:
I2C_setFIFOInterruptLevel(i2c0_uc_BASE, I2C_FIFO_TX0, I2C_FIFO_RX1);
TX 中断永久运行且不能被清除。 这是可以理解的、因为 TXFFST < TXFFIL。
但是、如果在 SysConfig 中禁用了 I2C TX FIFO 中断并在 Board_init 之后启用、则无法看到所有中断。 您能指出以下代码存在任何问题吗?
代码非常简单:
I2C_disableModule(i2c0_uc_BASE); I2C_initController(i2c0_uc_BASE, DEVICE_SYSCLK_FREQ, 400000, I2C_DUTYCYCLE_33); I2C_setConfig(i2c0_uc_BASE, I2C_CONTROLLER_SEND_MODE | I2C_REPEAT_MODE); I2C_setTargetAddress(i2c0_uc_BASE, addr); I2C_disableLoopback(i2c0_uc_BASE); I2C_setBitCount(i2c0_uc_BASE, I2C_BITCOUNT_8); I2C_setDataCount(i2c0_uc_BASE, count); I2C_setAddressMode(i2c0_uc_BASE, I2C_ADDR_MODE_7BITS); I2C_enableFIFO(i2c0_uc_BASE); I2C_clearInterruptStatus(i2c0_uc_BASE, I2C_INT_ARB_LOST | I2C_INT_NO_ACK | I2C_INT_RXFF | I2C_INT_TXFF); I2C_setFIFOInterruptLevel(i2c0_uc_BASE, I2C_FIFO_TX0, I2C_FIFO_RX1); I2C_enableInterrupt(i2c0_uc_BASE, I2C_INT_ARB_LOST | I2C_INT_NO_ACK | I2C_INT_RXFF | I2C_INT_TXFF); I2C_setEmulationMode(i2c0_uc_BASE, I2C_EMULATION_FREE_RUN); I2C_enableModule(i2c0_uc_BASE); while (I2C_isBusBusy(i2c0_uc_BASE)); // Part one transmission: No interrupt I2C_putData(i2c0_uc_BASE, OPCODE_SW); I2C_putData(i2c0_uc_BASE, address); I2C_putData(i2c0_uc_BASE, value); I2C_sendStartCondition(i2c0_uc_BASE); DEVICE_DELAY_US(BUSY_DELAY_100us); I2C_sendStopCondition(i2c0_uc_BASE); DEVICE_DELAY_US(BUSY_DELAY_50us);