基于I2C總線的單主多從單片機(jī)之間的通信
引言
隨著單片機(jī)控制系統(tǒng)的不斷擴(kuò)大以及控制功能不斷增多,有限的單個(gè)單片機(jī)通用I/O口已不能滿足同一系統(tǒng)中控制多個(gè)受控對(duì)象需要,隨著FC總線研究的深入,用I2C總線擴(kuò)展單片機(jī)I/O口的方法在全自動(dòng)、半自動(dòng)儀器的開發(fā)領(lǐng)域得到了廣泛應(yīng)用,本文介紹了一個(gè)測(cè)試系統(tǒng)通過FC總線擴(kuò)展I/O口實(shí)現(xiàn)了系統(tǒng)的多個(gè)功能。給出了系統(tǒng)的硬件連接以及Atmega128與三個(gè)Atmega168之間的軟件通信流程圖。
2 系統(tǒng)的硬件結(jié)構(gòu)
圖1是作者所研究的測(cè)試系統(tǒng)的整體框圖,本系統(tǒng)中主要芯片PHILIPS公司的LPC2292,在此系統(tǒng)中鍵盤上其中三個(gè)按鈕分別控制三個(gè)電機(jī),系統(tǒng)的主要功能是LPC2292將掃描到的鍵盤信息發(fā)給Atmega128單片機(jī),Atmega128單片機(jī)通過I2C總線尋址Atmega168,并向被尋址的Atmega168發(fā)送電機(jī)控制命令,最后,電機(jī)根據(jù)Atmega168控制策略正常運(yùn)行。電機(jī)啟動(dòng)同時(shí),數(shù)據(jù)采集模塊也開始正常運(yùn)行,數(shù)據(jù)采集模塊把采到數(shù)據(jù)送到LPC2292的A/D轉(zhuǎn)換接口,然后將ADC輸出的數(shù)據(jù)發(fā)送到LCD。系統(tǒng)中的撥碼開關(guān)用于設(shè)置相應(yīng)的Atmega168單片機(jī)的地址,當(dāng)單片機(jī)Atmega128接收到LPC2292發(fā)來的控制命令時(shí),通過I2C總線尋址Atmega168,當(dāng)某個(gè)Atmega168的地址與Atmega128廣播地址相同時(shí),它就開始根據(jù)Atmega128發(fā)送的命令控制電機(jī)開始工作。
圖1基于I2C總線的I/O擴(kuò)展框圖
3 I2C總線
I2C總線是PHILIPS公司推出的芯片間串行數(shù)據(jù)傳輸總線,軟、硬件協(xié)議十分巧妙,2根線(SDA,SCL)HP可實(shí)現(xiàn)完善的全雙工同步數(shù)據(jù)傳送,能夠十分方便地構(gòu)成單主系統(tǒng)或多主系統(tǒng)和外同器件擴(kuò)展系統(tǒng)。不過,多主系統(tǒng)(即系統(tǒng)中有多個(gè)I2C總線接口的單片機(jī))會(huì)出現(xiàn)多主競(jìng)爭(zhēng)的復(fù)雜狀態(tài)。I2C器件是把I2C的協(xié)議植入器件的I/O接口,使用時(shí)器件直接掛到I2C總線上,這一特點(diǎn)給用戶在設(shè)計(jì)應(yīng)用系統(tǒng)時(shí)帶來了極大的方便。I2C器件無須片選信號(hào),是否選中是由主器件發(fā)出的I2C從地址決定的。
所有掛到I2C總線的外圍器件,各自都有一個(gè)唯一確定的地址。任何時(shí)刻總線上只有一個(gè)主控器件對(duì)總線實(shí)行控制權(quán),分時(shí)實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的數(shù)據(jù)傳送。I2C總線上所有外闈器件都有規(guī)范的器件地址,器件地址由7位組成,它和1位方向位(R/W)構(gòu)成了I2C總線器件的尋址字節(jié)SLA,格式如下:
器件地址(A6,A5,A4,A3)是I2C總線外圍接口器件同有的地址編碼(4位或5位),器件出廠時(shí)已固化好。引腳地址(A2,A1,A0)和器件在電路中的實(shí)際接法有關(guān)(地址線、電源或地),形成地址數(shù)據(jù)。數(shù)據(jù)方向位(R/W)規(guī)定了總線上的主節(jié)點(diǎn)對(duì)從節(jié)點(diǎn)的數(shù)據(jù)傳送方向,當(dāng)(R/W)位置1時(shí)接收,當(dāng)(R/W)為0時(shí)發(fā)送。圖1中的撥碼開關(guān)設(shè)置了從單片機(jī)Atmega168的地址,也就是從機(jī)地址的低三位(A2,AI,A0),當(dāng)某個(gè)撥碼開關(guān)的某個(gè)開關(guān)閉合時(shí),相應(yīng)的地址位為零,否則相應(yīng)位為1,因此可以通過撥碼開關(guān)上開關(guān)的狀態(tài)來設(shè)定從單片機(jī)Atmega168的地址,比如某個(gè)撥碼開關(guān)與A0、A2位對(duì)應(yīng)的開關(guān)閉合,與Al對(duì)應(yīng)的開關(guān)斷開,那么這個(gè)單片機(jī)地址的低三位為010。
4 I2C通信的流程圖
根據(jù)I2C總線的傳輸協(xié)議規(guī)范和硬件連接,作者給出了如圖2和圖3基本程序流程圖和部分程序。開發(fā)語言為c語言,與匯編語言相比,可以提高軟件的執(zhí)行速度。
通信相關(guān)文章:通信原理
雙控開關(guān)相關(guān)文章:雙控開關(guān)原理
評(píng)論