在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

i.MX RT1010的I2C Slave時鐘延展功能小記

jf_pJlTbmA9 ? 來源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2023-09-27 16:22 ? 次閱讀

最近客戶在使用i.MX RT1010的I2C作為從機設備與主機通訊,使用了時鐘延展的功能(clock stretching)。在開發(fā)過程中遇到了一些小煩惱和小細節(jié),在此呢,也寫下一篇文檔予以總結。

什么是時鐘延展

首先,簡單介紹一下什么是時鐘延展。時鐘延展是指從機通過將SCL拉低以暫停數據傳輸的一個過程,在暫停過程中,從機可以有更多的時間處理接收到的數據,或者準備即將發(fā)送的數據。在相關的處理和準備完成之后,將交出SCL的控制權,主機繼續(xù)控制SCL的節(jié)奏進行數據的收發(fā)。換句話說,時鐘延展是從機跟不上主機的速度,讓老司機等等它,啊不,是讓主機等等它的操作。

時鐘延展通常分為兩種,一種是字節(jié)級(byte)的時鐘延展,一種是比特級(bit)的時鐘延展。字節(jié)級的時鐘延展是按照字節(jié)為單位開展,每一個字節(jié)收發(fā)結束之后啟動。比特級則是每個數據bit都進行延展,強行讓master慢下來。

在查閱相關資料的過程中發(fā)現(xiàn),并不是所有的I2C從機設備都支持時鐘延展,例如I2C的傳感器,部分存儲設備;也并不是所有的主機設備也支持時鐘延展,例如使用IO口模擬實現(xiàn)的I2C或者是FPGA上實現(xiàn)的I2C。因此在使用之前,需要檢查器件自身是否支持時鐘延展。

四種時鐘延展功能

在我們i.MX RT1010上總共支持4種字節(jié)級的時鐘延展:

wKgaomUD8x2AckpuAAIHSQxPjXE815.png

下面我們將對這四種時鐘延展的功能進行簡要介紹,以下介紹均為從機視角。

延展功能1:收完地址等一等

在從機接收完主機發(fā)送的地址信息后,且AVF 置位,則此時從機獲得SCL的控制權,開始持續(xù)拉低SCL開啟時鐘延展。那么什么時候結束呢,從硬件狀態(tài)機的角度看,當AVF bit被清除,時鐘延展結束,主機獲得SCL的控制權。

舉個例子,用我們SDK工程在接收到地址信息后強行延時500us再去清除AVF bit, 看看波形是怎樣的:

wKgZomUD8x-AQPa7AAEBy7k4A2g628.png

從圖中可以看到,兩次時鐘間隔約491us,基本上與500us的預期相匹配。并不是完美的500us的原因是,延時函數沒有使用定時器精確延時。

延展功能2:發(fā)送之前等一等

在從機接收到主機的地址信息和讀指令后,TDF將會置位,則此時從機獲得SCL的控制權。同樣是在清除TDF bit之后,主機再次獲得SCL的控制權。在這個過程中,從機可以根據主機發(fā)送的信息,把要發(fā)送的數據準備好,再釋放SCL的控制權。同樣舉個例子,再清除TDF bit 之前等一等,這次等的長一點800us。

wKgaomUD8yGAA7uBAADgwDdllBY656.png

延展功能3:接收之前等一等

在從機接收到數據之后,RDF會置位,此時從機會獲得SCL的控制權。同樣是在清除TDF bit之后,主機再次獲得SCL的控制權。拉個波形看看,在清標志位前拉個1000us的延時,波形如下圖所示。

wKgZomUD8yKAIhxsAACR5KBp8ds478.png

延展功能4:手動回ACK

這里是指,當主機把數據(地址信息或者數據信息)發(fā)送給從機后,在傳送完第八個bit(或者說是第八個時鐘)之后,從機即獲得了SCL的控制權限,在此時需要手動向STAR寄存器中最后一位寫0或者1,以向主機反饋ACK 或者NACK。在寫0之前,我們增加一個500us的延時,地址信息的波形見下圖,可以看到第八個和第九個CLK時鐘的間隔被拉長。

wKgaomUD8ySAfplsAADdgFrtRnw389.png

從機接收數據的信息見下圖,同樣可以看到,第八個和第九個的時鐘被拉長了。

wKgaomUD8yaAPvw0AADg34dgIyw602.png

時鐘延展的時序要求

在使用時鐘延展的功能后,同樣不能忽略的一個要點是要滿足I2C的AC timing,即數據的建立時間和保持時間。對于不同的工作速度,I2C對于這兩個參數的時間要求也是不同的,下圖為I2C的規(guī)范上的截圖。

