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