www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > > 混說Linux
[導讀]I2C(IIC)屬于兩線式串行總線,由飛利浦公司開發(fā)用于微控制器(MCU)和外圍設備(從設備)進行通信的一種總線,屬于一主多從(一個主設備(Master),多個從設備(Slave))的總線結(jié)構(gòu),總線上的每個設備都有一個特定的設備地址,以區(qū)分同一I2C總線上的其他設備。

I2C(IIC)屬于兩線式串行總線,由飛利浦公司開發(fā)用于微控制器(MCU)和外圍設備(從設備)進行通信的一種總線,屬于一主多從(一個主設備(Master),多個從設備(Slave))的總線結(jié)構(gòu),總線上的每個設備都有一個特定的設備地址,以區(qū)分同一I2C總線上的其他設備。

物理I2C接口有兩根雙向線,串行時鐘線(SCL)串行數(shù)據(jù)線(SDA)組成,可用于發(fā)送和接收數(shù)據(jù),但是通信都是由主設備發(fā)起,從設備被動響應,實現(xiàn)數(shù)據(jù)的傳輸。


I2C主設備與從設備的一般通信過程


一. 主設備給從設備發(fā)送/寫入數(shù)據(jù):

1. 主設備發(fā)送起始(START)信號

2. 主設備發(fā)送設備地址到從設備

3. 等待從設備響應(ACK)

4. 主設備發(fā)送數(shù)據(jù)到從設備,一般發(fā)送的每個字節(jié)數(shù)據(jù)后會跟著等待接收來自從設備的響應(ACK)

5. 數(shù)據(jù)發(fā)送完畢,主設備發(fā)送停止(STOP)信號終止傳輸


二. 主設備從從設備接收/讀取數(shù)據(jù)

1. 設備發(fā)送起始(START)信號

2. 主設備發(fā)送設備地址到從設備

3. 等待從設備響應(ACK)

4. 主設備接收來自從設備的數(shù)據(jù),一般接收的每個字節(jié)數(shù)據(jù)后會跟著向從設備發(fā)送一個響應(ACK)

5. 一般接收到最后一個數(shù)據(jù)后會發(fā)送一個無效響應(NACK),然后主設備發(fā)送停止(STOP)信號終止傳輸


注:具體通信過程需視具體時序圖而定



I2C通信的實現(xiàn)


一. 使用I2C控制器實現(xiàn)

就是使用芯片上的I2C外設,也就是硬件I2C,它有相應的I2C驅(qū)動電路,有專用的IIC引腳,效率更高,寫代碼會相對簡單,只要調(diào)用I2C的控制函數(shù)即可不需要用代碼去控制SCL、SDA的各種高低電平變化來實現(xiàn)I2C協(xié)議,只需要將I2C協(xié)議中的可變部分(如:從設備地址、傳輸數(shù)據(jù)等等)通過函數(shù)傳參給控制器,控制器自動按照I2C協(xié)議實現(xiàn)傳輸,但是如果出現(xiàn)問題,就只能通過示波器看波形找問題。

二. 使用GPIO通過軟件模擬實現(xiàn)

軟件模擬I2C比較重要因為軟件模擬的整個流程比較清晰,哪里出來bug很快能找到問題,模擬一遍會對I2C通信協(xié)議更加熟悉


如果芯片上沒有IIC控制器,或者控制接口不夠用了,通過使用任意IO口去模擬實現(xiàn)IIC通信協(xié)議,手動寫代碼去控制IO口的電平變化,模擬IIC協(xié)議的時序,實現(xiàn)IIC的信號和數(shù)據(jù)傳輸,下面會講到根據(jù)通信協(xié)議如何用軟件去模擬。


I2C通信協(xié)議


IIC總線協(xié)議無非就是幾樣東西:起始信號停止信號、應答信號、以及數(shù)據(jù)有效性


一. 空閑狀態(tài)


