国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

STM32 I2C基礎內容

strongerHuang ? 來源:strongerHuang ? 作者:strongerHuang ? 2021-03-09 11:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

I2C:全稱為Inter-Integrated Circuit(內部集成電路),是一種串行通訊總線,常用于嵌入式電子產品中。

I2C是飛利浦公司在1980年為了讓各種低速設備(飛利浦芯片)連接起來而研發的一種通信總線。目前,I2C依然是最常見的通信總線之一,現在絕大部分MCU都內部集成了I2C控制器,STM32也不例外,至少有一個I2C控制器,有的型號甚至多達6個。

1

STM32 I2C基礎內容

I2C總線協議有多個版本,有的STM32遵循的是第2版本,有的是第3版本。所以,不同型號的 STM32 中I2C 可能存在一些差異,但基本功能相似。

1. 主從模式特性

主模式特性:

時鐘生成

起始位和停止位生成

從模式特性:

編程 I2C地址檢測

雙尋址模式,可對 2 個從地址應答

停止位檢測

2. 通信速度標準速度:高達 100 kHz快速速度:高達 400 kHz超快速度:高達 1 MHz(第3版)

3.尋址模式

7 位尋址模式

10 位雙尋址模式

廣播呼叫地址

4.收發模式

從發送器

接收器

主發送器

主接收器

這些都是STM32 I2C 的基礎功能,更多內容請查閱芯片對應的參考手冊。

2

I2C 總線協議

I2C總線就兩根線:SCL時鐘信號,SDA數據信號。其中SCL由主機產生,SDA由主機或者從機產生。

I2C是同步串行通信,同一時間SDA只能由一個設備發送信號,也就是說它屬于半雙工通信。

I2C 總線協議可參考總線(SDA和SCL)的時序進行理解:

b14853f0-7c3a-11eb-8b86-12bb97331649.png

通常包含:起始位、數據/地址、ACK、結束位。

1. 開始和停止在時鐘線保持高的情況下,SDA數據線由高 -》 低:為總線開始條件;在時鐘線保持高的情況下,SDA數據線由低 -》 高:為總線結束條件;

2. 地址I2C地址分7位和10位。

7位地址:

b19ca4b4-7c3a-11eb-8b86-12bb97331649.png

10位地址:

b1c2306c-7c3a-11eb-8b86-12bb97331649.png

3. 應答(ACK)應答(ACK)和非應答(NACK)發生在每個字節之后,是由接收方向發送方發出確認信號,表明數據已成功接收,并且可以繼續發送下一字節數據。

b1eed072-7c3a-11eb-8b86-12bb97331649.jpg

I2C 總線協議更多內容可參看:https://zh.wikipedia.org/wiki/I2Chttps://www.nxp.com/docs/en/user-guide/UM10204.pdf

3

STM32 I2C常見問題

I2C 總線通信,通常不會像CAN、USB這類總線添加一些復雜的(軟件)通信協議。I2C 雖然硬件和協議簡單,但在實際應用中還是經常出現各種問題。下面就來分析一下常見的問題。

問題一:IO模式不對

有些工程師對用于I2C 總線的GPIO不了解,寫驅動代碼時把總線(SDA、SCL)配置成推挽輸出模式,導致應用上的異常。

I2C 總線是一種特殊的總線,因為多器件需共用總線,加上數據線需支持雙向通信。SDA要求開漏輸出模式。由于開漏無法直接輸出“高”時,需外加上拉電阻配合。

解決辦法:STM32的IO有8種應用模式,如果你通過軟件模擬I2C,并將SDA配置為開漏輸出模式,配合上拉電阻。這往往適用于主模式器件。如果使用硬件I2C,則需要配置成開漏復用功能。建議使用STM32CubeMX工具配置底層初始化代碼。

問題二:總線電壓不匹配

I2C 總線電壓通常為3.3V或5V。有的I2C C總線上掛的設備比較多,有可能存在特殊電壓,比如2.5V,或者3.3V不兼容5V,就容易引起信號辨識錯誤導致總線通信失敗的情況。

解決辦法:如果存在電壓不匹配的情況,需要從硬件方面來解決,比如:通過專業轉換模塊。

問題三:軟件檢測死機

I2C 總線一般通過ACK信號來判斷總線的情況,STM32實現I2C 收發、檢測等操作是由內部控制器自動完成。

然而由于一些外部因素,比如干擾信號、電壓不匹配等,容易引起總線上的信號不正常,從而導致檢測失敗,通信失敗。

解決辦法:解決這種因異常引起的死機,除了從硬件方面做調整外,也可以從軟件入手,常見的做法是添加超時處理機制,不要讓程序一直死等檢測應答信號。

比方當發送超時情形時,可以嘗試復位STM32 I2C外設或相關設備。

復盤一下▼I2C 基礎內容:主從模式特性、通信速度、尋址模式、收發模式;▼I2C 總線協議:起始位、數據/地址、ACK、結束位;▼I2C 常見問題:IO模式不對、總線電壓不匹配、軟件檢測死機

------------ END ------------

責任編輯:lq

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

    關注

    18

    文章

    6389

    瀏覽量

    140058
  • STM32
    +關注

    關注

    2309

    文章

    11162

    瀏覽量

    373477
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1556

    瀏覽量

    131245
  • 通信總線
    +關注

    關注

    0

    文章

    47

    瀏覽量

    10229

原文標題:STM32學習筆記 | I2C通信容易出錯的情況

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RK平臺I2C開發:從硬件原理到實戰排查

    在嵌入式開發中,I2C 總線是連接外設的 “橋梁”—— 小到傳感器、EEPROM,大到 LCD 驅動器、音頻芯片,都離不開它的控制。而瑞芯微(Rockchip)系列芯片作為主流嵌入式方案,其 I2C 控制器的開發是很多工程師的必備技能。
    的頭像 發表于 02-05 13:42 ?972次閱讀
    RK平臺<b class='flag-5'>I2C</b>開發:從硬件原理到實戰排查

    I2C 為什么只要兩根線就能搞定通信?

    到目前為止,我們已經討論了SPI通信和UART通信的基礎知識,現在讓我們討論本系列的最后一個協議,即集成電路間協議(I2C)。如果您曾經構建過使用OLED顯示器、氣壓傳感器或陀螺儀/加速度計模塊
    的頭像 發表于 01-04 09:14 ?1648次閱讀
    <b class='flag-5'>I2C</b> 為什么只要兩根線就能搞定通信?

    基于FPGA的I2C控制模塊設計

    I2C_WRITE_WDATA.v模塊實現I2C寫時序,I2C_Controller (I2C控制器)例化了I2C_WRITE_WDATA.
    的頭像 發表于 12-26 09:48 ?4985次閱讀
    基于FPGA的<b class='flag-5'>I2C</b>控制模塊設計

    AS32X601的I2C模塊操作EEPROM詳解

    國科安芯推出的AS32X601系列MCU芯片內置的I2C模塊提供了符合工業標準的兩線串行制接口,可用于MCU和外部I2C設備的通訊。I2C總線使用兩條串行線:串行數據線SDA和串行時鐘線SCL
    的頭像 發表于 12-21 21:39 ?986次閱讀
    AS32X601的<b class='flag-5'>I2C</b>模塊操作EEPROM詳解

    ISO164x熱插拔雙向I2C隔離器:特性、應用與設計要點

    景中的理想選擇。今天,我們就來深入探討一下這款隔離器的相關內容。 文件下載: iso1640.pdf 一、ISO164x的特性亮點 1. 可靠的隔離式雙向I2C通信 ISO164x支持可靠的隔離式雙向
    的頭像 發表于 12-17 14:15 ?625次閱讀

    I2C的狀態碼

    發送、主機接收、從機接收、從機發送或廣播接收模式,當狀態寄存器I2Cx_STAT的內容改變時,都會將 I2Cx_CR.SI 置位,且產生 I2C 中斷。
    發表于 12-08 08:04

    I2C死鎖的問題

    在實際使用過程中,I2C比較容易出現的一個問題就是死鎖 ,死鎖在I2C中主要表現為:I2C死鎖時表現為SCL為高,SDA一直為低。 在I2C主設備進行讀寫操作的過程中,主設備在開始信
    發表于 12-04 06:00

    深入剖析I2C協議

    I2C是由Philips開發的簡單的雙向兩線總線,在深入淺出理解SPI協議中,我們區分了單工,半雙工,全雙工協議數據流向的區別,根據特征,I2C協議屬于半雙工協議(即同一時刻,數據單向流動)。此外
    的頭像 發表于 08-21 15:10 ?3680次閱讀
    深入剖析<b class='flag-5'>I2C</b>協議

    STM32有哪些MCU能支持I2C HS模式和同時支持I3C 的嗎?

    如題,想請問下STM32有哪些產品,能支持I2C HS模式,速率3.4Mbit/s。同時又支持I3C的(SDR12.5M),現在有個外設 分別支持I2C HS slave,
    發表于 08-04 06:06

    第十八章 I2C通信測試

    本章介紹了I2C協議,其物理層用SDA和SCL雙線,支持多設備:協議層含起始/停止信號、應答機制等。還講解W55MH32的I2C外設及初始化,并進行了通信測試代碼的分析。
    的頭像 發表于 06-19 17:07 ?1314次閱讀
    第十八章 <b class='flag-5'>I2C</b>通信測試

    STM32H7CubeMX配置硬件I2C,讀寫失敗是什么問題呀?

    STM32H7CubeMX配置硬件I2C,讀寫失敗什么問題呀,同樣的操作F4和F1都能正常使用,應該不存在i2c地址錯誤,操作都是一樣的,但H7就是用不了。I2C_WaitOnFlag
    發表于 06-12 06:21

    簡單了解I2C接口

    在電子電路的復雜世界里,各種電路模塊設備需要相互通信才能協同工作 ,I2C接口就像是電路模塊設備間的溝通橋梁,今天就帶大家深入了解它。
    的頭像 發表于 05-08 14:15 ?2536次閱讀
    簡單了解<b class='flag-5'>I2C</b>接口

    是德DSOX4034A示波器I2C總線信號分析

    在現代電子設計與調試中,I2C(Inter-Integrated Circuit)總線作為一種廣泛應用的串行通信協議,因其簡單性、靈活性和低功耗特性,成為許多嵌入式系統和電子設備中不可或缺的通信方式
    的頭像 發表于 03-19 13:47 ?1231次閱讀
    是德DSOX4034A示波器<b class='flag-5'>I2C</b>總線信號分析

    STM32學習筆記_I2C詳解(可下載)

    I2C 是一種簡單的雙向二線制同步串行總線。它只需要兩根線即可在連接于總線 上的器件之間傳送信息I2C 總線能夠支持多個設備間的通訊。它包含一條雙向串行數據線 SDA,一條串行時鐘線 SCL。每個
    發表于 03-14 17:33 ?3次下載

    I2C總線復用

    帝晶智慧屏I2C總線復用
    的頭像 發表于 03-11 17:20 ?2096次閱讀