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