wKgaomUD8yiATM5AAAjuj8VjhYQ703.png

對于i.MX RT1010來說,我們在開啟時鐘延展功能后需要對下面的兩個參數進行設置,以滿足I2C的timing要求。

CLKHOLD: I2C的數據的建立時間,需要根據不同的通訊速度進行設置。

DATAVD: I2C的數據保持時間,通常來看保持為0即可。

wKgZomUD8yuAK2knAAXOX9cyj5g868.png

如果不能正確設置CLKHOLD的時間會怎樣呢?

造成時序混亂,當SCL的驅動能力較強,且SDA的負載較重的時候,甚至會引起SCL上升的比SDA速度快,那么想一下I2C的停止條件,當SCL處于高電平時,SDA拉高。那么就會讓總線停止傳輸,除此以外,可能還會有其他的未知問題發(fā)生。

其次,關于CLKHOLD時間的計算,目前的驅動程序是有些小問題的。因此建議徒手擼寄存器,自己把想要的數值填寫到CLKHOLD寄存器內。對于具體的時間,計算公式如下:

t =(CLKHOLD + 3) * Tclk

這里的Tclk是指I2C的functional clock的周期。因此,真正的建立時間,是CLKHOLD的數值和I2C 的輸入時鐘頻率共同作用的結果。

哦對了,如何使能時鐘延展功能?

如果你喜歡寄存器操作,那么可以在SCFGR1寄存器中的bit[3:0]直接開啟對應的功能:

wKgaomUD8yyAAVg_AAJe97hCAfI635.png

如果你習慣SDK操作,那么在這個結構體里把對應的功能寫true吧:

wKgZomUD8y6AG0UwAAS9mA8-w7U046.png

來源:恩智浦MCU加油站

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1641

    文章

    21910

    瀏覽量

    611651
  • 時鐘
    +關注

    關注

    11

    文章

    1855

    瀏覽量

    132633
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1512

    瀏覽量

    126418
  • SCL
    SCL
    +關注

    關注

    1

    文章

    240

    瀏覽量

    17398
