摘 要: 介紹了I2C總線的結(jié)構(gòu),、工作原理、數(shù)據(jù)傳輸方式,討論了基于I2C總線的多機(jī)通信" title="多機(jī)通信">多機(jī)通信軟硬件設(shè)計(jì)" title="軟硬件設(shè)計(jì)">軟硬件設(shè)計(jì),實(shí)現(xiàn)了程控交換多機(jī)通信調(diào)度指揮系統(tǒng),。
關(guān)鍵詞: I2C總線 多機(jī)通信 軟硬件設(shè)計(jì)
I2C(Inter Integrated Circuit)總線是Philips公司開(kāi)發(fā)的一種雙向兩線多主機(jī)總線,它能方便地實(shí)現(xiàn)芯片間的數(shù)據(jù)傳輸與控制。通過(guò)兩線緩沖接口和內(nèi)部控制與狀態(tài)寄存器,,可方便地完成多機(jī)間的非主從通信或主從通信?;贗2C總線的多機(jī)通信電路結(jié)構(gòu)簡(jiǎn)單,、程序編寫(xiě)方便,易于實(shí)現(xiàn)系統(tǒng)軟硬件的模塊化和標(biāo)準(zhǔn)化,。
本文給出了基于I2C總線的多機(jī)通信調(diào)度指揮系統(tǒng)方案,,討論了系統(tǒng)的軟硬件設(shè)計(jì)。
1 系統(tǒng)硬件設(shè)計(jì)
本調(diào)度指揮系統(tǒng)由主機(jī)和調(diào)度操作臺(tái)兩部分組成,,工作原理如圖1所示,兩者間通過(guò)RS422總線實(shí)現(xiàn)較長(zhǎng)距離的數(shù)據(jù)傳送" title="數(shù)據(jù)傳送">數(shù)據(jù)傳送,。主機(jī)和操作臺(tái)內(nèi)部均采用分散多處理器控制,處理器間采用I2C總線進(jìn)行數(shù)據(jù)通信,。
主機(jī)內(nèi)部采用分散控制方式,,整個(gè)交換系統(tǒng)被分割成多個(gè)用戶子系統(tǒng)及1個(gè)通信子系統(tǒng),每個(gè)子系統(tǒng)由一個(gè)CPU處理單元負(fù)責(zé)128個(gè)用戶的呼叫控制和管理,,多個(gè)子系統(tǒng)之間通過(guò)I2C組成一個(gè)無(wú)主通信總線" title="通信總線">通信總線進(jìn)行信息交互(如呼叫處理信息,、維護(hù)信息等),構(gòu)成一個(gè)完整的交換系統(tǒng),。
調(diào)度操作臺(tái)由操作臺(tái)控制CPU,、顯示屏及多個(gè)用戶鍵板構(gòu)成,支持128~1024個(gè)操作按鍵和256~2048個(gè)LED指示燈,,每個(gè)操作按鍵可縮位一組電話號(hào)碼對(duì)應(yīng)主機(jī)內(nèi)的一個(gè)電話用戶,,雙燈組合指示該電話用戶狀態(tài),并支持LCD中文顯示,。操作臺(tái)內(nèi)部主控CPU與用戶鍵板控制CPU之間通過(guò)I2C總線組成主從通信總線進(jìn)行信息交互(按鍵信息,、LED顯示信息)。
1.1 主機(jī)I2C總線構(gòu)成
子系統(tǒng)的CPU處理單元由Philips-80C652單片機(jī)配合外圍電路(如EPROM,、RAM,、EEPROM、譯碼和I/O驅(qū)動(dòng)等)構(gòu)成,,80C652具有一個(gè)支持雙向數(shù)據(jù)傳送的I2C總線串行接口,,I2C總線邏輯根據(jù)路徑自動(dòng)地進(jìn)行數(shù)據(jù)傳送。CPU對(duì)I2C總線的訪問(wèn)通過(guò)以下四個(gè)特殊功能寄存器完成:
S1CON(D8H) SIO1控制寄存器
S1STA(D9H) SIO1狀態(tài)寄存器
S1DAT(DAH) SIO1數(shù)據(jù)寄存器
S1ADR(DBH) SIO1從地址寄存器
SIO1邏輯通過(guò)P1.6/SCL和P1.7/SDA兩個(gè)引腳連接到外部I2C總線,,可工作于以下四種模式:主發(fā)送模式,、主接收模式、從接收模式,、從發(fā)送模式,。各子系統(tǒng)間的I2C接口復(fù)接即構(gòu)成了主機(jī)I2C通信總線,,采用無(wú)主通信方式,每個(gè)CPU既可以響應(yīng)通用地址的廣播呼叫,,也可以進(jìn)行點(diǎn)對(duì)點(diǎn)通信,,完全滿足程控交換的信息傳送要求且結(jié)構(gòu)簡(jiǎn)單。連接示意圖如圖2所示,。
1.2 調(diào)度臺(tái)I2C總線構(gòu)成
操作臺(tái)控制CPU板由Philips-80C652單片機(jī)配合外圍電路(如EPROM,、RAM、EEPROM,、譯碼和顯示驅(qū)動(dòng)電路等)構(gòu)成,,其P1.6-SCL、P1.7-SDA為I2C總線接口SIO1,。單片機(jī)的SIO0通過(guò)MC3486/3487與主機(jī)通過(guò)RS422接口通信,SIO1與用戶鍵板的P87LPC764通信,,最多可支持63塊用戶鍵板的通信連接,。
每個(gè)用戶鍵板均采用Philips-P87LPC764單片機(jī)控制,每塊鍵板提供64個(gè)用戶按鍵及128個(gè)用戶鍵燈,。P87LPC764是51LPC系列OTP單片機(jī),,其最大特點(diǎn)是改進(jìn)型80C51系列,增加了WDT看門(mén)狗,、I2C總線,、二個(gè)模擬量比較器、上電復(fù)位檢測(cè),,保證I/O口驅(qū)動(dòng)電流達(dá)到20mA,,運(yùn)行速度為標(biāo)準(zhǔn)80C51的2倍,而且溫度范圍達(dá)到了工業(yè)級(jí)標(biāo)準(zhǔn)(-40℃~+85℃),。該芯片的I2C總線系統(tǒng)包括一個(gè)可簡(jiǎn)化軟件驅(qū)動(dòng)的I2C總線硬件,。除了必要的總線仲裁、錯(cuò)誤檢測(cè),、時(shí)鐘擴(kuò)展和總線超時(shí)定時(shí)器外,,還包括一個(gè)一位接口,這個(gè)接口通過(guò)循環(huán)查詢或中斷同步軟件,。
采用該設(shè)計(jì)的優(yōu)點(diǎn)在于系統(tǒng)擴(kuò)充性強(qiáng),,軟件功能分擔(dān):由P87LPC764進(jìn)行按鍵掃描和LED顯示處理,大大減輕了主CPU-80C652的負(fù)擔(dān),;由于P87LPC764性價(jià)比優(yōu)越,,比專用鍵盤(pán)電路更便宜,功能上也可靈活改變,;鍵板可按需配置,,只需簡(jiǎn)單的4線連接(SDA,、SCL、+5V,、GND),。調(diào)度臺(tái)I2C總線連接示意圖如圖3所示。
2 I2C總線的數(shù)據(jù)傳送方式
I2C總線器件之間通過(guò)串行數(shù)據(jù)線SDA和串行時(shí)鐘線SCL傳送數(shù)據(jù),,交換信息,。每個(gè)器件(微控制器、LCD驅(qū)動(dòng)器,、存儲(chǔ)器或鍵盤(pán)接口)都要設(shè)置一個(gè)獨(dú)特的地址碼以示區(qū)別,。根據(jù)通訊需要,器件可以工作于發(fā)送或接收方式,,并允許有多個(gè)設(shè)備作為主站控制總線,。總線上主和從,、發(fā)送和接收的關(guān)系僅取決于每次數(shù)據(jù)傳送的方向,。
2.1 I2C總線傳輸數(shù)據(jù)格式
I2C總線的數(shù)據(jù)傳送格式如圖4所示。
S:start信號(hào),;
SLA:從機(jī)地址,,也可以是通用地址;
R/W:讀寫(xiě)控制位,;
A:ACK響應(yīng),;
DATA0~DATA7:每組傳送8個(gè)數(shù)據(jù)字節(jié);
S /P:下一個(gè)start或stop信號(hào),。
首先發(fā)送開(kāi)始(start)信號(hào),,然后傳送第一個(gè)字節(jié):高7位是從機(jī)地址,低位表示讀/寫(xiě)(R/W)狀態(tài),,“0”表示寫(xiě)操作,,“1”表示讀操作。由于CPU之間采用無(wú)主通信或主從通信,,一般只采用主發(fā)送和從接收模式,,因此該位均填0表示數(shù)據(jù)發(fā)送;總線上的每個(gè)物理器件判斷接收的地址與本機(jī)地址是否一致,,地址一致,,返回ACK,進(jìn)行正常的數(shù)據(jù)傳送,。每個(gè)地址或數(shù)據(jù)后必須跟應(yīng)答信號(hào),,當(dāng)一個(gè)正常的應(yīng)答信號(hào)有效時(shí),SCL時(shí)鐘為高電平,,接收模塊數(shù)據(jù)線SDA置低,,同時(shí)按字節(jié)傳送數(shù)據(jù),,傳送結(jié)束由發(fā)送端發(fā)送stop信號(hào)或下一個(gè)start信號(hào)。
從機(jī)地址由各CPU按統(tǒng)一原則進(jìn)行分配,,主機(jī)各子系統(tǒng)可按各自的系統(tǒng)號(hào)從01H開(kāi)始編排,,00H作為通用呼叫地址;調(diào)度臺(tái)80C652地址取01H,,P87LPC764地址范圍為40H~7FH,,其它地址待擴(kuò)充。
處理器之間采用固定8字節(jié)數(shù)據(jù)通信:DATA0,、DATA1,、DATA2、DATA3,、DATA4,、DATA5、DATA6,、DATA7,。
DATA0:目的地址,發(fā)送時(shí)可根據(jù)該地址確定從機(jī)地址,;
DATA1:源地址;
DATA2:消息編碼,,可按需分配,;
DATA3~DATA7:該消息應(yīng)攜帶的其它必要信息。
以調(diào)度臺(tái)為例,,80C652向P87LPC764發(fā)送LED燈顯示數(shù)據(jù):目址,、源址、55H(消息編碼),,鍵地址,、左燈狀態(tài)、右燈狀態(tài),、#0EEH,、#0EEH。
目址:即P87LPC764地址,、40H~7FH,;
源址:即80C652地址,01H,;
鍵地址:每片P87LPC764所處理的按鍵地址,,00H~3FH(64鍵);
燈狀態(tài):即讓對(duì)應(yīng)燈處于滅,、常亮,、閃爍等狀態(tài)值,。
3 通信軟件設(shè)計(jì)
主機(jī)和調(diào)度臺(tái)80C652單片機(jī)上電時(shí)首先裝載本機(jī)從地址和通用地址,設(shè)置I2C總線為高中斷,。由中斷處理程序" title="中斷處理程序">中斷處理程序自動(dòng)接收數(shù)據(jù)存入數(shù)據(jù)緩沖區(qū)并查詢是否有數(shù)據(jù)發(fā)送,,若有,進(jìn)行相應(yīng)發(fā)送處理;系統(tǒng)設(shè)置50ms定時(shí)中斷處理,,集中處理接收到的信息,,按要求進(jìn)行相關(guān)處理,并查詢是否有數(shù)據(jù)需發(fā)送,,若有填入發(fā)送緩沖區(qū),,設(shè)置待發(fā)送S1CON標(biāo)志,由中斷處理程序發(fā)送,。流程如圖5所示,。
鍵板I2C總線軟件處理過(guò)程為:鍵板P87LPC764初始化,裝載本機(jī)從地址,,設(shè)置定時(shí)器I為高中斷,,I2C總線普通中斷。主程序中進(jìn)行I2C總線數(shù)據(jù)發(fā)送檢查,,進(jìn)行重發(fā)處理,;接收數(shù)據(jù)處理;待發(fā)送數(shù)據(jù)處理及設(shè)置主站待發(fā),。定時(shí)器I負(fù)責(zé)監(jiān)視I2C總線,,計(jì)時(shí)溢出復(fù)位I2C接口硬件。I2C中斷處理程序完成數(shù)據(jù)的接收和發(fā)送工作,。流程如圖6所示,。
本設(shè)計(jì)采用I2C總線實(shí)現(xiàn)調(diào)度指揮系統(tǒng)中多模塊間的雙向通信,電路設(shè)計(jì)簡(jiǎn)單,,易于模塊化及擴(kuò)展,。
參考文獻(xiàn)
1 陳秀玲, 周 欣,陳黎平.I2C總線數(shù)據(jù)傳輸系統(tǒng)的設(shè)計(jì)及其應(yīng)用.微型電腦應(yīng)用, 2003;19(5):42~45
2 蔣偉宏,習(xí) 勇,魏急波.基于MPC850嵌入式通信平臺(tái)的I2C接口設(shè)計(jì). 通信技術(shù)與設(shè)備,2002;28(10):20~22
3 何立民. I2C總線應(yīng)用系統(tǒng)設(shè)計(jì).北京:北京航空航天大學(xué)出版社,1995