您好!
我正在尝试将我们的项目之一从"使用休眠间歇性连接"切换到"始终使用 LPDS 连接"。 退出 LPDS 时、I2C 有一些问题。
LPDS 退出后的第一个 i2c 请求始终返回 I2C_STATUS_INCOMPLETE。 以下请求返回 I2C_STATUS_BUS_BUS_BUS_BUSY。
当使用示波 器查看信号时、我可以看到正在写入的地址和数据、但当相关读取发生时、SCL 保持低电平、并且我从 I2CMasterIntStatusEx 中获得意外的 I2C_MASTER_INT_STOP。
如果代码完全相同、并且在 LPDS 退出后添加了 i2c_close/i2c_open、则可以正常工作。
我可以在 I2CCC32XX.c 中看到 、I2CCC32XX_postNotify 函数在 LPDS 退出时正确地调用 I2CCC32XX_initHw。 但是、这似乎不足以正确复位 i2c 主器件。
我在阻塞模式下使用 i2c。
典型传输的设置如下:
i2cTransaction.slaveAddress = I2C_ADDR_MSP; i2cTransaction.writeBuf = txBuffer; i2cTransaction.writeCount = 1; i2cTransaction.readBuf = rxBuffer; i2cTransaction.ReadCount = 4; I2C_transferTimeout (i2c、事务、msec_TO_TICKs (500));
正常传输
NOK 传输
最新的 SDK 和服务包 simplelink_cc32xx_sdk_4_20_00_07
在相关的注释中、是否有充分的理由在停止条件下永远等待、而不是使用提供的超时? (其中有注释:"如果从器件保持时钟线、这可能会永远阻止")
谢谢、
C é dric
