您好!
我在2年前发布了一个类似的问题、但直到现在才能够再次查看。
我使用 USB-I2C 软件狗与 EVM430-FR6047通信。 由于我的软件狗与 LabView 一起在 COMM_IRQ 线路变为低电平时使用大约2.5ms、直到它开始读取、因此我得到了超时。 当使用示波器对此进行检查时、我可以看到 COM_IRQ 变为低电平、然后恢复为高电平、然后在 COMM_SLK 线路上启动周期。
我从 Dennis Lehmann 获得了有关更改 i2cslave_defs.h 中的超时设置的建议 原始源代码
//*****
#define I2CSLAVE__TIMEOUT_ENABLE (真)
#define I2CSLAVE__REQ_TIMEOUT_CYCLES (66)
#define I2CSLAVE__TXFR_TIMEOUT_CYCLES (264)
//*****
然后我把它改为
//*****
#define I2CSLAVE__TIMEOUT_ENABLE (真)
#define I2CSLAVE__REQ_TIMEOUT_CYCLES (512)
#define I2CSLAVE__TXFR_TIMEOUT_CYCLES (512)
//*****
我重新编译了代码并刷写了电路板。
现在、我向电路板写入以下命令:
0x55 0xAA 0x09 0x04 0x97 0x01 0x00 0x00 0x00 0x9C 0x00
0x55 0xAA 0x09 0x04 0x99 0x00 0x00 0x00 0x00 0x9D 0x00
COMM_IRQ 变为低电平、USS 读取0x09 0x04 0x99 0x01 0x01 0x00 0x00 0x9F 0x00。 COMM_IRQ 再次变为低电平、并读取0x09 0x04 0xA0 0x01 0x00 0x00 0x00 0xA5 0x00。
当我使用 USS 时、电路板的响应如下。 IRQ 变为低电平(在其重新启动之前)、我读取 0x09 0x04 0xA0 0x01 0x00 0x00 0x00 0xA5 0x00。 然后 IRQ 再次变为低电平、并且我读取相同的响应 0x09 0x04 0xA0 0x01 0x00 0x00 0x00 0xA5 0x00。
"到底怎么回事?"
祝你一切顺利
OLE