请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28075 Thread 中讨论的其他器件:TCA9539、 controlSUITE
我目前正在使用 I2C 接口与 TCA9539 GPIO 扩展器进行通信。 我已将读取操作写入芯片、这需要如下所示的重复启动条件。 不过、我注意到、等待 ARDY 清除的 while 循环需要大量时间才能完成。 是否有办法将 I2C 寄存器设置为自主执行重复起始条件(如我所示)而无需等待 ARDY 置1 (或使用中断)?
第一个问题的后续问题是、使用下面的代码、我可以在示波器上看到重复启动已启动、两个字节已传回。 但是、访问 I2CDRR 时、RX FIFO 中没有字节被读取。 如果我更改下面的代码并将 RM 设置为重复模式、我可以通过访问 I2CDRR 来查看接收到的数据(但仅接收一个字节、因为传输的数量不再像预期的那样依赖于 I2CCNT)。
if (i2c_regs->I2CMDR.bit.stp || i2c_regs->I2CSTR.bit.BB){ return; } //设置 I2C 地址 i2c_regs->I2CSAR.bit.SAR = 0x77; i2c_regs->I2CCNT = 1; // PORT0输入位于地址0 i2c_regs->I2cd2c.bit.data = 0; i2c_regs->I2CMDR.bit = 1;i2c.r.iMTR=i2c.r.it.I2c.r.I2c.r=I2cr = I2c.r.it.I2c.r.I2cr = 0<I2c.r.I2c.r.r.I2c.r.r.r.r.r.r.r.r.r.r.r.r.r.r.r. i2C_regs->I2CMDR.bit.STT = 1; //等待 I2C 寄存器设置的使用 时间(i2c_regs->I2CSTR.bit.ARDY = 0); //设置预期 I2C 寄存器设置的字节数 i2c_regs->I2cNT = 1; //作为主发送器发送启动 i2cst.bit->I2c.r.mds-i2c.r.i2c.r=i2ctr.i2c.r.i2c.r=i2c.r.i2c.rs-i2ctr.i2c.r.i2c.r.i2c.r.i2c.r.i2c.r.i2c.r.i2c.r.i2c.r.i2c.r.i2c.r.i2c.r.i2c.r.i2c.i2c.r.i2c