一文了解嵌入式系統中常用外圍接口
什么是接口
在嵌入式系統中,接口是指用于將各種集成電路與其他外圍設備交互連接的通信通路或總線,是微處理器CPU與外部世界的連接部件,是CPU與外界進行信息交換的中轉站。
為什么要在CPU與外設之間設置接口?在CPU與外設之間設置接口主要有4個原因:
1. CPU與外設二者的信號不兼容,包括信號線的功能定義、邏輯定義和時序關系。
2. CPU與外設的速度不匹配,CPU的速度快,外設的速度慢。
3. 若不通過接口,而由CPU直接對外設的操作實施控制,會使CPU處于窮于應付與外設打交道之中,大大降低CPU的效率。
4. 若外設直接由CPU控制,會使外設的硬件結構依賴于CPU,對外設本身的發展不利。
常見接口介紹
01UART接口
通用異步收發傳輸器(Universal Asynchronous Receiver-Transmitter),通常稱作UART,是一種全雙工異步收發傳輸器,是電腦硬件的一部分。將數據在串行通信與并行通信間作傳輸轉換,作為并行輸入成為串行輸出的芯片,通常集成于其它通訊接口的連結上。
UART最好的一點是它只使用兩根線就可以在設備之間傳輸數據。在UART通信中,兩個UART直接相互通信。發送UART將來自CPU等控制設備的并行數據轉換為串行形式,并將其串行發送到接收UART上,接收UART然后將串行數據轉換回接收設備的并行數據。在兩個UART之間傳輸數據只需要兩根線。數據從發送UART的Tx引腳流向接收UART的Rx引腳:如下圖1
圖 1 uart通信連接圖
UART通信協議數據流描述如下:
(1)起始位:先發出—個邏輯“0”的信號,表示傳輸字符的開始。
(2)數據位:緊接著起始位之后。數據位的個數可以是4、5、6、7、8等,構成一個字符。通常采用ASCII碼。
(3)奇偶校驗位:數據位加上這一位后,使得“1”的位數應為偶數(偶校驗)或奇數(奇校驗),以此來校驗資料傳送的正確性。
(4)停止位:它是一個字符數據的結束標志??梢允?位、1.5位、2位的高電平,停止位個數越多,數據傳輸越穩定,但是數據傳輸速度也越慢。
(5)空閑位:處于邏輯“1”狀態,表示當前線路上沒有數據傳送。
(6)波特率:數據傳輸的速率。有以下幾個檔位: 300、600、1200、2400、4800、9600、19200、38400、43000、56000、57600、115200。在數據傳輸和接收雙方,需要預先統—波特率,以便正確的傳輸數據。數據傳輸過程如下圖2
圖 2 uart協議數據流
UART通信原理:
發送數據過程:空閑狀態,線路處于高電位,當收到發送數據指令后,拉低線路一個數據位的時間T,接著數據按低位到高位依次發送,數據發送完畢后,接著發送奇偶校驗位和停止位(停止位為高電位),一幀數據發送結束。
接收數據過程:空閑狀態,線路處于高電位;當檢測到線路的下降沿(線路電位由高電位變為低電位)時說明線路有數據傳輸,按照約定的波特率從低位到高位接收數據,數據接收完畢后,接著接收并比較奇偶校驗位是否正確,如果正確則通知后續設備準備接收數據或存入緩存。
在嵌入式設計中,UART用于主機與輔助設備通信,如汽車音響與外接AP之間的通信,與PC機通信包括與監控調試器和其他器件,如EEPROM通信。在BLE藍牙模塊中,UART透傳幾乎成為一個標配功能,串口透傳藍牙模塊使用起來極其方便,開發人員不需要了解藍牙協議棧是如何實現的,只需使用串口藍牙模塊就可以輕松開發藍牙無線傳輸產品。深圳信馳達科技作為一家無線物聯網模塊廠商,提供基于TI CC264x、Silicons Labs EFR32BG22、Nordic nRF52832等方案的藍牙串口透傳模塊,支持BLE 4.2/5.0協議,具有工業級、小尺寸、低功耗的特點,可以幫助用戶以最低的成本和最快的速度開發藍牙應用。
02 I2C接口
I2C (Inter Integrated Circuit)總線是飛利浦(PHILIPS)公司開發的兩線式串行、半雙工的總線,主要用于近距離、低速的芯片之間的通信。是微電子通信控制領域廣泛采用的一種總線標準。它是同步通信的一種特殊形式,具有接口線少,控制方式簡單,器件封裝形式小等優點。
I2C可在多個主站和多個從站之間僅使用兩條線路傳輸信息,即SDA(串行數據)和SCL(串行時鐘)。串行的8位雙向數據傳輸速率在標準模式下可達100Kbit/s,快速模式下可達400Kbit/s,高速模式下可達3.4Mbit/s。設備連接如圖3
圖 3 I2C總線主從設備連接
I2C通信協議工作原理:
I2C總線在進行數據傳送時,時鐘線SCL為低電平期間發送器向數據線上發送一位數據,在此期間數據線上的信號允許發生變化,時鐘線SCL為高電平期間接收器從數據線上讀取一位數據,在此期間數據線上的信號不允許發生變化,必須保持穩定。
起始信號:SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號。
終止信號:SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號。
起始信號和停止信號都是由主機發出,起始信號產生后總線處于占用狀態,停止信號產生后總線被釋放,處于空閑狀態。
空閑時,SCL與SDA都是高電平。過程如下圖5
圖 5 起始信號與終止信號
應答信號:出現在1個字節傳輸完成之后,即第9個SCL時鐘周期內,此時主機需要釋放SDA總線,把總線控制權交給從機,由于上拉電阻的作用,此時總線為高電平,如果從機正確的收到了主機發來的數據,會把SDA拉低,表示應答響應。
非應答信號:當第9個SCL時鐘周期時,SDA保持高電平,表示非應答信號。
每一個字節必須保證是8位長度。數據傳送時,先傳送最高位(MSB),每一個被傳送的字節后面都必須跟隨一位應答位(即一幀共有9位))。如果一段時間內沒有收到從機的應答信號,則自動認為從機己正確接收到數據,主機就發送停止信號結束此次通信。數據傳輸格式如圖6所示。
圖 6 數據傳輸格式
I2C通常用于單片機外設或多個單片機之間通訊,I2C接口具有硬件簡單、軟件編程容易等特點。
03USB接口
USB的英文全稱為Universal Serial Bus,中文是通用串行總線,它是一種快速雙向的同步傳輸并可以進行熱拔插的串行接口。
USB接口使用方便,它可以連接多個不同的設備,而過去的串口和并口只能接一個設備。速度快是USB技術的突出特點之一。全速USB接口的最高傳輸率可達12Mb/s,比串口快了整整100倍,而執行USB 2.0標準的高速USB接口速率更是達到了480Mb/s,最新的USB 3.1支持高達10Gb/s的傳輸速率,USB發展歷程如表所示。
表 1 USB發展歷程
常見的4種USB實物圖如下:
圖 7 USB實物圖
USB總線作為一種高速串行總線,它具有支持即插即用和熱插拔功能、傳送速度較快、使用方便、成本也相對低廉等特點,是近年來最流行的外圍設備接口。USB接口技術被廣泛地應用于計算機與外設的數據傳輸,尤其是儀表、儀器等便攜式設備通常都采用USB接口。
04SPI接口
SPI是Serial Peripheral Interface的縮寫,顧名思義就是串行外圍設備接口。SPI接口主要應用在EEPROM、FLASH、實時時鐘、AD轉換器、還有數字信號處理器和數字信號解碼器之間。
SPI是一種高速全雙工同步的通信總線,并且在芯片的管腳上只占用四根線,節約了芯片的管腳,同時為PCB的布局上節省空間,提供方便。
它有四條主線,如下所述:
MOSl -主輸出從輸入,用于將數據從主設備傳輸到從設備。
MISO-主輸入從輸出,用于將數據從從設備傳輸到主設備。
SCLK-串行時鐘,它是主站輸出的時鐘,用于同步。
SS/CS-從設備選擇,主設備使用它從多個從設備中選擇一個從設備。它插入低電平有效信號以選擇特定的從器件。設備連接如圖8
圖 8 SPI主從設備連接
SPI數據傳輸在一個SPI時鐘周期內,會完成如下操作:
1) 主機通過MOSI線發送1位數據,從機通過該線讀取這1位數據;
2) 從機通過MISO線發送1位數據,主機通過該線讀取這1位數據。
這是通過移位寄存器來實現的。主機和從機各有一個移位寄存器,且二者連接成環。隨著時鐘脈沖,數據按照從高位到低位的方式依次移出主機寄存器和從機寄存器,并且依次移入從機寄存器和主機寄存器。當寄存器中的內容全部移出時,相當于完成了兩個寄存器內容的交換。數據傳輸如圖9
圖 9 SPI數據傳輸
在SPI操作中,最重要的兩項設置就是時鐘極性(CPOL)和時鐘相位(CPHA)。時鐘極性設置時鐘空閑時的電平,時鐘相位設置讀取數據和發送數據的時鐘沿。
主機和從機的發送數據是同時完成的,兩者的接收數據也是同時完成的。所以為了保證主從機通信正確,應使得它們的SPI具有相同的時鐘極性和時鐘相位。
如果CPOL=0,串行同步時鐘的空閑狀態為低電平;
如果CPOL=1,串行同步時鐘的空閑狀態為高電平。
如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數據被采樣;
如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數據被采樣。
SPI主模塊和與之通信的外設時鐘相位和極性應該一致。下圖為4種模式下的通信過程圖。
圖 10 CPOL=0,CPHA=0
圖 11 CPOL=0,CPHA=1
圖 12 CPOL=1,CPHA=0
圖 13 CPOL=1,CPHA=1
SPI接口主要應用在EEPROM、FLASH、實時時鐘、網絡控制器、LCD顯示驅動器、AD轉換器,數字信號處理器、數字信號解碼器等設備之間。
05ADC接口
在儀器儀表系統中,常常需要將檢測到的連續變化的模擬量如:溫度、壓力、流量、速度、光強等轉變成離散的數字量,才能輸入到計算機中進行處理。這些模擬量通過傳感器轉變成電信號(一般為電壓信號),經過放大器放大后,就需要經過一定的處理變成數字量。實現模擬量到數字量轉變的設備通常稱為模數轉換器(ADC),簡稱A/D。
A/D轉換的過程是采樣、保持、量化、編碼的過程,構成ADC的基本思想是將輸入的模擬電壓與基準電壓相比較(直接或間接比較),轉換成數字量輸出。在ADC中,有并聯比較型、逐次逼近型、雙積分三種ADC。
使用ADC時最關心的是轉換精度和轉換時間。轉換精度受芯片外部影響的因素主要有:電源電壓和參考電壓的穩定度、運算放大器的穩定性、環境溫度等,受芯片本身影響因素有:分辨率、量化誤差、相對誤差、線性誤差等。
采樣、保持:所謂采樣就是將一個時間上連續變化的模擬量轉化為時間上離散變化的模擬量。將采樣結果儲存起來,直到下次采樣,這個過程叫做保持。
量化、編碼:模擬信號通過ADC轉換成數字信號的這一過程稱為量化,由于量化輸出的數字信號位數有限,所以輸出的數字信號和采樣得到的模擬信號會有一個誤差,稱為量化誤差,對于一個N位ADC來說,假設其滿量程電壓為Vref,Vref被ADC分為2N個區間,區間寬度用LSB表示LSB=Vref/2N。
06CAN總線接口
CAN總線全稱Controller Area Network,中文名控制器局域網絡。是一種串行、同步、半雙工的總線。由德國BOSCH公司開發的,是國際上應用最廣泛的現場總線之一。
CAN總線主要特點如下:
? 兩根信號線,差分信號。
? 最高速率可達到1Mbps。
? CAN控制器內建了強大的檢錯和處理機制,容錯能力強。
? 一幀CAN消息最多傳輸8字節用戶數據。
? 具有總線仲裁機制,可以組建多主系統。
CAN通信協議如下:
CAN一共規定了5種類型的幀,幀也稱為報文。數據幀在CAN通信中最主要,也最復雜。數據幀以一個顯性位(邏輯0)開始,以7個連續的隱性位(邏輯1)結束。
載波偵聽(CSMA):總線上的每一個節點在企圖發送報文前,必須要監聽總線,當總線處于空閑時,才可以發送。
仲裁(CD+AMP):通過預定編程好的報文優先級逐位仲裁來解決碰撞,報文優先級位于每個報文的標識域。更高級別優先級標識的報文總是能獲得總線訪問權,即:標識符中最后保持邏輯高電平的會繼續傳輸,因為它具有更高的優先級。
圖 14 CAN總線數據幀結構
標準CAN:只有11位標識符,用來確定報文的優先級,此域的數值越小,優先級越高。如圖15
圖 15 標準CAN-11位標識符
擴展CAN:具有29位標識符。如圖16
圖 16 擴展CAN-29位標識符
CAN總線在工控領域主要使用低速CAN 即ISO11898-3標準,在汽車領域中使用125Kbps的高速CAN。CAN協議廣泛用于所有類型的汽車行業應用,包括乘用車、重型貨車和多用途車輛以及農用車輛。
深圳市信馳達科技有限公司(RF-Star)是一家專注于射頻通信方案的高科技公司,2010年即獲得美國TI德州儀器公司的認證,是其低功耗無線通信芯片的授權開發商。該公司提供物聯網無線模塊和完整應用方案,包括BLE、Wi-Fi、Wi-SUN、LoRa、ZigBee、Thread等。欲了解更多信息,請訪問公司網站www.ycccsm.com或關注微信公眾號“信馳達科技”,購買樣品請在淘寶APP上搜索“信馳達科技”進入官方店鋪購買。