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