時鐘線(SCL)和數(shù)據(jù)線(SDA)接上拉電阻,默認高電平,表示總線是空閑狀態(tài)。


二. 從設備地址


從設備地址用來區(qū)分總線上不同的從設備,一般發(fā)送從設備地址的時候會在最低位加上讀/寫信號,比如設備地址為0x50,0表示讀,1表示寫,則讀數(shù)據(jù)就會發(fā)送0x50,寫數(shù)據(jù)就會發(fā)送0x51。


三. 起始(START)信號


I2C通信的起始信號由主設備發(fā)起,SCL保持高電平,SDA由高電平跳變到低電平。

// 起始信號 void IIC_start(void)
{ // 1.首先把數(shù)據(jù)線設置為輸出模式 // 總線空閑, SCL和SDA輸出高 SCL = 1;  
    SDA = 1;
    delay_us(5); // SDA由高變低 SDA = 0;
    delay_us(5); // 拉低SCL開始傳輸數(shù)據(jù) SCL = 0;
}


四. 停止(STOP)信號


I2C通信的停止信號由主設備終止,SCL保持高電平,SDA由低電平跳變到高電平。

// 停止信號 void IIC_stop(void)
{ // 1.首先把數(shù)據(jù)線設置為輸出模式 // 拉高時鐘線 SDA = 0;
    delay_us(5);
    SCL = 1;
    delay_us(5); // SDA由低變高 SDA = 1;
}


五. 數(shù)據(jù)有效性


I2C總線進行數(shù)據(jù)傳送時,在SCL的每個時鐘脈沖期間傳輸一個數(shù)據(jù)位,時鐘信號SCL為高電平期間,數(shù)據(jù)線SDA上的數(shù)據(jù)必須保持穩(wěn)定,只有在時鐘線SCL上的信號為低電平期間,數(shù)據(jù)線SDA上的高電平或低電平狀態(tài)才允許變化,因為當SCL是高電平時,數(shù)據(jù)線SDA的變化被規(guī)定為控制命令STARTSTOP,也就是前面的起始信號停止信號)。


六. 應答信號(ACK:有效應答,NACK:無效應答)


接收端收到有效數(shù)據(jù)后向?qū)Ψ巾憫男盘枺l(fā)送端每發(fā)送一個字節(jié)(8位)數(shù)據(jù),在第9個時鐘周期釋放數(shù)據(jù)線去接收對方的應答。

當SDA是低電平為有效應答(ACK),表示對方接收成功;

當SDA是高電平為無效應答(NACK),表示對方沒有接收成功

發(fā)送數(shù)據(jù)需要等待接收方的應答:

// 等待ACK   1-無效    0-有效 u8 IIC_wait_ack(void)
{
    u8 ack = 0; // 數(shù)據(jù)線設置為輸入 // 拉高時鐘線 SCL = 1;
    delay_us(5); // 獲取數(shù)據(jù)線的電平 if(SDA)
    { // 無效應答 ack = 1;
        IIC_stop();
    } else { // 有效應答 ack = 0; // 拉低SCL開始傳輸數(shù)據(jù) SCL = 0;
        delay_us(5);
    } return ack;
}

數(shù)據(jù)需要發(fā)送發(fā)送

void IIC_ack(u8 ack)
{ // 數(shù)據(jù)線設置為輸出 SCL = 0;
    delay_us(5); if(ack)
        SDA = 1; // 無效應答 else SDA = 0; // 有效應答  delay_us(5);
    SCL = 1; // 保持數(shù)據(jù)穩(wěn)定 delay_us(5); // 拉低SCL開始傳輸數(shù)據(jù) SCL = 0;
}
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

