在 MK26 MCU中,使用 I2C作为从机,设置 CLK时钟速率为 1MHz。I2C的SCL停止保持时间由主机控制。这里I2C被用作从器件。在手册没有解释I2C时钟速率设置与从机的CLK 停止保持低位时间有关。
在测试中,如果 sclStopHoldTime_ns 设置为 4000, CLK 实际通信的频率只有 250KHz (如果没有连接到 I2C从机端, I2C主机端发送的实际频率是 1MHz),并且CLK的高电平和低电平的占空比小于20%。
根据 MK26的参考RM手册文档,这可能与I2C的<57.5.1.8握手>和<57.5.1.9时钟拉伸>功能有关。修改sclStopHoldTime_ns的值可以更改I2C的最大CLK速率。
该参数对应于底层的 I2C驱动 I2Cx_F ,此寄存器的描述与 I2C的SCL保持低时间无关。如果将sclStopHoldTime_ns更改为500,最大速度可达1MHz,CLK占空比也接近50%。
作为I2C从机,要求CLK速度达到1MHz。是否有推荐的软件配置(MCU参数配置、端口上拉/漏极开路配置等)?
从SDK代码中可以看到,在设置sclStopHoldTime时会选择不同的MULT和ICR。sclStopHoldTime 也是在I2C的Slave从机配置结构中设置的。主机Master配置结构里面没有sclStopHoldTime_ns相关的设置。
不同的 ICR数值对应不同的 SCL 分频值。
最终,I2C 波特率受 MUL和 SCL 分频决定的。
针对不同的 I2C 速率,SCL停止保持时间可以参考如下的代码设置描述。
以上三个数据均在数据手册中可查到出处,如下所示。
MK26和 MK66F MCU 具有相同的 I2C外设,因此可以参考FRDM-K66F的SDK相关代码。
I2C中常用的上拉电阻为4.7K,速度越高,电阻可以适当降低,使用1.5K、1K或510Ω。
审核编辑:刘清
-
mcu
+关注
关注
146文章
17141浏览量
351097 -
寄存器
+关注
关注
31文章
5342浏览量
120297 -
ICR
+关注
关注
0文章
7浏览量
7790 -
I2C信号
+关注
关注
0文章
2浏览量
5956
原文标题:MK26 MCU I2C 从机模式的 1Mhz 配置
文章出处:【微信号:嵌入式 MCU,微信公众号:嵌入式 MCU】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论