色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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 總線通信,通常不會像CANUSB這類總線添加一些復雜的(軟件)通信協議。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

    文章

    6034

    瀏覽量

    136018
  • STM32
    +關注

    關注

    2270

    文章

    10901

    瀏覽量

    356193
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1488

    瀏覽量

    123830
  • 通信總線
    +關注

    關注

    0

    文章

    44

    瀏覽量

    9855

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

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

收藏 人收藏

    評論

    相關推薦

    I2C總線上拉電阻阻值如何確定?

    導讀I2C總線在產品設計中被廣泛應用,盡管其結構簡單,但經常發生上拉電阻設計不合理的問題。本文將對I2C上拉電阻的選擇進行簡要分析。一根信號線上,通過電阻連接一個固定的高電平VCC,信號線初始、空閑
    的頭像 發表于 12-27 11:34 ?668次閱讀
    <b class='flag-5'>I2C</b>總線上拉電阻阻值如何確定?

    RISC V的I2C操作

    _0_io_scl_write(system_i2c_0_io_scl_write),.system_i2c_0_io_scl_read(system_i2c_0_io_scl_read),WriteEnable信號的處理
    的頭像 發表于 11-01 11:06 ?220次閱讀

    I2C協議的基礎知識

    本文從I2C協議的概述開始,描述協議的歷史、不同速度模式、物理層和數據幀結構,最后介紹I2C混合電壓系統中電平兼容性以及上拉電阻大小計算。
    的頭像 發表于 10-22 15:51 ?516次閱讀
    <b class='flag-5'>I2C</b>協議的基礎知識

    使用USCI I2C主站

    電子發燒友網站提供《使用USCI I2C主站.pdf》資料免費下載
    發表于 10-21 09:30 ?0次下載
    使用USCI <b class='flag-5'>I2C</b>主站

    I2C噪聲毛刺濾波

    電子發燒友網站提供《I2C噪聲毛刺濾波.pdf》資料免費下載
    發表于 10-08 14:39 ?5次下載
    <b class='flag-5'>I2C</b>噪聲毛刺濾波

    了解I2C總線

    電子發燒友網站提供《了解I2C總線.pdf》資料免費下載
    發表于 10-08 11:13 ?2次下載
    了解<b class='flag-5'>I2C</b>總線

    I2C基本指南

    電子發燒友網站提供《I2C基本指南.pdf》資料免費下載
    發表于 09-10 09:40 ?0次下載
    <b class='flag-5'>I2C</b>基本指南

    CAN轉I2C橋接器

    電子發燒友網站提供《CAN轉I2C橋接器.pdf》資料免費下載
    發表于 08-28 11:10 ?0次下載
    CAN轉<b class='flag-5'>I2C</b>橋接器

    UART轉I2C橋接器

    電子發燒友網站提供《UART轉I2C橋接器.pdf》資料免費下載
    發表于 08-28 09:24 ?1次下載
    UART轉<b class='flag-5'>I2C</b>橋接器

    簡單認識I2C通信協議

    I2C(Inter-Integrated Circuit)通信協議是由飛利浦公司(現為恩智浦半導體)開發的一種簡單、雙向二線制同步串行總線協議。自1982年發布以來,I2C協議因其高效、靈活和易于實現的特點,在電子設備間的數據交換中得到了廣泛應用。以下是對
    的頭像 發表于 07-25 18:06 ?1484次閱讀

    I2C邏輯選型指南

    電子發燒友網站提供《I2C邏輯選型指南.pdf》資料免費下載
    發表于 06-20 16:20 ?2次下載

    請問STM32硬件I2C存在什么缺陷?

    我看野火的庫函數開發手冊里面感覺用I2C用的挺順的呀 為什么張洋卻說STM32I2C有缺陷 不推薦用 請問下 各位在使用I2C的時候碰到過什么情況嗎 我怎么都沒感覺到
    發表于 05-16 07:46

    什么是I2C協議 I2C總線的控制邏輯

    在實際使用過程中,I2C比較容易出現的一個問題就是死鎖 ,死鎖在I2C中主要表現為:I2C死鎖時表現為SCL為高,SDA一直為低。
    發表于 03-12 09:17 ?1079次閱讀
    什么是<b class='flag-5'>I2C</b>協議 <b class='flag-5'>I2C</b>總線的控制邏輯

    GD32 MCU硬件I2C不可靠不如軟件I2C?來看看紅楓派開發版的硬件I2C驅動如何做到穩得一批

    在一個評論中,看到網友對硬件I2C的討論,硬件I2C Busy找不到原因、軟件I2C穩得一批。
    的頭像 發表于 02-23 09:37 ?2799次閱讀
    GD32 MCU硬件<b class='flag-5'>I2C</b>不可靠不如軟件<b class='flag-5'>I2C</b>?來看看紅楓派開發版的硬件<b class='flag-5'>I2C</b>驅動如何做到穩得一批

    stm32 I2c硬件驅動程序不穩定該怎么解決?

    stm32 I2c硬件驅動程序不穩定該怎么解決? stm32I2C 硬件驅動程序不穩定可能是由多種因素引起的。在本文中,我們將討論可能導致 I
    的頭像 發表于 01-16 17:11 ?3051次閱讀
    主站蜘蛛池模板: 国产精品嫩草免费视频| 高清不卡伦理电影在线观看| 最近2019年日本中文免费字幕| 成人精品视频在线| 两个人的视频hd全免费| 午夜精品久久久久久99热蜜桃| a色毛片免费视频| 久久综合色悠悠| 野花视频在线观看免费| 国产亚洲精品网站在线视频| 色宅男看片午夜大片免费看| JIZZ19学生第一次| 男人日女人的b| 中文字幕偷乱免费视频在线| 精品国产乱码久久久人妻| 亚洲电影不卡| 国产精品无码亚洲网| 色网址在线观看| 干极品美女| 色偷偷网址| 丰满老熟女白浆直流| 日本一卡精品视频免费 | 国产精品乱码一区二区三| 肉肉描写很细致的黄文| 把腿张开老子CAO烂你动态图| 欧美人成在线观看ccc36| 99视频精品在线| 日本高清二区| 俄罗斯孩交精品| 小黄文纯肉短篇| 国内精品不卡一区二区三区| 亚洲精品线在线观看| 九九久久国产精品大片| 一级做a爰片久久毛片免费| 精品一区二区免费视频蜜桃网| 亚洲人成77777| 久久成人a毛片免费观看网站| 中国jjzz| 欧美亚洲色帝国| 国产3级在线观看| 亚洲AV色香蕉一区二区9255|