2162016_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2162016_zh-CN

2162016_zh-CN

S32K344 I2C 发送地址失败---25/9/2

现在我使用 S32K3 小型 EVB-T172 板和 I2C 作为主机。我想发送一个 50 的地址信号,但通过逻辑分析仪,我发现发送的信号是 0。 谁能帮我分析一下大概的问题?

Re: S32K344 I2C send address fail--25/9/2

你好@haolin

你能否分享一下你是如何配置从属设备的?另外,您使用的是热电阻吗?如果是,我建议查看 RTD 软件包中提供的示例代码,以确保没有缺失的配置。

Re: S32K344 I2C send address fail--25/9/2

我可以看到 I2C1 发送应答信号,但 SSR->RDF 位仍未设置,不知道为什么?

Re: S32K344 I2C send address fail--25/9/2

你好@VaneB,感谢您的回复。现在我可以从机器上接收地址了。我目前使用两个硬件 I2C 进行通信,I2C0 作为主机负责发送,I2C1 作为从机负责接收。现在,I2C1 可以接收 I2C0 发送的地址信号,但 I2C1 无法接收 I2C0 之后发送的数据。我认为逻辑分析器可以捕获 I2C0 发出的信号。这里有什么配置需要注意的吗?

Re: S32K344 I2C send address fail--25/9/2

你好@haolin

通过 MTDR 寄存器发送命令和数据的典型格式是

LPI2Cn->MTDR = (CMD << 8) | DATA;

根据您提供的信息,您打算传输一个带有地址的 START 条件。在这种情况下,CMD = 0x4,DATA = 0x20。但是,需要注意的是,DATA 是一个 7 位地址,读/写 (R/W) 位是最低有效位 (LSB)。格式应为

LPI2Cn->MTDR = (CMD << 8) | ((address << 1) | 0); // For write operation
LPI2Cn->MTDR = (CMD << 8) | ((address << 1) | 1); // For read operation

请确保正确移位地址,并根据预期操作正确设置 R/W 位。


BR、VaneB

Re: S32K344 I2C send address fail--25/9/2

我写入 MTDR 注册表时,cmd 为 0x4,数据为 0x20,但我也发现信号地址为 0。

Tags (1)
No ratings
Version history
Last update:
‎11-20-2025 01:48 PM
Updated by: