孫群中 李學(xué)海
摘 要: 本文介紹MCU應(yīng)用開發(fā)中常用的串行通信接口協(xié)議,并結(jié)合各接口協(xié)議在本項目中的應(yīng)用進行比較分析和選擇,確定通用積木塊的串行通信接口協(xié)議,以及其他接口協(xié)議的實現(xiàn)方法。
關(guān)鍵詞: 積木式數(shù)據(jù)傳輸 實驗平臺 串行通信 接口協(xié)議
在我們承擔(dān)的《基于MCU的積木式數(shù)據(jù)傳輸實驗平臺的研究》項目中,要實現(xiàn)一些以MCU為核心的具有不同功能的模塊電路——積木塊,這些積木塊通過各種不同的接口,可以像搭積木一樣組合實現(xiàn)各種不同形式的數(shù)據(jù)傳輸。
在積木塊內(nèi)部或積木塊之間進行串行通信,就得根據(jù)具體的需要,事先確定好串行通信接口協(xié)議。為方便項目的開發(fā)和應(yīng)用,我們盡量使用標(biāo)準(zhǔn)化的接口協(xié)議,如UART,I2C,SPI等。下面筆者就簡單介紹MCU應(yīng)用開發(fā)中常用的串行通信接口協(xié)議,并結(jié)合各接口協(xié)議在本項目中的應(yīng)用進行比較分析和選擇。
1. 常用的串行通信協(xié)議
(1)UART總線協(xié)議
UART的全稱是“Universal Asynchronous Receiver/Transmitter”,意為“通用異步收發(fā)傳輸器”,是一種異步收發(fā)傳輸器,是電腦硬件的一部分,廣泛應(yīng)用于MCU應(yīng)用開發(fā)中。UART可以將數(shù)據(jù)在串行通信與并行通信間進行傳輸轉(zhuǎn)換,即在MCU內(nèi)部以字符為單位進行并行處理,而在線路上逐個比特串行傳輸。UART可用于全雙工點對點通信,一條線接收(RX),另一條線發(fā)送(TX)。
通常MCU的UART接口不能直接和DTE(Data Terminal Equipment,數(shù)據(jù)終端設(shè)備)設(shè)備對接,需要通過電平轉(zhuǎn)換芯片將UART接口的TTL電平轉(zhuǎn)換成RS232C、RS485或RS422的接口電平,然后才能和具有對應(yīng)接口的DTE設(shè)備對接。
由Motorola公司推出的串行通信接口SCI(Serial Communication Interface)是一種UART接口。
(2)I2C總線協(xié)議
I2C的全稱是“Inter-Integrated Circuit”(在中國一般讀作“I方C”,也可寫作“IIC”),意為“內(nèi)部整合電路”,是由PHILIPS公司開發(fā)的兩線式串行總線,用于連接MCU及其外圍設(shè)備。它是同步通信的一種特殊形式,具有接口線少,控制方式簡單,器件封裝形式小,通信速率較高等優(yōu)點。每個連接到I2C總線的器件都可以通過唯一的地址和一直存在的簡單的主機/從機關(guān)系軟件設(shè)定地址,主機可以作為主機發(fā)送器或主機接收器。I2C使用多主從架構(gòu),如果兩個或更多主機同時初始化,數(shù)據(jù)傳輸可以通過沖突檢測和仲裁防止數(shù)據(jù)被破壞。AVR序列單片機內(nèi)部集成TWI(Two-wire Serial Interface)總線,是對I2C總線的繼承和發(fā)展,可以看做一類。
(3)SPI總線協(xié)議
SPI的全稱是“Serial Peripheral Interface”,意為“串行外設(shè)接口”,是Motorola公司首先在其MC68HCXX系列處理器上定義的一種同步串行外設(shè)接口,它可以使MCU與各種外圍設(shè)備以串行方式進行通信以交換信息。SPI接口主要應(yīng)用在EEPROM、FLASH、實時時鐘、AD轉(zhuǎn)換器上,還有數(shù)字信號處理器和數(shù)字信號解碼器之間。
在點對點的通信中,SPI接口不需要進行尋址操作,且為全雙工通信,顯得簡單高效。在多個從器件的系統(tǒng)中,每個從器件需要獨立的使能信號。
(4)USART總線協(xié)議
USART全稱是“Universal Synchronous/Asynchronous Receiver/Transmitter”,意為“通用同步/異步收發(fā)傳輸器”,是一個高度靈活的串行通信設(shè)備。USART相對UART來說是在異步通信的基礎(chǔ)上還有同步的功能,USART能夠提供主動時鐘。USART可以配置成UART或SPI模式,AVR USART對AVR UART完全兼容。
(5)1-wire總線協(xié)議
1-Wire協(xié)議是美國Maxim/Dallas公司開發(fā)的一種單線總線協(xié)議,簡稱“單總線”。系統(tǒng)由一臺主機和若干臺從機通過一條線連接而成,主機由此完成對從機的尋址、控制、數(shù)據(jù)傳輸甚至供電(當(dāng)然一條功能線之外還有地線,如需由主機供電,還要有電源線)。1-Wire協(xié)議采用單根信號線,既傳輸時鐘,又傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的。它具有節(jié)省I/O口線資源,結(jié)構(gòu)簡單,成本低廉,便于總線擴展和維護等諸多優(yōu)點。
1-Wire協(xié)議適用于單個主機系統(tǒng),控制一個或多個從機設(shè)備。當(dāng)只有一個從機位于總線上時,系統(tǒng)可按照單節(jié)點系統(tǒng)操作,而當(dāng)多個從機位于總線上時,則系統(tǒng)按照多節(jié)點系統(tǒng)操作。
主機一般由MCU組成,從機由Maxim/Dallas提供的1-Wire器件構(gòu)成,每個1-Wire器件內(nèi)嵌唯一的地址碼,以實現(xiàn)主機對不同從機的尋址。主機可通過各種方式聯(lián)入計算機系統(tǒng)。作為一種單主機多從機的總線系統(tǒng),在一條1-Wire總線上可掛接的從器件數(shù)量幾乎不受限制。
(6)USB總線協(xié)議
USB全稱是“Universal Serial Bus”,意為“通用串行總線”,是1994年底由Intel、Compaq、Digital、IBM、Microsoft、NEC、Northern Telecom等七家世界著名的計算機和通信公司共同推出的一種新型接口標(biāo)準(zhǔn)。USB具有傳輸速度快(USB1.1是12Mbps,USB2.0是480Mbps,USB3.0是5 Gbps),使用方便,支持熱插拔,連接靈活,獨立供電等優(yōu)點。因為USB已經(jīng)替代并行和串行接口,成為PC的標(biāo)配,所以MCU與PC之間的連接越來越多地采用USB接口,一般是通過USB轉(zhuǎn)UART電路,將MCU的UART與PC的USB連接起來。
(7)SDIO總線協(xié)議
SDIO的全稱是“Secure Digital Input and Output”,意為安全數(shù)字輸入輸出,是SD型的擴展接口。SDIO除了可以接SD卡外,還可以接支持SDIO接口的設(shè)備,插口的用途不止是插存儲卡。支持SDIO接口的PDA、筆記本電腦等都可以連接像GPS接收器、WiFi或藍牙適配器、調(diào)制解調(diào)器、局域網(wǎng)適配器、條形碼讀取器、FM無線電、電視接收器、射頻身份認(rèn)證讀取器或者數(shù)碼相機等采用SD標(biāo)準(zhǔn)接口的設(shè)備。
SDIO協(xié)議可以支持三種操作模式:SPI、SD一線,SD四線(接口通過寄存器來配置)。SPI速度較低,一線或者四線需要寄存器來選擇,高速模式下需要四線支持。
(8)CAN總線協(xié)議
CAN的全稱為“Controller Area Network”,意為控制器局域網(wǎng),是由研發(fā)和生產(chǎn)汽車電子產(chǎn)品著稱的德國BOSCH公司開發(fā)的,并最終成為國際標(biāo)準(zhǔn)(ISO11898),是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。
CAN總線是德國BOSCH公司從20世紀(jì)80年代初為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議,它是一種多主總線,通信介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維。通信速率可達1MBPS。
(9)GPIO總線協(xié)議
GPIO的全稱為“General-Purpose Input/Output ports”,意為“通用IO口”,即可以根據(jù)使用者的需要將某個接口引腳設(shè)置成輸入、輸出或其他特殊功能。GPIO的功能類似8051的P0~P3。GPIO是一種非常重要的I/O接口,具有使用靈活、可配置性好、硬件代價小等優(yōu)點。
(10)RJ45 以太網(wǎng)接口協(xié)議
10/100 Base-T RJ45接口是常用的以太網(wǎng)接口,支持10兆和100兆自適應(yīng)的網(wǎng)絡(luò)連接速度,常見的RJ45接口有兩類:用于以太網(wǎng)網(wǎng)卡、路由器以太網(wǎng)接口等的DTE類型,還有用于交換機等的DCE類型。RJ45接口通常用于數(shù)據(jù)傳輸,最常見的應(yīng)用為網(wǎng)卡接口。
RJ45是各種不同接頭的一種類型(例如:RJ11也是接頭的一種類型,不過它是電話上用的);RJ45頭根據(jù)線的排序不同分為兩種:一種是橙白、橙、綠白、藍、藍白、綠、棕白、棕,另一種是綠白、綠、橙白、藍、藍白、橙、棕白、棕。因此使用RJ45接頭的線也有兩種即:直通線、交叉線。
MCU控制板集成或外擴網(wǎng)卡模塊后,就能直接接入到計算機網(wǎng)絡(luò)。
2.各接口協(xié)議的比較和選擇
(1)本項目中串口通信應(yīng)用分析
第一,在本項目的應(yīng)用中,串口通信分為以下三種。
①積木塊內(nèi)部即MCU與外圍器件間的串口通信
對于積木塊內(nèi)部的串口通信,可選用的接口協(xié)議有UART、I2C、SPI、USART、1-wire、SDIO和GPIO等。
②積木塊之間的串口通信
對于積木塊之間的串口通信,可選用的接口協(xié)議有UART、I2C、SPI、USART、SDIO、CAN、GPIO和RJ45等。
③積木塊和上位機PC之間串口通信
對于積木塊和上位機PC之間串口通信,可選用的接口協(xié)議有UART、USB和GPIO等。
第二,在本項目的應(yīng)用中,串口通信按照拓?fù)浣Y(jié)構(gòu)可以分為以下三種。
①點對點通信??蛇x用的接口協(xié)議有UART、I2C、SPI、USART、1-wire、SDIO、CAN、GPIO和RJ45等。
②一主多從通信??蛇x用的接口協(xié)議有I2C、SPI、USART、1-wire、SDIO、CAN和GPIO等。
③多主從通信??蛇x用的接口協(xié)議有I2C、CAN和GPIO等。
(2)本項目中串口通信接口協(xié)議的選擇
在實現(xiàn)各種功能的積木塊時,遵循一條最基本的原則:兼顧積木塊實現(xiàn)的通用性和復(fù)雜性。即有選擇地將某幾個功能做到一個積木塊上,既減少積木塊的復(fù)雜性,又增強它的通用性。這樣根據(jù)需要做出幾種通用的積木塊,加上相應(yīng)的外圍器件就能實現(xiàn)相應(yīng)的某項功能。
具體實現(xiàn)一個積木塊還得選擇通用性較好的MCU和選定功能的相關(guān)器件,這二者是相互影響的。比如器件的接口是SPI的,MCU就應(yīng)該有相應(yīng)的SPI接口。反過來,先選定MCU,選擇器件時就要注意選擇MCU具有的接口類型。
實踐證明,通用性好的積木塊至少應(yīng)該具有UART、I2C、SPI和一定數(shù)量的GPIO接口。另外,為方便和上位機PC通信,最好有USB接口。
其余接口的實現(xiàn)有三種方式:
①在一些專用的積木塊上實現(xiàn)
②在通用性積木塊上通過GPIO配置實現(xiàn)
③通過接口轉(zhuǎn)換積木塊來實現(xiàn)
總之,在選擇串口通信接口協(xié)議時,以滿足積木塊基本功能為目的,適配MCU或外圍器件的接口類型。
參考文獻:
[1]趙振德,張建新.單片機原理及實驗/實訓(xùn).西安:西安電子科技大學(xué)出版社,2009.
[2]耿仁義.新編微機原理及接口技術(shù).天津:天津大學(xué)出版社,2006.
[3]趙宏,王小牛,任學(xué)惠.嵌入式系統(tǒng)應(yīng)用教程.北京:人民郵電出版社,2010.
[4]李群芳,肖看.單片機原理、接口及應(yīng)用——嵌入式系統(tǒng)技術(shù)基礎(chǔ).北京:清華大學(xué)出版社,2005.
[5]劉海成.AVR單片機原理及測控工程應(yīng)用——基于ATmega48/ATmega16.北京:北京航空航天大學(xué)出版社,2009.
河北省高等學(xué)校科學(xué)技術(shù)研究項目資助/Supported by science and technology research projects of colleges and universities in Hebei province 編號:Z2010316)
項目名稱:基于MCU的積木式數(shù)據(jù)傳輸實驗平臺的研究 項目編號:Z2010316
項目名稱:多用途廣適配模塊化單片機綜合開發(fā)實驗平臺 項目編號:Z2010315
河北省科技計劃項目 項目名稱:基于ARDUINO的物聯(lián)網(wǎng)和嵌入式技術(shù)開發(fā)和實訓(xùn)平臺的創(chuàng)建 項目編號:12210331