微處理器中常用的集成串行總線是通用異步接收器傳輸總線(UART)、串行通信接口(SCI)和通用串行總線(USB)等,這些總線在速度、物理接口要求和通信方法學(xué)上都有所不同。
本文詳細(xì)介紹了嵌入式系統(tǒng)設(shè)計(jì)的串行總線、驅(qū)動(dòng)器和物理接口的特性,并為總線最優(yōu)選擇提供性能比較和選擇建議。
由于在消費(fèi)類電子產(chǎn)品、計(jì)算機(jī)外設(shè)、汽車和工業(yè)應(yīng)用中增加了嵌入式功能,對(duì)低成本、高速和高可靠通信介質(zhì)的要求也不斷增長(zhǎng)以滿足這些應(yīng)用,其結(jié)果是越來越多的處理器和控制器用不同類型的總線集成在一起,實(shí)現(xiàn)與PC軟件、開發(fā)系統(tǒng)(如仿真器)或網(wǎng)絡(luò)中的其它設(shè)備進(jìn)行通信。目前流行的通信一般采用串行或并行模式,而串行模式應(yīng)用更廣泛。
微處理器中常用的集成串行總線是通用異步接收器傳輸總線、串行通信接口、同步外設(shè)接口(SPI)、內(nèi)部集成電路(I2C)和通用串行總線,以及車用串行總線,包括控制器區(qū)域網(wǎng)(CAN)和本地互連網(wǎng)(LIN)。為了說明方便起見,本文的闡述是基于微處理器的設(shè)計(jì)。
串行與并行相比
串行相比于并行的主要優(yōu)點(diǎn)是要求的線數(shù)較少。例如,用在汽車工業(yè)中的LIN串行總線只需要一根線來與從屬器件進(jìn)行通信,Dallas公司的1-Wire總線只使用一根線來輸送信號(hào)和電源。較少的線意味著所需要的控制器引腳較少。集成在一個(gè)微控制器中的并行總線一般需要8條或更多的線,線數(shù)的多少取決于設(shè)計(jì)中地址和數(shù)據(jù)的寬度,所以集成一個(gè)并行總線的芯片至少需要8個(gè)引腳來與外部器件接口,這增加了芯片的總體尺寸。相反地,使用串行總線可以將同樣的芯片集成在一個(gè)較小的封裝中。
另外,在PCB板設(shè)計(jì)中并行總線需要更多的線來與其它外設(shè)接口,使PCB板面積更大、更復(fù)雜,從而增加了硬件成本。此外,工程師還可以很容易地將一個(gè)新器件加到一個(gè)串行網(wǎng)絡(luò)中去,而且不會(huì)影響網(wǎng)絡(luò)中的其它器件。例如,可以很容易地去掉總線上舊器件并用新的來替代。
串行總線的故障自診斷和調(diào)試也非常簡(jiǎn)單,可以很容易地跟蹤網(wǎng)絡(luò)中一個(gè)有故障的器件并用新器件替換而不會(huì)干擾網(wǎng)絡(luò)。但另一方面,并行總線比串行速度快。例如,Rambus公司的“Redwood”總線速度可高達(dá)6.4GHz,而最高的串行速度不會(huì)超過幾個(gè)兆赫。
在工業(yè)和汽車應(yīng)用中常用的串行協(xié)議
1. UART
UART是一種通用串行數(shù)據(jù)總線,用于異步通信。該總線雙向通信,可以實(shí)現(xiàn)全雙工傳輸和接收。在嵌入式設(shè)計(jì)中,UART用來與PC進(jìn)行通信,包括與監(jiān)控調(diào)試器和其它器件,如EEPROM通信。
a. UART通信
UART首先將接收到的并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)來傳輸。消息幀從一個(gè)低位起始位開始,后面是7個(gè)或8個(gè)數(shù)據(jù)位,一個(gè)可用的奇偶位和一個(gè)或幾個(gè)高位停止位。接收器發(fā)現(xiàn)開始位時(shí)它就知道數(shù)據(jù)準(zhǔn)備發(fā)送,并嘗試與發(fā)送器時(shí)鐘頻率同步。如果選擇了奇偶,UART就在數(shù)據(jù)位后面加上奇偶位。奇偶位可用來幫助錯(cuò)誤校驗(yàn)。
在接收過程中,UART從消息幀中去掉起始位和結(jié)束位,對(duì)進(jìn)來的字節(jié)進(jìn)行奇偶校驗(yàn),并將數(shù)據(jù)字節(jié)從串行轉(zhuǎn)換成并行。UART也產(chǎn)生額外的信號(hào)來指示發(fā)送和接收的狀態(tài)。例如,如果產(chǎn)生一個(gè)奇偶錯(cuò)誤,UART就置位奇偶標(biāo)志。
b. 數(shù)據(jù)方向和通信速度
數(shù)據(jù)傳輸可以首先從最低有效位(LSB)開始。然而,有些UART允許靈活選擇先發(fā)送最低有效位或最高有效位(MSB)。
微控制器中的UART傳送數(shù)據(jù)的速度范圍為每秒幾百位到1.5Mb。例如,嵌入在ElanSC520微控制器中的高速UART通信的速度可以高達(dá)1.1152Mbps。UART波特率還受發(fā)送和接收線對(duì)距離(線長(zhǎng)度)的影響。
目前,市場(chǎng)上有只支持異步通信和同時(shí)支持異步與同步通信的兩種硬件可用于UART。前者就是UART名字本身的含義,在摩托羅拉微控制器中被稱為串行通信接口(SCI);Microchip微控制器中的通用同步異步收發(fā)器(USART)和在富士通微控制器中的UART是后者的兩個(gè)典型例子。
c. 計(jì)算機(jī)中的UART
UART是計(jì)算機(jī)中串行通信端口的關(guān)鍵部分。在計(jì)算機(jī)中,UART相連于產(chǎn)生兼容RS232規(guī)范信號(hào)的電路。RS232標(biāo)準(zhǔn)定義邏輯“1”信號(hào)相對(duì)于地為3到25伏,而邏輯“0”相對(duì)于地為-3到-25伏。所以,當(dāng)一個(gè)微控制器中的UART相連于PC時(shí),它需要一個(gè)RS232驅(qū)動(dòng)器來轉(zhuǎn)換電平。
2. 同步外設(shè)接口
同步外設(shè)接口(SPI)是由摩托羅拉公司開發(fā)的全雙工同步串行總線,該總線大量用在與EEPROM、ADC、FRAM和顯示驅(qū)動(dòng)器之類的慢速外設(shè)器件通信。
a. SPI通信
該總線通信基于主-從配置。它有以下4個(gè)信號(hào):
MOSI:主出/從入
MISO:主入/從出
SCK:串行時(shí)鐘
SS:從屬選擇
芯片上“從屬選擇”(slave-select)的引腳數(shù)決定了可連到總線上的器件數(shù)量。
在SPI傳輸中,數(shù)據(jù)是同步進(jìn)行發(fā)送和接收的。數(shù)據(jù)傳輸?shù)臅r(shí)鐘基于來自主處理器的時(shí)鐘脈沖,摩托羅拉沒有定義任何通用SPI的時(shí)鐘規(guī)范。然而,最常用的時(shí)鐘設(shè)置基于時(shí)鐘極性(CPOL)和時(shí)鐘相位(CPHA)兩個(gè)參數(shù),CPOL定義SPI串行時(shí)鐘的活動(dòng)狀態(tài),而CPHA定義相對(duì)于SO-數(shù)據(jù)位的時(shí)鐘相位。CPOL和CPHA的設(shè)置決定了數(shù)據(jù)取樣的時(shí)鐘沿。
b. 數(shù)據(jù)方向和通信速度
SPI傳輸串行數(shù)據(jù)時(shí)首先傳輸最高位。波特率可以高達(dá)5Mbps,具體速度大小取決于SPI硬件。例如,Xicor公司的SPI串行器件傳輸速度能達(dá)到5MHz。
c. SPI與UART比較
SPI通信快于UART通信,兩者都可以用在中等速度外設(shè)的通信中,例如非易失性EEPROM存儲(chǔ)器。然而,SPI更常用于EEPROM或數(shù)模變換器的通信中。
有些UART能支持SPI通信,在這種情況下,會(huì)用一個(gè)通用IO作為從屬選擇引腳。
3. I2C總線
I2C是由飛利浦公司開發(fā)的雙線同步總線。像SPI一樣,該總線可用來與EEPROM、ADC、DAC和LCD這類慢速器件進(jìn)行通信。
a. I2C通信
I2C是一個(gè)半雙工、多主總線,該總線網(wǎng)絡(luò)有一個(gè)或幾個(gè)主控器件和很多個(gè)從器件。信息由兩條串行線傳輸:串行數(shù)據(jù)線(SDA)和串行時(shí)鐘線(SCL)。圖1顯示了使用兩個(gè)主控和三個(gè)從器件相連接的例子。
網(wǎng)絡(luò)中的每一個(gè)器件都預(yù)指定一個(gè)7位或10位的地址。飛利浦會(huì)給器件制造商分配地址,也有一個(gè)特定的地址用于高速通信,以及一個(gè)通用呼叫地址用于與網(wǎng)絡(luò)中所有器件的通信。10位尋址的優(yōu)點(diǎn)是允許更多的器件(高達(dá)1024個(gè))布置在網(wǎng)絡(luò)中。然而,總線中器件的數(shù)目取決于總線的電容量,必須限制在400pF以內(nèi)。
主控器件發(fā)起數(shù)據(jù)傳送,并提供用于通信的時(shí)鐘信號(hào)。通信開始于SCL為高電平時(shí)SDA由高到低的轉(zhuǎn)換,緊接著是一個(gè)7位或10位的從地址,一個(gè)數(shù)據(jù)方向位(R/W),一個(gè)應(yīng)答位和停止?fàn)顟B(tài)。停止?fàn)顟B(tài)定義為在時(shí)鐘信號(hào)為高時(shí)數(shù)據(jù)線電平由低到高的轉(zhuǎn)換。每一個(gè)數(shù)據(jù)字節(jié)長(zhǎng)度為8位,單次傳送的字節(jié)數(shù)并沒有限制。
由于I2C是一個(gè)多主總線,因此可能有兩個(gè)或更多的主控器件同時(shí)試圖訪問總線,在時(shí)鐘信號(hào)為高電平時(shí)在總線上置“1”的主控器件贏得總線仲裁。
I2C有三種不同的運(yùn)行模式:標(biāo)準(zhǔn)、快速和高速模式。在使用快速和高速模式時(shí),可能某個(gè)從屬器件不能像主控器件那么快地處理數(shù)據(jù)。此時(shí),從屬器件會(huì)將SCL線拉至低電平來保持總線,這迫使主控器件進(jìn)入等待狀態(tài),直至從屬器件準(zhǔn)備就緒。
b. 數(shù)據(jù)方向和通信速度
數(shù)據(jù)傳輸首先從最高位開始。I2C總線設(shè)計(jì)用于三種數(shù)據(jù)傳輸速度,每個(gè)都向下兼容性:
低速,數(shù)據(jù)傳輸率為0到100kbps;
快速,數(shù)據(jù)傳輸率可以高達(dá)400kbps;
高速,數(shù)據(jù)傳輸率可以高達(dá)3.4Mbps。
c. I2C與SPI比較
I2C和SPI都能用于低速器件的通信,而SPI的數(shù)據(jù)傳輸速率高于I2C。此外,SPI具有一個(gè)內(nèi)在地址功能,不需要設(shè)計(jì)一個(gè)額外的寄存器來測(cè)試地址,從而減少軟件和硬件的設(shè)計(jì)開銷。
4. 控制器區(qū)域網(wǎng)絡(luò)
控制器區(qū)域網(wǎng)絡(luò)(CAN)是一個(gè)多主異步串行總線。由于它具有優(yōu)良的錯(cuò)誤處理機(jī)制及可靠的數(shù)據(jù)傳送性能,該總線在汽車工業(yè)中非常普遍,在高安全系數(shù)要求的醫(yī)療行業(yè)中也正在得到普及。
CAN最初由德國(guó)的Robert Bosch公司開發(fā),提供給汽車電子系統(tǒng)所用的低成本通信總線,現(xiàn)在已經(jīng)成為國(guó)際標(biāo)準(zhǔn),被采用為高速應(yīng)用的ISO11898標(biāo)準(zhǔn)和用于低速應(yīng)用的ISO11519標(biāo)準(zhǔn)。
a. CAN通信
當(dāng)總線空閑時(shí),任何CAN節(jié)點(diǎn)都可以開始數(shù)據(jù)發(fā)送。如果兩個(gè)或更多的節(jié)點(diǎn)同時(shí)開始發(fā)送,就使用標(biāo)識(shí)符來進(jìn)行按位仲裁以解決訪問沖突。CAN是一個(gè)廣播類型的總線,所有節(jié)點(diǎn)都接收總線上的數(shù)據(jù),硬件上的過濾機(jī)制決定消息是否提供給該接點(diǎn)用。
b. 四種消息幀的類型
數(shù)據(jù)幀:該幀從一個(gè)發(fā)送器承載數(shù)據(jù)到一個(gè)接收器。根據(jù)CAN規(guī)范有兩種數(shù)據(jù)幀格式,它們的唯一本質(zhì)區(qū)別在于標(biāo)識(shí)符的長(zhǎng)度:CAN標(biāo)準(zhǔn)幀,也稱為CAN2.0A,支持11位長(zhǎng)度的標(biāo)識(shí)符;另一個(gè)是CAN擴(kuò)展幀,也稱為CAN2.0B,支持29位長(zhǎng)度的標(biāo)識(shí)符。圖2顯示了兩種規(guī)范的CAN數(shù)據(jù)幀。
遠(yuǎn)程幀:此幀由一個(gè)接收CAN節(jié)點(diǎn)發(fā)送,用來請(qǐng)求帶有遠(yuǎn)程幀中規(guī)定的標(biāo)識(shí)符的數(shù)據(jù)幀。
錯(cuò)誤幀:此幀將任何總線錯(cuò)誤通知其它單元,在接收到這個(gè)幀時(shí)發(fā)送器會(huì)自動(dòng)進(jìn)行消息重發(fā)。
超載幀:超載幀由一個(gè)忙的CAN節(jié)點(diǎn)送出,以請(qǐng)求在前后數(shù)據(jù)幀之間增加一個(gè)額外的延遲。
c. CAN硬件術(shù)語(yǔ)
基本CAN(Basic CAN)控制器:這是一種廉價(jià)的CAN控制器,具有有限的發(fā)送/接收消息緩沖器,以及有限的CAN消息過濾機(jī)制。
完全CAN(Full CAN)控制器:完全CAN是一個(gè)高成本、高性能的CAN控制器,具有能緩沖8個(gè)或更多消息的緩沖器用于接收和發(fā)送。例如,富士通的集成CAN微控制器能提供16個(gè)消息緩沖器用于接收和發(fā)送。此外,富士通的MB90443微控制器能靈活地將兩個(gè)CAN控制器的消息緩沖器組合在一個(gè)中,以形成能緩沖32個(gè)消息的緩沖器。
標(biāo)準(zhǔn)CAN控制器:該CAN控制器能夠處理僅有11位標(biāo)識(shí)符的消息。
擴(kuò)展CAN控制器:該控制器能夠處理含有11位和29位標(biāo)識(shí)符的消息。
時(shí)間觸發(fā)CAN(TTCAN)控制器:該CAN控制器根據(jù)時(shí)間和事件的觸發(fā)來安排CAN消息,增強(qiáng)了CAN網(wǎng)絡(luò)的總體性能和行為的確定性。
d. 數(shù)據(jù)方向和通信速度
數(shù)據(jù)字節(jié)的傳輸首先從最高位開始。一個(gè)8位的數(shù)據(jù)字節(jié)能在一次發(fā)送中進(jìn)行傳輸,最大的CAN總線速度是1Mbps。
e. CAN在汽車中的應(yīng)用
圖3的例子顯示了CAN網(wǎng)絡(luò)是如何通過富士通的16位CAN微控制器在汽車中應(yīng)用。
f. 物理接口
大多數(shù)CAN微控制器需要一個(gè)外部收發(fā)器來連接物理總線。目前市場(chǎng)上提供以下一些收發(fā)器:
高速CAN收發(fā)器有飛利浦的82C251,TI的SN65/75LBC031,Bosch的CF150,C250,Unitrode的UC5350;
低速CAN收發(fā)器有飛利浦82C252、TJA1053,西門子TLE 6252G;
單線CAN收發(fā)器有飛利浦AU5790,英飛凌TLE 6255,Delphi DK166153。
5.本地互連網(wǎng)絡(luò)
本地互連網(wǎng)絡(luò)(LIN)是一個(gè)低成本、單線串行總線,能執(zhí)行全雙工串行通信。LIN用在汽車的分布式電子系統(tǒng)中,例如與智能傳感器和傳動(dòng)器的通信。LIN協(xié)議能采用低成本的UART/SCI接口來實(shí)現(xiàn),幾乎所有的微控制器都提供這些接口。
a. LIN通信
LIN網(wǎng)絡(luò)由一個(gè)主控和多個(gè)從器件組成,主控器件發(fā)起所有的通信。
所有節(jié)點(diǎn)執(zhí)行包括發(fā)送和接收任務(wù)在內(nèi)的從屬通信任務(wù)。此外,主節(jié)點(diǎn)執(zhí)行主控發(fā)送任務(wù),主控任務(wù)能決定什么時(shí)候、哪一個(gè)幀將在總線上傳輸。在該方式中,沒有總線仲裁,并且在最壞情況下每個(gè)消息的時(shí)間很容易計(jì)算。當(dāng)一個(gè)消息幀發(fā)送時(shí),在接收和過濾標(biāo)識(shí)符后,僅有一個(gè)從器件得到激活。
總線上的所有消息以幀的形式發(fā)送,幀由一個(gè)幀頭和響應(yīng)字段(response field)組成。主控器件始終在總線上發(fā)送幀頭,幀頭至少由一個(gè)13位字段、一個(gè)同步字節(jié)和一個(gè)6位標(biāo)識(shí)符組成,該標(biāo)識(shí)符的范圍為0到63。響應(yīng)字段由兩個(gè)、四個(gè)和八個(gè)數(shù)據(jù)字節(jié)和具有倒置8位和的校驗(yàn)和字段,以及所有的數(shù)據(jù)字節(jié)和標(biāo)識(shí)符組成。
圖4顯示了在一個(gè)消息幀上所有字段的排列順序。
b. 數(shù)據(jù)方向和通信速度
數(shù)據(jù)字節(jié)的傳送首先從LSB開始,LIN總線的最大速度是20kbps。
c. 物理接口
只有很少微控制器集成有專用的LIN硬件,大多數(shù)供應(yīng)商用SCI或UART來提供支持。因?yàn)長(zhǎng)IN物理層是一個(gè)從汽車自診斷用ISO9141標(biāo)準(zhǔn)引出的單線12V總線,所以需要一個(gè)外部LIN收發(fā)器來轉(zhuǎn)換電平。例如當(dāng)前市場(chǎng)上已有供貨的摩托羅拉IMC33689 LIN和英飛凌公司的TLE6259-2G收發(fā)器。
d. CAN與LIN的比較
CAN和LIN兩者都使用在汽車工業(yè)中。CAN用于汽車中的高速和低速網(wǎng)絡(luò),而LIN僅用于低速網(wǎng)絡(luò),如門控制單元。在很多方面,CAN比LIN更貴也更可靠,必需在可靠性和為設(shè)計(jì)硬件與軟件支付額外成本之間進(jìn)行權(quán)衡。由于LIN的成本較低且容易在UART中實(shí)現(xiàn),故在低速網(wǎng)絡(luò)應(yīng)用方面LIN有望替代CAN。
6. 其它通用串行總線
用在微控制器工業(yè)中的其它總線有RS422、RS485、USB和Microwire.
RS422和RS485通信可以用一個(gè)UART來執(zhí)行。因此,在用于這些總線時(shí)微控制器中不需要增加另外的硬件。
USB總線的普及性極大地鼓舞了微控制器制造商把USB控制器集成到他們的微控制器中。將外圍器件加到USB總線中是很容易的,并不需要重自舉系統(tǒng)。Cypress半導(dǎo)體公司和其它業(yè)界主導(dǎo)廠商都提供各種系列USB芯片來滿足市場(chǎng)的需要。
國(guó)家半導(dǎo)體公司(NSC)開發(fā)的單線總線Microwire用在許多微控制器和像EEPROM這類非易失性存儲(chǔ)器,以及ADC中。該總線能像SPI一樣提供同步通信,可用在使用SPI的地方。有些微控制器供應(yīng)商通過使用UART來支持Microwire總線。
FlexRay是一種在汽車工業(yè)中即將推出的新型總線,可用在使用CAN總線的地方,該總線的速度是CAN總線的10倍,可以達(dá)到10Mbps。目前微控制器制造商正在努力開發(fā)具有FlexRay總線的器件。
總線選擇準(zhǔn)則
不同的應(yīng)用在選擇總線的標(biāo)準(zhǔn)方面并不同,下面是一些進(jìn)行總線選擇的通用參考準(zhǔn)則:
1. 評(píng)估使用不同串行總線在網(wǎng)絡(luò)上連接各種器件的系統(tǒng)成本。例如,在汽車應(yīng)用中,一個(gè)只需要控制功能的系統(tǒng)可以用像LIN這類低成本的串行總線來管理。
2. 在效率、速度和可靠性方面確定對(duì)你最重要的性能。例如,對(duì)于一個(gè)安全關(guān)鍵系統(tǒng)來講,可靠性是極為重要的,故而CAN是較好的選擇。
3. 確定在網(wǎng)絡(luò)上將連接多少器件,以及總線將可能具有的電容量。有些串行總線對(duì)連在網(wǎng)絡(luò)上的器件數(shù)目有限制。
4. 注意器件間的距離,有些串行總線只支持短距離通信。
5. 如果用在汽車中,CAN或LIN是較好的選擇。由于它們具有很強(qiáng)的魯棒性,因此具有較強(qiáng)的容故障能力和傳輸可靠性。
責(zé)任編輯:gt
-
驅(qū)動(dòng)器
+關(guān)注
關(guān)注
52文章
8236瀏覽量
146364 -
接口
+關(guān)注
關(guān)注
33文章
8598瀏覽量
151153 -
總線
+關(guān)注
關(guān)注
10文章
2881瀏覽量
88085
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論