STM32的I2C特性及架構


   

     軟件模擬協議:使用CPU直接控制通訊引腳(GPIO)的電平,產生出符合通訊協議標准的邏輯。

     硬件實現協議:由STM32的I2C片上外設專門負責實現I2C通訊協議,只要配置好該外設,它就會自動根據協議要求產生通訊信號,收發數據並緩存起來,CPU只要檢測該外設的狀態和訪問數據寄存器,就能完成數據收發。這種由硬件外設處理I2C協議的方式減輕了CPU的工作,且使軟件設計更加簡單。

      STM32的I2C外設可用作通訊的主機及從機,支持100Kbit/s和400Kbit/s的速率,支持7位、10位設備地址,支持DMA數據傳輸,並具有數據校驗功能。

STM32框架結構

1

1.通訊引腳

     STM32芯片有多個I2C外設,它們的I2C通訊信號引出到不同的GPIO引腳上,使用時必須配置到這些指定的引腳,以《STM32F10x規格書》為准。

2

2.時鍾控制邏輯

     SCL線的時鍾信號,由I 2C接口根據時鍾控制寄存器(CCR)控制,控制的參數主要為時鍾頻率。

           • 可選擇I2C通訊的“標准/快速”模式,這兩個模式分別I2C對應 100/400Kbit/s的通訊速率。

           • 在快速模式下可選擇SCL時鍾的占空比,可選Tlow/Thigh=2或 Tlow/Thigh=16/9模式。

           • CCR寄存器中12位的配置因子CCR,它與I2C外設的輸入時鍾源共同作用,產生SCL時鍾。STM32的I2C外設輸入時鍾源為PCLK1。

     計算時鍾頻率:

           標准模式: Thigh=CCR*TPCKL1 Tlow = CCR*TPCLK1

           快速模式中Tlow/Thigh=2時: Thigh = CCR*TPCKL1 Tlow = 2*CCR*TPCKL1

            快速模式中Tlow/Thigh=16/9時: Thigh = 9*CCR*TPCKL1 Tlow = 16*CCR*TPCKL1

     例如,我們的PCLK1=36MHz,想要配置400Kbit/s的速率,計算方式如下:

           PCLK時鍾周期: TPCLK1 = 1/36000000

          目標SCL時鍾周期: TSCL = 1/400000

           SCL時鍾周期內的高電平時間: THIGH = TSCL/3

           SCL時鍾周期內的低電平時間: TLOW = 2*TSCL/3

           計算CCR的值: CCR = THIGH/TPCLK1 = 30

     計算出來的CCR值寫入到寄存器即可。

3.數據控制邏輯

     I2C的SDA信號主要連接到數據移位寄存器上,數據移位寄存器的數據來源及目標是數據寄存器(DR)、地址寄存器(OAR)、PEC寄存器以及SDA數據線。

      • 當向外發送數據的時候,數據移位寄存器以“數據寄存器”為數據源,把數據一位一位地通過SDA信號線發送出去;

      • 當從外部接收數據的時候,數據移位寄存器把SDA信號線采樣到的數據一位一位地存儲到“數據寄存器”中。

4.整體控制邏輯

     整體控制邏輯負責協調整個I2C外設,控制邏輯的工作模式根據我們配置的“控制寄存器(CR1/CR2)”的參數而改變。

     在外設工作時,控制邏輯會根據外設的工作狀態修改“狀態寄存器(SR1 和SR2)”,只要讀取這些寄存器相關的寄存器位,就可以了解I2C的工作狀態。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM