国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32之I2C總線知識和HAL庫函數(shù)

這篇具有很好參考價值的文章主要介紹了STM32之I2C總線知識和HAL庫函數(shù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、 I2C總線知識

  1. I2C總線物理拓?fù)浣Y(jié)構(gòu)
    hal_i2c_slavetxcpltcallback,stm32,嵌入式硬件,單片機
    I2C 總線在物理連接上非常簡單,分別由SDA(串行數(shù)據(jù)線)和SCL(串行時鐘線)及上拉電阻組成。通信原理是通過對SCL和SDA線高低電平時序的控制,來 產(chǎn)生I2C總線協(xié)議所需要的信號進(jìn)行數(shù)據(jù)的傳遞。在總線空閑狀態(tài)時,這兩根線一般被上面所接的上拉電阻拉高,保持著高電平。

  2. I2C總線特征
    I2C總線上的每一個設(shè)備都可以作為主設(shè)備或者從設(shè)備,而且每一個設(shè)備都會對應(yīng)一個唯一的地址(可以從I2C器件的數(shù)據(jù)手冊得知),主從設(shè)備之間就通過這 個地址來確定與哪個器件進(jìn)行通信,在通常的應(yīng)用中,我們把CPU帶I2C總線接口的模塊作為主設(shè)備,把掛接在總線上的其他設(shè)備都作為從設(shè)備。
    I2C總線上可掛接的設(shè)備數(shù)量受總線的最大電容400pF 限制,如果所掛接的是相同型號的器件,則還受器件地址位的限制。
    I2C總線數(shù)據(jù)傳輸速率在標(biāo)準(zhǔn)模式下可達(dá)100kbit/s,快速模式下可達(dá)400kbit/s,高速模式下可達(dá)3.4Mbit/s。一般通過I2C總線接口可編程時鐘來實現(xiàn)傳輸速率的調(diào)整,同時也跟所接的上拉電阻的阻值有關(guān)。
    I2C總線上的主設(shè)備與從設(shè)備之間以字節(jié)(8位)為單位進(jìn)行雙向的數(shù)據(jù)傳輸。

  3. I2C總線協(xié)議
    I2C協(xié)議規(guī)定,總線上數(shù)據(jù)的傳輸必須以一個起始信號作為開始條件,以一個結(jié)束信號作為傳輸?shù)耐V箺l件。起始和結(jié)束信號總是由主設(shè)備產(chǎn)生??偩€在空閑狀態(tài) 時,SCL和SDA都保持著高電平,當(dāng)SCL為高電平而SDA由高到低的跳變,表示產(chǎn)生一個起始條件;當(dāng)SCL為高而SDA由低到高的跳變,表示產(chǎn)生一個 停止條件。在起始條件產(chǎn)生后,總線處于忙狀態(tài),由本次數(shù)據(jù)傳輸?shù)闹鲝脑O(shè)備獨占,其他I2C器件無法訪問總線;而在停止條件產(chǎn)生后,本次數(shù)據(jù)傳輸?shù)闹鲝脑O(shè)備 將釋放總線,總線再次處于空閑狀態(tài)。如圖所示:
    hal_i2c_slavetxcpltcallback,stm32,嵌入式硬件,單片機
    在了解起始條件和停止條件后,我們再來看看在這個過程中數(shù)據(jù)的傳輸是如何進(jìn)行的。前面我們已經(jīng)提到過,數(shù)據(jù)傳輸以字節(jié)為單位。主設(shè)備在SCL線上產(chǎn)生每個 時鐘脈沖的過程中將在SDA線上傳輸一個數(shù)據(jù)位,當(dāng)一個字節(jié)按數(shù)據(jù)位從高位到低位的順序傳輸完后,緊接著從設(shè)備將拉低SDA線,回傳給主設(shè)備一個應(yīng)答位, 此時才認(rèn)為一個字節(jié)真正的被傳輸完成。當(dāng)然,并不是所有的字節(jié)傳輸都必須有一個應(yīng)答位,比如:當(dāng)從設(shè)備不能再接收主設(shè)備發(fā)送的數(shù)據(jù)時,從設(shè)備將回傳一個否 定應(yīng)答位。數(shù)據(jù)傳輸?shù)倪^程如圖所示:
    hal_i2c_slavetxcpltcallback,stm32,嵌入式硬件,單片機
    在前面我們還提到過,I2C總線上的每一個設(shè)備都對應(yīng)一個唯一的地址,主從設(shè)備之間的數(shù)據(jù)傳輸是建立在地址的基礎(chǔ)上,也就是說,主設(shè)備在傳輸有效數(shù)據(jù)之前 要先指定從設(shè)備的地址,地址指定的過程和上面數(shù)據(jù)傳輸?shù)倪^程一樣,只不過大多數(shù)從設(shè)備的地址是7位的,然后協(xié)議規(guī)定再給地址添加一個最低位用來表示接下來 數(shù)據(jù)傳輸?shù)姆较颍?表示主設(shè)備向從設(shè)備寫數(shù)據(jù),1表示主設(shè)備向從設(shè)備讀數(shù)據(jù)。如圖所示:
    hal_i2c_slavetxcpltcallback,stm32,嵌入式硬件,單片機

  4. I2C總線操作
    對I2C總線的操作實際就是主從設(shè)備之間的讀寫操作。大致可分為以下三種操作情況:
    第一,主設(shè)備往從設(shè)備中寫數(shù)據(jù)。數(shù)據(jù)傳輸格式如下:
    hal_i2c_slavetxcpltcallback,stm32,嵌入式硬件,單片機
    第二,主設(shè)備從從設(shè)備中讀數(shù)據(jù)。數(shù)據(jù)傳輸格式如下:
    hal_i2c_slavetxcpltcallback,stm32,嵌入式硬件,單片機
    第三,主設(shè)備往從設(shè)備中寫數(shù)據(jù),然后重啟起始條件,緊接著從從設(shè)備中讀取數(shù)據(jù);或者是主設(shè)備從從設(shè)備中讀數(shù)據(jù),然后重啟起始條件,緊接著主設(shè)備往從設(shè)備中寫數(shù)據(jù)。數(shù)據(jù)傳輸格式如下:
    hal_i2c_slavetxcpltcallback,stm32,嵌入式硬件,單片機
    第三種操作在單個主設(shè)備系統(tǒng)中,重復(fù)的開啟起始條件機制要比用STOP終止傳輸后又再次開啟總線更有效率。

二、I2C的相關(guān)函數(shù)
IO operation functions
This subsection provides a set of functions allowing to manage the I2C data transfers.

  1. There are two modes of transfer:
    Blocking mode/阻塞模式 : The communication is performed in the polling mode(輪詢方式). The status of all data processing is returned by the same function after finishing transfer.
    No-Blocking mode : The communication is performed using Interrupts or DMA.
    These functions return the status of the transfer startup. The end of the data processing will be indicated through the dedicated I2C IRQ when using Interrupt mode or the DMA IRQ when using DMA mode.
  2. Blocking mode functions are :
    HAL_I2C_Master_Transmit()
    HAL_I2C_Master_Receive()
    HAL_I2C_Slave_Transmit()
    HAL_I2C_Slave_Receive()
    HAL_I2C_Mem_Write()
    HAL_I2C_Mem_Read()
    HAL_I2C_IsDeviceReady()
  3. No-Blocking mode functions with Interrupt are :
    HAL_I2C_Master_Transmit_IT()
    HAL_I2C_Master_Receive_IT()
    HAL_I2C_Slave_Transmit_IT()
    HAL_I2C_Slave_Receive_IT()
    HAL_I2C_Mem_Write_IT()
    HAL_I2C_Mem_Read_IT()
  4. No-Blocking mode functions with DMA are :
    HAL_I2C_Master_Transmit_DMA()
    HAL_I2C_Master_Receive_DMA()
    HAL_I2C_Slave_Transmit_DMA()
    HAL_I2C_Slave_Receive_DMA()
    HAL_I2C_Mem_Write_DMA()
    HAL_I2C_Mem_Read_DMA()
  5. A set of Transfer Complete Callbacks are provided in non Blocking mode:
    HAL_I2C_MemTxCpltCallback()
    HAL_I2C_MemRxCpltCallback()
    HAL_I2C_MasterTxCpltCallback()
    HAL_I2C_MasterRxCpltCallback()
    HAL_I2C_SlaveTxCpltCallback()
    HAL_I2C_SlaveRxCpltCallback()
    HAL_I2C_ErrorCallback()

三、8個常用HAL庫函數(shù)
hal_i2c_slavetxcpltcallback,stm32,嵌入式硬件,單片機
hal_i2c_slavetxcpltcallback,stm32,嵌入式硬件,單片機
hal_i2c_slavetxcpltcallback,stm32,嵌入式硬件,單片機
hal_i2c_slavetxcpltcallback,stm32,嵌入式硬件,單片機
hal_i2c_slavetxcpltcallback,stm32,嵌入式硬件,單片機
hal_i2c_slavetxcpltcallback,stm32,嵌入式硬件,單片機
hal_i2c_slavetxcpltcallback,stm32,嵌入式硬件,單片機
hal_i2c_slavetxcpltcallback,stm32,嵌入式硬件,單片機文章來源地址http://www.zghlxwxcb.cn/news/detail-832473.html

到了這里,關(guān)于STM32之I2C總線知識和HAL庫函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • STM32基于CubeMX與HAL庫的I2C應(yīng)用

    STM32基于CubeMX與HAL庫的I2C應(yīng)用

    1.1 物理層 ????????I2C協(xié)議和摩托羅拉公司的SPI協(xié)議一樣,是一種通訊協(xié)議。串行外圍設(shè)備接口,是一種高速全雙工的通信總線,是由 Phiilps 公司開發(fā)的。由于它引腳少,硬件實現(xiàn)簡單,可擴展性強,不需要 USART、CAN 等通訊協(xié)議的外部收發(fā)設(shè)備,現(xiàn)在被廣泛地使用在系統(tǒng)內(nèi)

    2024年02月21日
    瀏覽(33)
  • STM32  HAL庫硬I2C的TOF050C模塊

    STM32 HAL庫硬I2C的TOF050C模塊

    最近在倒騰畢業(yè)設(shè)計,需要用到TOF050C,但是現(xiàn)有的案例都是軟IIC,并且還是基于STM32F103的,筆者用的STM32F767,沒有GPIO-CRH寄存器。問題來了,如果我每次都要去看寄存器手冊屬實費時間,這不干脆直接用硬IIC? 于是乎,打開了TOF050C手冊,硬啃! 這手冊好在它有工作流程圖,

    2024年02月14日
    瀏覽(23)
  • STM32設(shè)置為I2C從機模式(HAL庫版本)

    STM32設(shè)置為I2C從機模式(HAL庫版本)

    我之前出過一篇關(guān)于STM32設(shè)置為I2C從機的博客,現(xiàn)在應(yīng)粉絲要求,出一篇HAL庫版本的I2C從機編程。 基于官方庫版本的可以看下我之前發(fā)的文章:STM32設(shè)置為I2C從機模式 測試芯片:STM32F103RCT6 測試方法:用一個USB轉(zhuǎn)I2C的工具接到STM32的I2C引腳上,通過上位機工具進(jìn)行讀寫操作。如

    2024年02月12日
    瀏覽(21)
  • 【STM32CubeMX+HAL庫】I2C詳解+讀寫EEPROM

    【STM32CubeMX+HAL庫】I2C詳解+讀寫EEPROM

    在之前的標(biāo)準(zhǔn)庫中,STM32的硬件IIC非常復(fù)雜,更重要的是它并不穩(wěn)定,所以都不推薦使用。但是在我們的HAL庫中,對硬件IIC做了全新的優(yōu)化,使得之前軟件IIC幾百行代碼,在HAL庫中,只需要寥寥幾行就可以完成?那么這篇文章將帶你去感受下它的優(yōu)異之處。 通過本篇博客您將

    2024年02月03日
    瀏覽(32)
  • Clion開發(fā)STM32之HAL庫I2C封裝(基礎(chǔ)庫)

    引用參考: Clion開發(fā)STM32之HAL庫GPIO宏定義封裝(最新版)

    2024年02月13日
    瀏覽(52)
  • 01_STM32軟件+硬件I2C讀取MPU6050(HAL庫)

    01_STM32軟件+硬件I2C讀取MPU6050(HAL庫)

    目錄 1、I2C簡介 2、I2C時序單元 2.1 起始條件 2.2 終止條件 2.3 發(fā)送一個字節(jié) 2.4 接收一個字節(jié) 2.5 發(fā)送應(yīng)答 2.6 接收應(yīng)答 3、I2C完整時序 3.1 指定地址寫一個字節(jié) 3.2 當(dāng)前地址讀一個字節(jié) 3.2?指定地址讀一個字節(jié) 4、簡單軟件I2C代碼(HAL) 4.1 軟件I2C 4.2 軟件I2C讀MPU6050寄存器 5、ST

    2024年04月17日
    瀏覽(29)
  • 【STM32】I2C練習(xí),HAL庫讀取MPU6050角度陀螺儀

    【STM32】I2C練習(xí),HAL庫讀取MPU6050角度陀螺儀

    MPU-6000(6050)為全球首例整合性6軸運動處理組件,相較于多組件方案,免除了組合陀螺儀與加速器時間軸之差的問題,減少了大量的封裝空間。當(dāng)連接到三軸磁強計時,MPU-60X0提供完整的9軸運動融合輸出到其主I2C或SPI端口(SPI僅在MPU-6000上可用)。 寄存器地址 寄存器內(nèi)容 0X3B

    2024年02月16日
    瀏覽(28)
  • 【STM32】AT24C256硬件I2C讀寫,基于HAL庫

    【STM32】AT24C256硬件I2C讀寫,基于HAL庫

    目錄 一、簡單介紹 二、配置工程 打開CubeMX,配置時鐘,調(diào)試接口,工程名,目錄等 配置iic 配置串口用于顯示信息 三、硬件連接 四、代碼編寫 一、隨機寫入一個字節(jié) 測試代碼 波形如下 代碼編寫 二、連續(xù)寫入 代碼如下 三、隨機讀取 測試代碼 波形如下 代碼編寫 四、連續(xù)

    2024年02月03日
    瀏覽(41)
  • HAL STM32 HW I2C DMA + SSD1306/SH1106驅(qū)動示例

    HAL STM32 HW I2C DMA + SSD1306/SH1106驅(qū)動示例

    ??硬件I2C DMA驅(qū)動參考: https://blog.csdn.net/weixin_45065888/article/details/118225993 ??本工程基于 STM32F103VCT6 ,驅(qū)動程序獨立,可以移植到任意STM32型號上使用。 ??字體大小說明 ??該驅(qū)動程序ASCII字符集類型大小包含:6X8、8X16,12X6 三種。其中6X8和8X16共用一個API函數(shù)調(diào)用,形參不同

    2024年02月22日
    瀏覽(37)
  • STM32模擬I2C協(xié)議獲取HMC5883L電子羅盤磁角度數(shù)據(jù) (HAL)

    STM32模擬I2C協(xié)議獲取HMC5883L電子羅盤磁角度數(shù)據(jù) (HAL)

    HMC5883L 傳感器采用霍尼韋爾各向異性磁阻(AMR)技術(shù),應(yīng)用于羅盤和三軸磁場角度檢測領(lǐng)域,常用于水平物體轉(zhuǎn)動的角度識別。HMC5883L 采用I2C總線接口,2.16~3.6V供電范圍,帶有校準(zhǔn)測試功能。 HMC5883L的硬件連接有5個管腳,除了VCC和GND,以及I2C的SCK和SDA,還有一根INT中斷線,用于

    2024年02月13日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包