收藏 人收藏

    評論

    相關推薦

    基于FPGA的I2C SLAVE模式總線的設計方案

    。經過實際應用,證實了本方案操作簡便,實用性強。##I2C SLAVE 控制器的接口部分主要包括,信號異步時鐘域的轉換。輸入濾波器,用來抑制毛刺。及SDA 線的雙向轉換。
    發(fā)表于 02-26 11:39 ?1.4w次閱讀

    i.MX RT1xxx 系列的時鐘系統(tǒng)以及相關功能引腳

    目前 i.MXRT1xxx 系列主要分為 i.MX RT10xx 和 i.MXRT11xx 兩大分支。這兩個分支的時鐘系統(tǒng)設計是有一些差異的
    發(fā)表于 07-08 17:01 ?879次閱讀

    i.MX RT1020到i.MX RT1010的遷移手冊

    i.MX RT1020到i.MX RT1010的遷移指南
    發(fā)表于 12-12 06:25

    時鐘延展導致 I2C 通信不可靠

    STM32時鐘延展導致 I2C 通信不可靠
    發(fā)表于 12-04 15:15 ?0次下載

    01:i.MX RT的市場應用和參考解決方案

    i.MX RT產品是今年市場上最受歡迎的跨界MCU產品。i.MX RT定位為一款MCU產品,它可以重復利用傳統(tǒng)的Arm MCU生態(tài)系統(tǒng)。除此之外,本次講座還將簡要介紹
    的頭像 發(fā)表于 01-21 07:13 ?3623次閱讀
    01:<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>的市場應用和參考解決方案

    恩智浦i.MX RT1170開創(chuàng)GHz MCU時代

    的運算能力和多媒體功能與易用性和實時處理相結合。i.MX RT1170雙核MCU集成主頻高達1 GHz的Arm Cortex -M7內核和400 MHz的Cortex-M4內核,同時提供先進的安全性。憑借
    的頭像 發(fā)表于 03-22 11:14 ?3650次閱讀

    恩智浦i.MX RT1170在將該系列帶上了更高的層面

    的運算能力和多媒體功能與易用性和實時處理相結合。i.MX RT1170雙核MCU集成主頻高達1 GHz的Arm Cortex -M7內核和400 MHz的Cortex-M4內核,同時提供先進的安全性。憑借
    的頭像 發(fā)表于 05-18 11:15 ?3965次閱讀

    i.MX RT開發(fā)筆記-08 | i.MX RT1062嵌套中斷向量控制器NVIC(按鍵中斷檢測)

    系列文章目錄i.MX RT開發(fā)筆記-01 | 初識 i.MX RT1062 跨界MCUi.MX RT
    發(fā)表于 12-01 13:51 ?2次下載
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>開發(fā)筆記-08 | <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1062嵌套中斷向量控制器NVIC(按鍵中斷檢測)

    RT-Thread & NXP 發(fā)布 i.MX RT 系列 BSP 新框架

    前言i.MX RT 是 NXP 推出的跨界處理器系列。該系列下又包括 i.MX RT1020、i.MX
    發(fā)表于 12-07 13:06 ?2次下載
    <b class='flag-5'>RT</b>-Thread & NXP 發(fā)布 <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b> 系列 BSP 新框架

    STM32F103硬件I2C Slave

    MCU:STM32F103IDE:STM32CubeIDEHAL庫硬件I2C當作Slave,模擬EEPROM行為測試工具:樹莓派為I2C主機,使用I2C-tools進行測試配置
    發(fā)表于 12-20 19:38 ?52次下載
    STM32F103硬件<b class='flag-5'>I2C</b> <b class='flag-5'>Slave</b>

    Gowin I2C Master/Slave用戶指南

    Gowin I2C Master 和 Slave 用戶指南主要包括功能簡介、信號定義、工 作原理、實例化等,旨在幫助用戶快速了解 Gowin I2C Master IP 和
    發(fā)表于 09-15 10:07 ?1次下載
    Gowin <b class='flag-5'>I2C</b> Master/<b class='flag-5'>Slave</b>用戶指南

    適用于i.MX RT500和i.MX RT600 MCU的Xtensa音頻框架介紹

    在眾多的恩智浦i.MX RT跨界處理器當中,您可能會發(fā)現(xiàn)有些系列除了Arm內核之外還結合了高性能的DSP,利用集成DSP的技術優(yōu)勢,可提供高性能音頻數字信號處理能力,并包含特定算法操作,可實現(xiàn)完全
    的頭像 發(fā)表于 11-10 09:39 ?3044次閱讀

    i.MX RT的FlexRAM配置問題

    i.MX RT的FlexRAM配置問題
    的頭像 發(fā)表于 10-24 15:46 ?990次閱讀
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>的FlexRAM配置問題

    i.MX RT中FlexSPI外設不常用的讀選通采樣時鐘

    i.MX RT中FlexSPI外設不常用的讀選通采樣時鐘
    的頭像 發(fā)表于 10-30 17:44 ?733次閱讀
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>中FlexSPI外設不常用的讀選通采樣<b class='flag-5'>時鐘</b>源

    恩智浦i.MX RT1060/1010上串行NOR Flash冗余程序啟動設計

    恩智浦i.MX RT1060/1010上串行NOR Flash冗余程序啟動設計
    的頭像 發(fā)表于 09-26 16:53 ?954次閱讀
    恩智浦<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1060/<b class='flag-5'>1010</b>上串行NOR Flash冗余程序啟動設計
    主站蜘蛛池模板: 欧美综合一区二区三区 | 天天色天天摸 | 特级黄一级播放 | 色婷婷久久综合中文久久蜜桃 | 国产美女精品视频免费观看 | 手机在线看片国产日韩生活片 | 天天操人人爱 | 男女无遮挡一进一出性视频 | 日本美女黄视频 | 狠狠狠色丁香婷婷综合久久五月 | 亚洲精品卡1卡二卡3卡四卡 | 欧美两性网 | 亚洲国产精品久久久久婷婷老年 | 亚洲亚洲人成网站在线观看 | 亚洲激情综合 | 天天干网址 | 欧美另类激情 | 日本a级三级三级三级久久 日本a级影院 | 五月婷婷在线视频观看 | 亚洲色图狠狠干 | 国内一区二区三区精品视频 | 末发育娇小性色xxxxx视频 | bt天堂在线www最新版资源网 | 久久久久久午夜精品 | 美女视频很黄很a免费国产 美女视频很黄很暴黄是免费的 | 成年人网站在线 | 女同久久| 亚洲国产成人久久三区 | 三级在线观看国产 | 天堂网中文在线 | 最新欧美精品一区二区三区 | 色老头网站久久网 | 日本全黄视频 | 国产呦在线观看视频 | 天堂网男人 | 人人插人人插 | 色天使在线观看 | 日本日本69xxxx | 欧美黄色精品 | 狠狠色噜噜综合社区 | 国产激情久久久久影院小草 |