在 MK26 MCU中,使用 I2C作為從機,設(shè)置 CLK時鐘速率為 1MHz。I2C的SCL停止保持時間由主機控制。這里I2C被用作從器件。在手冊沒有解釋I2C時鐘速率設(shè)置與從機的CLK 停止保持低位時間有關(guān)。
在測試中,如果 sclStopHoldTime_ns 設(shè)置為 4000, CLK 實際通信的頻率只有 250KHz (如果沒有連接到 I2C從機端, I2C主機端發(fā)送的實際頻率是 1MHz),并且CLK的高電平和低電平的占空比小于20%。
根據(jù) MK26的參考RM手冊文檔,這可能與I2C的<57.5.1.8握手>和<57.5.1.9時鐘拉伸>功能有關(guān)。修改sclStopHoldTime_ns的值可以更改I2C的最大CLK速率。
該參數(shù)對應(yīng)于底層的 I2C驅(qū)動 I2Cx_F ,此寄存器的描述與 I2C的SCL保持低時間無關(guān)。如果將sclStopHoldTime_ns更改為500,最大速度可達1MHz,CLK占空比也接近50%。
作為I2C從機,要求CLK速度達到1MHz。是否有推薦的軟件配置(MCU參數(shù)配置、端口上拉/漏極開路配置等)?
從SDK代碼中可以看到,在設(shè)置sclStopHoldTime時會選擇不同的MULT和ICR。sclStopHoldTime 也是在I2C的Slave從機配置結(jié)構(gòu)中設(shè)置的。主機Master配置結(jié)構(gòu)里面沒有sclStopHoldTime_ns相關(guān)的設(shè)置。
????
不同的 ICR數(shù)值對應(yīng)不同的 SCL 分頻值。
最終,I2C 波特率受 MUL和 SCL 分頻決定的。
針對不同的 I2C 速率,SCL停止保持時間可以參考如下的代碼設(shè)置描述。
以上三個數(shù)據(jù)均在數(shù)據(jù)手冊中可查到出處,如下所示。
MK26和 MK66F MCU 具有相同的 I2C外設(shè),因此可以參考FRDM-K66F的SDK相關(guān)代碼。
I2C中常用的上拉電阻為4.7K,速度越高,電阻可以適當降低,使用1.5K、1K或510Ω。
審核編輯:劉清
-
mcu
+關(guān)注
關(guān)注
146文章
17841瀏覽量
360463 -
寄存器
+關(guān)注
關(guān)注
31文章
5421瀏覽量
123350 -
ICR
+關(guān)注
關(guān)注
0文章
7瀏覽量
7886 -
I2C信號
+關(guān)注
關(guān)注
0文章
2瀏覽量
6089
原文標題:MK26 MCU I2C 從機模式的 1Mhz 配置
文章出處:【微信號:嵌入式 MCU,微信公眾號:嵌入式 MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
STM32 I2C從機中斷模式測試
MCU是否支持從機模式下的I2C線路?
mcu復(fù)位導(dǎo)致I2C異常

STM32作為I2C從機中斷接收和從模式中斷應(yīng)答數(shù)據(jù)總結(jié)

基于靈動微MM32SPIN27xx的I2C從機

I2C接口配置ES7243錄音芯片,MCU(STM32)收不到I2C ACK的問題

STM32F0 HAL庫 I2C 從機配置

AT32F435/437 I2C使用指南
AT32講堂041 | AT32F435/437 I2C使用指南

AT32講堂057 | 雅特力AT32F425 I2C使用指南

雅特力AT32F423 I2C使用指南

雅特力AT32F402/F405 I2C使用指南

評論