chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32 I2C基礎(chǔ)內(nèi)容

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

掃碼添加小助手

加入工程師交流群

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

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

1

STM32 I2C基礎(chǔ)內(nèi)容

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

1. 主從模式特性

主模式特性:

時(shí)鐘生成

起始位和停止位生成

從模式特性:

編程 I2C地址檢測(cè)

雙尋址模式,可對(duì) 2 個(gè)從地址應(yīng)答

停止位檢測(cè)

2. 通信速度標(biāo)準(zhǔn)速度:高達(dá) 100 kHz快速速度:高達(dá) 400 kHz超快速度:高達(dá) 1 MHz(第3版)

3.尋址模式

7 位尋址模式

10 位雙尋址模式

廣播呼叫地址

4.收發(fā)模式

從發(fā)送器

接收器

主發(fā)送器

主接收器

這些都是STM32 I2C 的基礎(chǔ)功能,更多內(nèi)容請(qǐng)查閱芯片對(duì)應(yīng)的參考手冊(cè)。

2

I2C 總線協(xié)議

I2C總線就兩根線:SCL時(shí)鐘信號(hào),SDA數(shù)據(jù)信號(hào)。其中SCL由主機(jī)產(chǎn)生,SDA由主機(jī)或者從機(jī)產(chǎn)生。

I2C是同步串行通信,同一時(shí)間SDA只能由一個(gè)設(shè)備發(fā)送信號(hào),也就是說它屬于半雙工通信。

I2C 總線協(xié)議可參考總線(SDA和SCL)的時(shí)序進(jìn)行理解:

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

通常包含:起始位、數(shù)據(jù)/地址、ACK、結(jié)束位。

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

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

7位地址:

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

10位地址:

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

3. 應(yīng)答(ACK)應(yīng)答(ACK)和非應(yīng)答(NACK)發(fā)生在每個(gè)字節(jié)之后,是由接收方向發(fā)送方發(fā)出確認(rèn)信號(hào),表明數(shù)據(jù)已成功接收,并且可以繼續(xù)發(fā)送下一字節(jié)數(shù)據(jù)。

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

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

3

STM32 I2C常見問題

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

問題一:IO模式不對(duì)

有些工程師對(duì)用于I2C 總線的GPIO不了解,寫驅(qū)動(dòng)代碼時(shí)把總線(SDA、SCL)配置成推挽輸出模式,導(dǎo)致應(yīng)用上的異常。

I2C 總線是一種特殊的總線,因?yàn)槎嗥骷韫灿每偩€,加上數(shù)據(jù)線需支持雙向通信。SDA要求開漏輸出模式。由于開漏無法直接輸出“高”時(shí),需外加上拉電阻配合。

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

問題二:總線電壓不匹配

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

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

問題三:軟件檢測(cè)死機(jī)

I2C 總線一般通過ACK信號(hào)來判斷總線的情況,STM32實(shí)現(xiàn)I2C 收發(fā)、檢測(cè)等操作是由內(nèi)部控制器自動(dòng)完成。

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

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

比方當(dāng)發(fā)送超時(shí)情形時(shí),可以嘗試復(fù)位STM32 I2C外設(shè)或相關(guān)設(shè)備。

復(fù)盤一下▼I2C 基礎(chǔ)內(nèi)容:主從模式特性、通信速度、尋址模式、收發(fā)模式;▼I2C 總線協(xié)議:起始位、數(shù)據(jù)/地址、ACK、結(jié)束位;▼I2C 常見問題:IO模式不對(duì)、總線電壓不匹配、軟件檢測(cè)死機(jī)

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

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6361

    瀏覽量

    139846
  • STM32
    +關(guān)注

    關(guān)注

    2307

    文章

    11150

    瀏覽量

    372393
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1553

    瀏覽量

    130844
  • 通信總線
    +關(guān)注

    關(guān)注

    0

    文章

    47

    瀏覽量

    10188

原文標(biāo)題:STM32學(xué)習(xí)筆記 | I2C通信容易出錯(cuò)的情況

文章出處:【微信號(hào):strongerHuang,微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

    基于FPGA的I2C控制模塊設(shè)計(jì)

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

    AS32X601的I2C模塊操作EEPROM詳解

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

    ISO164x熱插拔雙向I2C隔離器:特性、應(yīng)用與設(shè)計(jì)要點(diǎn)

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

    I2C的狀態(tài)碼

    發(fā)送、主機(jī)接收、從機(jī)接收、從機(jī)發(fā)送或廣播接收模式,當(dāng)狀態(tài)寄存器I2Cx_STAT的內(nèi)容改變時(shí),都會(huì)將 I2Cx_CR.SI 置位,且產(chǎn)生 I2C 中斷。
    發(fā)表于 12-08 08:04

    I2C死鎖的問題

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

    深入剖析I2C協(xié)議

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

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

    如題,想請(qǐng)問下STM32有哪些產(chǎn)品,能支持I2C HS模式,速率3.4Mbit/s。同時(shí)又支持I3C的(SDR12.5M),現(xiàn)在有個(gè)外設(shè) 分別支持I2C HS slave,
    發(fā)表于 08-04 06:06

    第十八章 I2C通信測(cè)試

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

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

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

    簡單了解I2C接口

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

    是德DSOX4034A示波器I2C總線信號(hào)分析

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

    STM32學(xué)習(xí)筆記_I2C詳解(可下載)

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

    I2C總線復(fù)用

    帝晶智慧屏I2C總線復(fù)用
    的頭像 發(fā)表于 03-11 17:20 ?1957次閱讀

    I2C總線通信原理 如何設(shè)計(jì)I2C總線電路

    I2C總線通信原理 I2C(Inter-Integrated Circuit)總線是一種用于集成電路之間進(jìn)行通信的串行通信協(xié)議。它最早由飛利浦公司(現(xiàn)被恩智浦電子收購)于1982年推出,是一種簡單
    的頭像 發(fā)表于 01-31 15:01 ?2118次閱讀