主题中讨论的其他器件:TCA6408A
使用 TCA6408A 时、我将尝试执行 I2C 读取、并且 EUSCI_B 外设的运行状态似乎很糟糕、如此处所报告的那样:
e2e.ti.com/.../544429 并标记为已解决(但海报声称解决方案不足、我的结尾似乎不足
在执行一系列写入来配置 I2C 外设之后、我尝试执行如下所示的读取操作:
使用以下代码:
I2C_setMode (EUSCI_B0_BASE、EUSCI_B_I2C_Transmit 模式);
I2C_masterSendMultiByteStart (EUSCI_B0_BASE、0x00);
I2C_setMode (EUSCI_B0_BASE、EUSCI_B_I2C_Receive_mode);
buttonState = I2C_masterReceiveSingleByte (EUSCI_B0_BASE);
在总线上、我可以观察到:0x42、0xFF、0x43、0x7F、因此我担心、除非插入延迟、否则它无法正确传输寄存器地址。
I2C_setMode (EUSCI_B0_BASE、EUSCI_B_I2C_Transmit 模式);
I2C_masterSendMultiByteStart (EUSCI_B0_BASE、INPUTMANAGERINPUTPORTREG);
for (volatile unsigned long i = 500;i;i-){}
I2C_setMode (EUSCI_B0_BASE、EUSCI_B_I2C_Receive_mode);
buttonState = I2C_masterReceiveSingleByte (EUSCI_B0_BASE);
我打算清理该延迟、并在将来生成某个中断驱动的内容。 但现在我可以让它发送具有上述代码的寄存器地址:0x42、0x00、0x43、0xDF、0xDF
因此、在暂停并完成传输后、我发现 I2C_ReceivmasterSingleByte 实际上不发送 NACK 或 STOP。 为什么它接收的内容远不止一个字节?
为什么 在 I2C_masterReceiveSingleByte 之后它会使总线处于繁忙状态?
是否有一个使用此驱动程序进行 I2C 读取的良好示例?
谢谢