隨著環(huán)保意識的增強和對可持續(xù)能源的追求,電動汽車(EV)作為一種清潔能源交通工具,正逐漸成為汽車行業(yè)發(fā)展的主流趨勢。電動汽車的核心部件之一是充電機,它負責將外部電能轉(zhuǎn)化為電池可存儲的能量。而 CAN(Controller...

關(guān)鍵字: 電動汽車 通信協(xié)議 充電機

通用串行總線(USB)規(guī)格的最新迭代版本 USB 3.1 第 2 代,有望改變 IT、消費、工業(yè)及通用嵌入式電子設備交換數(shù)據(jù)和供電的方式。再加之 Type-C 連接器,它就能夠替代許多其它形式的有線連接,而且它已經(jīng)在便攜...

關(guān)鍵字: 串行總線 連接器 適配器

在工業(yè)自動化、汽車電子等領(lǐng)域,CAN(Controller Area Network)總線憑借其高可靠性、多主通信、高速傳輸以及連接節(jié)點眾多等優(yōu)勢,成為了應用極為廣泛的通信協(xié)議。然而,實際應用環(huán)境往往十分復雜,存在諸如電...

關(guān)鍵字: 總線 通信協(xié)議 隔離技術(shù)

上海2025年4月1日 /美通社/ -- 為期兩天的2025國際集成電路展覽會暨研討會(IIC Shanghai)于上海金茂君悅大酒店圓滿閉幕。本屆 IIC構(gòu)建了集技術(shù)交流、商業(yè)合作、戰(zhàn)略對話于一體的國際化平臺,吸引了來...

關(guān)鍵字: IIC 研討會 集成電路 SHANGHAI

隨著現(xiàn)代芯片的復雜性不斷提高,驗證成為芯片設計過程中最耗時和費力的部分,許多芯片設計項目通常要耗費大約60%-80%的項目資源用于驗證,并且還成為了整個設計過程中的瓶頸,能否順利完成驗證成為了決定芯片上市時間(TTM)和...

關(guān)鍵字: 芯片設計 串行總線 IP

隨著物聯(lián)網(wǎng)(IoT)技術(shù)的飛速發(fā)展,萬物互聯(lián)的時代已經(jīng)到來。然而,地面網(wǎng)絡的覆蓋范圍和穩(wěn)定性在某些極端環(huán)境下仍存在局限性。為了克服這些挑戰(zhàn),衛(wèi)星物聯(lián)網(wǎng)(NTN,Non-Terrestrial Network)技術(shù)應運而生...

關(guān)鍵字: 衛(wèi)星物聯(lián)網(wǎng) NTN 通信協(xié)議

UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器)通信協(xié)議是嵌入式系統(tǒng)中廣泛應用的通信協(xié)議之一。它以其簡單、可靠和靈活的特性,成為連接微控制器、傳感器、...

關(guān)鍵字: 嵌入式系統(tǒng) UART 通信協(xié)議

在現(xiàn)代嵌入式系統(tǒng)開發(fā)中,串行通信協(xié)議扮演著至關(guān)重要的角色。其中,UART(通用異步收發(fā)傳輸器)、I2C(Inter-Integrated Circuit)和SPI(Serial Peripheral Interface)...

關(guān)鍵字: UART I2C SPI 串行總線

在數(shù)字通信領(lǐng)域,二進制通信協(xié)議扮演著至關(guān)重要的角色。它們不僅決定了數(shù)據(jù)如何在不同系統(tǒng)或設備間高效、準確地傳輸,還直接影響到通信的實時性、可靠性和資源利用率。本文將深入探討二進制通信協(xié)議的序列化與解析過程,并通過實例代碼展...

關(guān)鍵字: 二進制 通信協(xié)議 序列化

控制器局域網(wǎng) (CAN) 總線由博世于 20 世紀 80 年代開發(fā),是工業(yè)和汽車應用中常用的通信協(xié)議。它的開發(fā)是為了改善電子控制單元 (ECU) 之間的數(shù)據(jù)交換,從而提高車輛的系統(tǒng)效率。

關(guān)鍵字: CAN總線 通信協(xié)議
關(guān)閉