2384618_zh-CN

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2384618_zh-CN

2384618_zh-CN

RT1064 I2C 通信异常,频率为 400kHz

RT1064 设备的 I2C2 接口连接到模块 A。在 400kHz 频率下出现通信异常,但在 100kHz 频率下工作正常。


1. 将同一系列中不同型号的模块 B 以 400kHz 的频率连接没有问题。
2. 从波形上看,这相当于主机时钟在连接到模块 A 后被拉伸然后恢复时发生的异常情况。
PS:将该设备的 I2C 驱动程序移植到另一台 1064 设备上,测试模块 A,在 400k 功耗下未发现问题。
原因可能是什么?

图 1 模块 A 逻辑分析仪在 400kHz 下的异常波形

foreverwlh2025_0-1782181859478.png

图 2:模块 A 在 100kHz 下的逻辑分析仪波形

foreverwlh2025_1-1782181977222.png

图3:模块B在400kHz时的波形

foreverwlh2025_2-1782182029028.png


i.MX RT106xRe: RT1064 I2C communication abnormality at 400kHz

你好@foreverwlh2025

感谢您的进一步说明——这是一个非常重要的发现。
 

根据您的观察,该问题似乎更有可能是由于两级 ADUM1251 隔离链路导致的 400 kHz I2C 时序裕量不足,而不是模块 A 本身的异常。

即使上升时间在规格范围内,在 RT1064 上,我们仍然建议检查 LPI2C 主侧 400 kHz 配置,特别是 MCFGR2[FILTSCL/FILTSDA] 和 MCCR0/MCCR1,因为 RT1064 上的主同步延迟不仅受上升时间的影响,还受数字滤波器和定时参数设置的影响。

我们建议您阅读项目中实际使用的配置,并将其与 RT1064 参考手册第 47 章中的表 47-5“LPI2C 示例时序配置”进行比较。

请特别检查以下设置是否与您所选时钟条件的示例值相符:

  • I2C模块时钟源
  • 目标波特率:400Kbps
  • 预分频
  • FILTSCL/FILTSDA
  • SETHOLD
  • CLKLO
  • CLKHI
  • DATAVD

希望对你有帮助

顺祝商祺!

5月

Re: RT1064 I2C communication abnormality at 400kHz


补充信息:昨天在定位方面取得了一些进展:
我们的硬件扩容计划如下:
主板:RT1064--- ADUM1251 3.3V 至 5 V
子板:ADUM1251-模块A 5V转3.3V
经验证,在硬件链路的两层中添加 ADUM1251 后,模块 A 的通信出现异常。但移除 ADUM1251 后,通信在 400k 处恢复正常。造成这种情况的原因可能是什么?
PS:我们的硬件工程师认为 ADUM1251 只会增加通信延迟,不会产生其他影响。

Re: RT1064 I2C communication abnormality at 400kHz你好,@mayliu1
我们的产品即将发布,我们已经调查这个问题好几天了。如果您能尽快回复,我们将不胜感激!
Re: RT1064 I2C communication abnormality at 400kHz

HI

补充信息
1.我们的两位硬件工程师使用示波器检查了故障波形,上升时间符合要求,在 100ns 以上。
2. 我将 I2C 初始化和读写功能驱动程序移植到另一种 RT1064 设备,并测试了模块 A,没有发现任何问题。
下图显示了另一个设备模块 A 的测试逻辑分析仪的波形。

foreverwlh2025_0-1782194338022.png


怀疑:
1.如果时钟在拉伸后恢复异常,还有哪些其他原因可能导致这种情况?
2. 是否有专门的功能来设置上次回复中提到的 MCFGR2 等设置?我没有看到在 I2C 初始化过程中需要设置任何接口。
----如果上升时间满足要求,我们是否就不需要考虑这些寄存器设置了?

Re: RT1064 I2C communication abnormality at 400kHz

@foreverwlh2025

非常感谢您对我们产品的关注以及对我们社区的使用。

我认为这很可能不是 A 模块的问题,而是该特定 RT1064 LPI2C2 总线上的 400 kHz 时序裕量问题。

在 RT1064 上,LPI2C 时序受总线上升时间、总线负载、上拉电阻和毛刺滤波器延迟的影响。

