一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

1

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

I2C總線(xiàn)協(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àn)協(xié)議

I2C總線(xiàn)就兩根線(xiàn):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),也就是說(shuō)它屬于半雙工通信。

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

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

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

1. 開(kāi)始和停止在時(shí)鐘線(xiàn)保持高的情況下,SDA數(shù)據(jù)線(xiàn)由高 -》 低:為總線(xiàn)開(kāi)始條件;在時(shí)鐘線(xiàn)保持高的情況下,SDA數(shù)據(jù)線(xiàn)由低 -》 高:為總線(xiàn)結(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)協(xié)議更多內(nèi)容可參看:https://zh.wikipedia.org/wiki/I2Chttps://www.nxp.com/docs/en/user-guide/UM10204.pdf

3

STM32 I2C常見(jiàn)問(wèn)題

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

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

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

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

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

問(wèn)題二:總線(xiàn)電壓不匹配

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

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

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

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

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

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

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

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

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

責(zé)任編輯:lq

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

    關(guān)注

    18

    文章

    6206

    瀏覽量

    137800
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

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

    關(guān)注

    28

    文章

    1541

    瀏覽量

    127800
  • 通信總線(xiàn)
    +關(guān)注

    關(guān)注

    0

    文章

    46

    瀏覽量

    10031

原文標(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)推薦

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

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

    I2C總線(xiàn)復(fù)用

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

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

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

    I2C總線(xiàn)與Arduino的接口示例

    在現(xiàn)代電子設(shè)計(jì)中,I2C總線(xiàn)因其簡(jiǎn)單性和靈活性而廣受歡迎。它允許多個(gè)設(shè)備共享同一通信線(xiàn)路,從而節(jié)省空間和成本。Arduino,作為一個(gè)多功能的微控制器平臺(tái),自然也支持I2C通信。 I2C總線(xiàn)
    的頭像 發(fā)表于 01-17 15:34 ?1593次閱讀

    I2C總線(xiàn)的工作模式介紹

    在現(xiàn)代電子系統(tǒng)中,I2C總線(xiàn)作為一種多主機(jī)、多從機(jī)的串行通信協(xié)議,扮演著至關(guān)重要的角色。它允許多個(gè)設(shè)備共享同一總線(xiàn),進(jìn)行數(shù)據(jù)傳輸,從而簡(jiǎn)化了系統(tǒng)設(shè)計(jì)并降低了成本。 I2C總線(xiàn)的基本特性 I2C總線(xiàn)由
    的頭像 發(fā)表于 01-17 15:32 ?978次閱讀

    I2C總線(xiàn)故障排除技巧

    I2C總線(xiàn)是一種廣泛使用的串行通信協(xié)議,它允許多個(gè)設(shè)備在兩條線(xiàn)上(數(shù)據(jù)線(xiàn)SDA和時(shí)鐘線(xiàn)SCL)進(jìn)行通信。由于其簡(jiǎn)單性和靈活性,I2C總線(xiàn)在嵌入式系統(tǒng)中非常流行。然而,當(dāng)I2C總線(xiàn)出現(xiàn)問(wèn)題時(shí),可能會(huì)
    的頭像 發(fā)表于 01-17 15:20 ?2317次閱讀

    I2C總線(xiàn)應(yīng)用實(shí)例分析

    在現(xiàn)代電子系統(tǒng)中,I2C總線(xiàn)因其簡(jiǎn)單、靈活和高效的特點(diǎn)而被廣泛應(yīng)用于各種設(shè)備之間的通信。 I2C總線(xiàn)概述 I2C總線(xiàn)由Philips(現(xiàn)為NXP)在1980年代初期開(kāi)發(fā),最初用于音頻和視頻設(shè)備
    的頭像 發(fā)表于 01-17 15:09 ?742次閱讀

    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信號(hào)的處理
    的頭像 發(fā)表于 11-01 11:06 ?731次閱讀

    I2C協(xié)議的基礎(chǔ)知識(shí)

    本文從I2C協(xié)議的概述開(kāi)始,描述協(xié)議的歷史、不同速度模式、物理層和數(shù)據(jù)幀結(jié)構(gòu),最后介紹I2C混合電壓系統(tǒng)中電平兼容性以及上拉電阻大小計(jì)算。
    的頭像 發(fā)表于 10-22 15:51 ?2170次閱讀
    <b class='flag-5'>I2C</b>協(xié)議的基礎(chǔ)知識(shí)

    使用USCI I2C主站

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

    I2C噪聲毛刺濾波

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

    了解I2C總線(xiàn)

    電子發(fā)燒友網(wǎng)站提供《了解I2C總線(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 10-08 11:13 ?2次下載
    了解<b class='flag-5'>I2C</b>總線(xiàn)

    I2C基本指南

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

    CAN轉(zhuǎn)I2C橋接器

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

    UART轉(zhuǎn)I2C橋接器

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