RT1064RM 参考手册指出,上升时间越大,同步延迟就越高。(参见第 47.3.1.4 章)时序参数)

主故障滤波器 MCFGR2[FILTSCL/FILTSDA] 必须设置,使其延迟保持在最小 SCL 低/高周期以下,RT1064 在 MCCR0/MCCR1 中提供了 400 kbps 定时设置的示例。请查看表 47-5。LPI2C 示例时序配置

mayliu1_0-1782186916949.png

因此,如果模块 A 使总线边沿稍微变慢或改变有效负载,则总线可能在 400 kHz 时发生故障,但在 100 kHz 时仍然可以工作。


希望对你有帮助

顺祝商祺!

5月

Re: RT1064 I2C communication abnormality at 400kHz

RT1064 参考手册中没有列出 400 kbps 的 10 MHz LPI2C 功能时钟。
虽然可以使用此时钟生成 400 kbps 波特率,但应根据 I2C 规范仔细验证自动生成的定时参数,特别是 tLOW、tHIGH、建立/保持定时和数据有效定时。

为降低设计风险,建议使用经过验证的时钟源,例如 48 MHz,如参考手册所示。

Re: RT1064 I2C communication abnormality at 400kHz

以下是打印配置。可能需要调整哪个参数?
PS:显然是由于自动接口分配造成的


foreverwlh2025_0-1782704741259.png


Re: RT1064 I2C communication abnormality at 400kHz

你好@foreverwlh2025

您可以尝试直接设置寄存器。
例如,当使用 60 MHz I2C 时钟时,可以采用以下配置。

mayliu1_1-1782813580334.png

希望对你有帮助

顺祝商祺!

5月

Re: RT1064 I2C communication abnormality at 400kHz

当前的 I2C 时钟是基于 SDK2_13_0-EVK-MIMXRT1064 板 \ boards \ evkmimxrt1064 \ river_deamples \ lpi2c 目录中的示例配置进行配置的。
#define LPI2C_CLOCK_SELECT (0U)
#define LPI2C_CLOCK_DIVIDER (5U)
CLOCK_SetMux(kCLOCK_Lpi2cMux, LPI2C_CLOCK_SELECT);
CLOCK_SetDiv(kCLOCK_Lpi2cDiv, LPI2C_CLOCK_DIVIDER);
我该如何修改才能获得精确的 8MHz 或 48MHz 频率?(时钟树似乎看不见)

Re: RT1064 I2C communication abnormality at 400kHz

我尝试将频率修改为 60MHz 和 8MHz,但仍然无效。下图中的红色方框显示的是修改后打印的值,这些值与手册中的值不同。

foreverwlh2025_0-1782813239395.png


Re: RT1064 I2C communication abnormality at 400kHz

你好@foreverwlh2025

配置 I2C 时钟有多种方法。

建议您尝试 8 MHz 和 60 MHz,因为这两个时钟设置相对容易实现。

我正在使用 SDK 演示版:
"evkmimxrt1064_lpi2c_edma_b2b_transfer_master"

方法一:将 LPI2C 时钟源配置为 60 MHz

只需将时钟分频器设置为 0 即可。


mayliu1_3-1782806044116.png

方法二:将 LPI2C 时钟源配置为 8 MHz

使用 MCUXpresso IDE 时钟工具并按如下所示进行配置。选择 OSC_CLK 作为时钟源,并将分频器设置为 3,这将为 LPI2C (I2C) 模块生成 8 MHz 时钟。


mayliu1_0-1782804733641.png

mayliu1_4-1782806209573.png

希望对你有帮助

顺祝商祺!

5月

Re: RT1064 I2C communication abnormality at 400kHz

如图所示,我尝试修改寄存器设置以匹配参数,但在 60MHz 下性能没有提升;即使是性能良好的模块在 8MHz 下也无法正常工作。

foreverwlh2025_0-1782882582056.png


Re: RT1064 I2C communication abnormality at 400kHz原因已查明,出现问题的模块将在 400k 时出现时钟拉伸现象。
但是我们使用的隔离器芯片不支持 SCL 双向。更换隔离芯片后,
测试结果正常;此订单可以结案。
标记 (1)
无评分
版本历史
最后更新:
2 周之前
更新人: