我們將簡要介紹七個(gè)串行接口:SIO、UART、SSP(SPI)、I2C、CAN、USB和EtherMAC。雖然每個(gè)接口都有幾個(gè)不同的操作模式,但我們只介紹一個(gè)典型的模式。
1. SIO(串行輸入輸出)
最基本的串行接口是SIO,它由一個(gè)主器件和一個(gè)從器件通過一條數(shù)據(jù)線和一條時(shí)鐘線采用一對(duì)一的方式連接組成。主器件把傳輸時(shí)鐘提供給從器件。
接口將被其控制電路中的寄存器指定為主從器件。在數(shù)據(jù)傳輸之前,應(yīng)該設(shè)置另一個(gè)寄存器以確定哪一個(gè)成為發(fā)射器或接收器。
如果數(shù)據(jù)集為8位,則發(fā)出8個(gè)時(shí)鐘來同步傳輸數(shù)據(jù)。主器件的指令隨時(shí)鐘信號(hào)傳輸至從器件。這就是說,當(dāng)主器件向從器件發(fā)送或接收數(shù)據(jù)時(shí),主器件將通過發(fā)出時(shí)鐘來啟動(dòng)傳輸請(qǐng)求。由于數(shù)據(jù)傳輸方向是預(yù)先定義的,因此主器件將在必要時(shí)向從器件發(fā)出時(shí)鐘,并執(zhí)行與從器件之間的數(shù)據(jù)發(fā)送或接收,與時(shí)鐘同步。
數(shù)據(jù)通常是8位串行數(shù)據(jù)??梢栽跀?shù)據(jù)末尾添加一個(gè)奇偶校驗(yàn)位,這將使得長度總共為9位。在這種情況下,從器件接口必須在接收串行數(shù)據(jù)之前已經(jīng)知道串行數(shù)據(jù)有一個(gè)奇偶校驗(yàn)位。
2. UART(通用異步收發(fā)器)
UART是異步串行接口,兩個(gè)接口之間沒有時(shí)鐘信號(hào)。因此在UART中,主從器件的定義沒有意義。
雖然消除時(shí)鐘信號(hào)的目的是防止噪聲問題,但這將造成另一個(gè)問題。如前所述,來自主器件的命令將通過SIO中的時(shí)鐘信號(hào)發(fā)送到從器件。但是由于UART沒有任何時(shí)鐘信號(hào),UART接口無法接受任何命令。因此,接收器必須等待數(shù)據(jù)到達(dá),然后隨時(shí)正確接收數(shù)據(jù)。
為了使接收器能夠識(shí)別傳輸數(shù)據(jù)的開始和結(jié)束,發(fā)射器應(yīng)對(duì)傳輸數(shù)據(jù)的開始或結(jié)束數(shù)據(jù)設(shè)置一些指示。起始位是數(shù)據(jù)“0”,停止(結(jié)束)位是數(shù)據(jù)“1”,它們分別添加在傳輸數(shù)據(jù)之前和之后。
在數(shù)據(jù)傳輸之前,發(fā)射器或接收器的分配已經(jīng)完成。如果數(shù)據(jù)線變?yōu)椤?”(數(shù)據(jù)線通常為“1”),則接收器會(huì)識(shí)別到發(fā)射器將要發(fā)送數(shù)據(jù)并準(zhǔn)備開始接收傳輸數(shù)據(jù)。在數(shù)據(jù)傳輸過程中,由于沒有時(shí)鐘信號(hào),很難理解一個(gè)位的時(shí)間間隔有多長。如果發(fā)射器發(fā)送了兩個(gè)“0”(“00”),則接收器不可能在發(fā)射器和接收器之間沒有任何約定的情況下識(shí)別出傳輸數(shù)據(jù)只是一個(gè)“0”或“00”。
關(guān)于該約定的典型例子是,接收器用頻率比發(fā)射器中的發(fā)送時(shí)鐘快16倍的時(shí)鐘接收數(shù)據(jù),該發(fā)射器應(yīng)在數(shù)據(jù)傳輸之前預(yù)先定義。一旦接收器檢測到起始位,它將每隔16個(gè)時(shí)鐘捕獲一次數(shù)據(jù)。
在UART和SIO中都可以添加奇偶校驗(yàn)位。
UART中可能有兩個(gè)以上的接口。在這種情況下,只有一個(gè)接口能分配為主器件,其它接口作為從器件。接收器將應(yīng)答返回給發(fā)射器,使得對(duì)接功能可在UART上工作。
3. SSP(SPI)(同步串行端口(串行外圍接口))
SSP是同步串行接口的總稱,是指包括SPI在內(nèi)的幾種不同的數(shù)據(jù)傳輸方法。
SPI有一個(gè)主器件和多個(gè)從器件,這就是說SPI具有星型結(jié)構(gòu)。所有接口共享兩條數(shù)據(jù)線。其中一條是主器件發(fā)送數(shù)據(jù)線(SPDO),另一條是主器件接收數(shù)據(jù)線(SPDI)。通過使用這兩條數(shù)據(jù)線,SPI可以方便地控制從器件接口,同時(shí)可輕松地增加從器件接口的數(shù)量,因?yàn)閿?shù)據(jù)線上不會(huì)發(fā)生數(shù)據(jù)沖突。一條時(shí)鐘線(SPCLK)將由主器件和所有從器件以及數(shù)據(jù)線共享。
主器件具有選擇線路(SPFSSn)來訪問其中一個(gè)從器件以便與主器件進(jìn)行通信。一條選擇線路連接到一個(gè)從器件,因此主器件的選擇線路數(shù)量與從器件的相同。
4. I2C(內(nèi)部集成電路)
即使網(wǎng)絡(luò)中存在多個(gè)從器件,在I2C中也只需要兩條線路,即一條數(shù)據(jù)線和一條時(shí)鐘線。I2C還允許多個(gè)主器件結(jié)構(gòu)(可以分配多個(gè)主器件)。在每個(gè)接口控制電路中設(shè)置一個(gè)寄存器,可以完成主從器件的分配。I2C是同步接口。
設(shè)計(jì)I2C數(shù)據(jù)線和時(shí)鐘線以實(shí)現(xiàn)多個(gè)主器件結(jié)構(gòu)。所有接口的輸出只有“0”或高阻狀態(tài),數(shù)據(jù)和時(shí)鐘的高電平由線路上的上拉元件(“線與”結(jié)構(gòu))提供。每個(gè)接口的輸出緩沖區(qū)只有NMOS晶體管,沒有PMOS晶體管。必要時(shí),這些晶體管變?yōu)椤皩?dǎo)通”,接口的輸出將為“0”。如果這些NMOS晶體管變?yōu)椤瓣P(guān)斷”,則接口的輸出變?yōu)楦咦锠顟B(tài)。由于上拉元件連接到每條線路,如果連接到信號(hào)線的接口的所有輸出變成高Z狀態(tài),則該線路被上拉直至VDD并變成“1”。這是“線與”結(jié)構(gòu)。
在“線與”連接中,數(shù)據(jù)“0”比數(shù)據(jù)“1”強(qiáng)。也就是說,如果兩個(gè)接口分別輸出“0”和“1”(高阻狀態(tài)),則該線路的數(shù)據(jù)變?yōu)椤?”。該強(qiáng)度優(yōu)先級(jí)實(shí)現(xiàn)了對(duì)于防止多個(gè)主器件系統(tǒng)中發(fā)生數(shù)據(jù)沖突的仲裁方式??紤]兩個(gè)主器件同時(shí)向數(shù)據(jù)線輸出數(shù)據(jù)的情況,如果其中一個(gè)數(shù)據(jù)為“0”,另一個(gè)數(shù)據(jù)為“1”,則后一個(gè)接口將立即知道其它輸出為“0”,并根據(jù)自己的判斷立即停止線路訪問。結(jié)果是前一個(gè)接口將保留使用線路的優(yōu)先級(jí),后一個(gè)接口將在知道前一個(gè)接口的數(shù)據(jù)傳輸結(jié)束后恢復(fù)數(shù)據(jù)傳輸。這種仲裁方式使得多個(gè)主器件系統(tǒng)成為可能。
5. CAN(控制器區(qū)域網(wǎng)絡(luò))
CAN是一種主要用于汽車內(nèi)部通信的網(wǎng)絡(luò)。CAN的結(jié)構(gòu)致力于抗噪聲。它采用差分?jǐn)?shù)據(jù)線結(jié)構(gòu),不需要任何時(shí)鐘線。所以CAN是異步接口,盡管CAN僅由與I2C一樣的兩條信號(hào)線構(gòu)成。
雙數(shù)據(jù)線即所謂的CAN.H和CAN.L。兩個(gè)數(shù)據(jù)信號(hào)之間的電壓差表示數(shù)據(jù);較高電壓的CAN.H和較低電壓的CAN.L定義數(shù)據(jù)“0”,而這些信號(hào)的相同電壓電平定義數(shù)據(jù)“1”。這些定義實(shí)現(xiàn)了高的抗噪性,因?yàn)樵肼晫⒁韵嗤姆绞酵瑫r(shí)影響兩條線路。
CAN接口有一種特殊的同步方式,不需要任何時(shí)鐘,主從器件之間沒有區(qū)別。因此,信號(hào)線上存在數(shù)據(jù)沖突的可能性,所以每個(gè)接口應(yīng)設(shè)置優(yōu)先級(jí)。接口之間的同步按以下方式進(jìn)行。首先,發(fā)射器將在發(fā)送數(shù)據(jù)之前傳輸起始位“0”。因?yàn)榈侥壳盀橹?,信?hào)線上的數(shù)據(jù)一直是“1”,所以其它接口將檢測到這個(gè)“0”數(shù)據(jù),并將它們自己的時(shí)鐘同步到數(shù)據(jù)“0”的邊緣。當(dāng)接收到傳輸?shù)臄?shù)據(jù)時(shí),接收器將其時(shí)鐘定時(shí)調(diào)整到數(shù)據(jù)“0”的任意邊緣。當(dāng)數(shù)據(jù)“1”繼續(xù)時(shí),這個(gè)方法將出現(xiàn)問題,因?yàn)閿?shù)據(jù)“1”在CAN.H或CAN.L上沒有邊緣。連續(xù)的數(shù)據(jù)序列“1”無邊緣,并且接收器可能與發(fā)射器失去同步。其解決方案是采用“位填充”技術(shù),這種情況下,在五個(gè)連續(xù)的“1”數(shù)據(jù)之后插入一個(gè)數(shù)據(jù)“0”,這僅用于發(fā)射器的同步。接收器將使用數(shù)據(jù)“0”來同步其時(shí)鐘,并將其從接收的數(shù)據(jù)中消除。
如前所述,應(yīng)對(duì)每個(gè)接口設(shè)置優(yōu)先級(jí),以防止數(shù)據(jù)沖突。為此,每個(gè)CAN接口都有標(biāo)識(shí)符(11位)。標(biāo)識(shí)符可用于確定每個(gè)接口傳輸數(shù)據(jù)的優(yōu)先級(jí),以防止數(shù)據(jù)沖突。
實(shí)際上,當(dāng)數(shù)據(jù)“0”和數(shù)據(jù)“1”從不同的接口輸出到數(shù)據(jù)線時(shí),數(shù)據(jù)“0”在CAN中的傳輸類似于在I2C中的傳輸。在起始位之后和傳輸數(shù)據(jù)之前,發(fā)射器將傳輸其自己的標(biāo)識(shí)符。當(dāng)兩個(gè)接口同時(shí)發(fā)送它們的標(biāo)識(shí)符時(shí),其中一個(gè)接口將取得優(yōu)先級(jí),輸出“0”,另一個(gè)輸出“1”。前一個(gè)接口可以占用數(shù)據(jù)線,在另一個(gè)接口之前完成發(fā)送。
6. USB 2.0(通用串行總線2.0)
USB 2.0是一種非常流行的串行接口,特別是對(duì)于個(gè)人電腦而言。眾所周知,USB 2.0被廣泛應(yīng)用于各種應(yīng)用,比如鍵盤、鼠標(biāo)、打印機(jī)、閃存、硬盤、揚(yáng)聲器等接口。
USB 2.0有三種速度等級(jí),分別是低速(1.5Mbps)、全速(12Mbps)和高速(480Mbps)。
USB接口采用分層結(jié)構(gòu)。在USB中,主器件稱為“主機(jī)”,從器件稱為“設(shè)備”。USB 2.0是一個(gè)星型網(wǎng)絡(luò),其中一個(gè)“主機(jī)”控制著許多“設(shè)備”。例如,PC是主機(jī),設(shè)備可以是通過USB電纜連接到PC的任何設(shè)備,比如鍵盤、鼠標(biāo)等。
USB的顯著特點(diǎn)是即插即用。連接或卸下USB設(shè)備時(shí),不必關(guān)閉電腦。這就是USB變得如此流行的原因之一。
為了使USB設(shè)備能夠很容易地連接到網(wǎng)絡(luò)或從網(wǎng)絡(luò)中移除,USB主機(jī)必須做一些工作。當(dāng)USB設(shè)備連接到網(wǎng)絡(luò)時(shí),該設(shè)備會(huì)向主機(jī)發(fā)送請(qǐng)求。接收來自設(shè)備的請(qǐng)求后,主機(jī)開始獲取設(shè)備的信息,選擇最合適的驅(qū)動(dòng)器,并為設(shè)備分配地址。主機(jī)的這個(gè)操作稱為枚舉。枚舉成功后,主機(jī)可以正確訪問設(shè)備。
主機(jī)可控制的設(shè)備和集線器的最大數(shù)量為127。如果集線器插入網(wǎng)絡(luò),則串聯(lián)連接的集線器數(shù)量必須小于或等于5。
USB 2.0電纜有4根導(dǎo)線:VDD、GND、信號(hào)D+和信號(hào)D-。對(duì)于一個(gè)傳輸數(shù)據(jù),信號(hào)D+和D-彼此取互補(bǔ)值。如果D+為高電平,D-為低電平,則數(shù)據(jù)被稱為“差分1”。如果D+為低電平,D-為高電平,則數(shù)據(jù)被稱為“差分0”。
但在USB 2.0網(wǎng)絡(luò)的實(shí)際數(shù)據(jù)傳輸中,“差分1”和“差分0”并不一定分別意味著數(shù)據(jù)“1”和數(shù)據(jù)“0”。USB的數(shù)據(jù)格式為NRZI(反向不歸零)。當(dāng)一個(gè)時(shí)鐘間隔內(nèi)沒有變化時(shí),此格式將定義數(shù)據(jù)“1”,當(dāng)發(fā)生從高到低或從低到高的變化時(shí),則定義數(shù)據(jù)“0”。
USB 2.0沒有任何時(shí)鐘線,所以它是異步接口。所以主機(jī)和驅(qū)動(dòng)器必須像在CAN中一樣進(jìn)行相互同步。傳輸8位SYNC碼,使接收器與發(fā)射器以USB全速同步。
數(shù)據(jù)傳輸時(shí),在USB 2.0中連續(xù)傳輸6次數(shù)據(jù)“1”后,完成數(shù)據(jù)“0”的位填充,因?yàn)橹挥袛?shù)據(jù)“1s”連續(xù)傳輸時(shí),NRZI格式中無信號(hào)邊緣出現(xiàn)。
7. EtherMAC(以太網(wǎng)媒體訪問控制)
EtherMAC是以太網(wǎng)接口的一部分。由于以太網(wǎng)的接口結(jié)構(gòu)非常復(fù)雜,所以不容易閘釋完全的以太網(wǎng)功能。我們只對(duì)以太網(wǎng)進(jìn)行簡要說明,提供到目前為止所述的與其它串行接口的差異概述。
以太網(wǎng)的“以太”來自一種叫做“以太”的介質(zhì),它是一種物理學(xué)定義,曾經(jīng)被認(rèn)為可以填滿所有的空間?!耙蕴钡拇嬖谧罱K被否定了,但由于“以太”被認(rèn)為是無處不在的,所以它成為了網(wǎng)絡(luò)命名的起源。
以太網(wǎng)主要分為四層,即物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層和上層。EtherMAC處理最低的兩層:物理層和數(shù)據(jù)鏈路層。
以太網(wǎng)電纜由四根信號(hào)線組成。兩條絞合線用于輸出數(shù)據(jù),另兩條絞合線用于輸入數(shù)據(jù)。這種電纜即使沒有電屏蔽層也有很好的抗噪性(非屏蔽雙絞線:UTP)。由于沒有時(shí)鐘線,因此以太網(wǎng)是一個(gè)異步接口。
為了理解以太網(wǎng)的概念,我們先介紹一下10Base-T,盡管100Base-TX是當(dāng)今最流行的版本,但10Base-T是基本的,且比100Base-TX簡單得多。
10Base-T是一個(gè)使用雙絞線的接口,具有10Mbps傳輸速率和基帶格式。
信號(hào)傳輸采用曼徹斯特代碼格式。在曼徹斯特代碼中,數(shù)據(jù)“1”和“0”分別定義為上升轉(zhuǎn)換和下降轉(zhuǎn)換。
以太網(wǎng)沒有任何時(shí)鐘線。接收器和發(fā)射器必須彼此同步,與CAN和USB2.0接口中一樣。但即使相同的數(shù)據(jù)連續(xù)重復(fù),也不需要位填充,因?yàn)閿?shù)據(jù)“1”和數(shù)據(jù)“0”中都有信號(hào)轉(zhuǎn)換。發(fā)射器發(fā)送數(shù)據(jù)前的56位連續(xù)脈沖,僅用于使接收器與發(fā)射器同步。
以太網(wǎng)沒有USB 2.0中所必不可少的主機(jī)和設(shè)備關(guān)系等層次結(jié)構(gòu)。當(dāng)接口的一個(gè)單元想要輸出數(shù)據(jù)時(shí),該線路必須是空閑的。如果另一個(gè)單元占用線路,該單元必須等待。即使該單元已確保線路可用并開始發(fā)送數(shù)據(jù),但如果另一個(gè)單元也開始同時(shí)發(fā)送數(shù)據(jù),則會(huì)發(fā)生沖突。一旦發(fā)生沖突,所有單元將停止發(fā)送數(shù)據(jù),并等待線路空閑。當(dāng)一個(gè)單元嘗試開始發(fā)送時(shí),可能會(huì)再次發(fā)生另一個(gè)沖突,因?yàn)槠渌鼏卧矅L試開始發(fā)送。為了防止這種永久性的沖突,以太網(wǎng)有一個(gè)防止沖突的對(duì)策。當(dāng)發(fā)生沖突時(shí),發(fā)射器的等待時(shí)間由隨機(jī)數(shù)決定。這對(duì)發(fā)生沖突的單元有效。但是當(dāng)先前的一個(gè)單元開始再次發(fā)送數(shù)據(jù)時(shí),新單元可能會(huì)發(fā)生沖突。一個(gè)單元最多可以發(fā)送16次相同的數(shù)據(jù)。
對(duì)于無主從器件關(guān)系的系統(tǒng)分擔(dān)通信責(zé)任而言,這是最佳的仲裁方式之一。
來源:硬件工程師技術(shù)號(hào)
審核編輯:湯梓紅
-
微控制器
+關(guān)注
關(guān)注
48文章
7957瀏覽量
155237 -
寄存器
+關(guān)注
關(guān)注
31文章
5435瀏覽量
124607 -
CAN
+關(guān)注
關(guān)注
57文章
2921瀏覽量
467943 -
串行接口
+關(guān)注
關(guān)注
3文章
388瀏覽量
44277 -
uart
+關(guān)注
關(guān)注
22文章
1276瀏覽量
104006
原文標(biāo)題:微控制器的七個(gè)串行接口
文章出處:【微信號(hào):mcugeek,微信公眾號(hào):MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
SMART SAM4C微控制器有哪些應(yīng)用?
STM32F030C8T6微控制器有哪些性能
HACCP七個(gè)原理 ppt
基于微控制器的串行端口接口(SPI)啟動(dòng)電路

ADS7870串行接口被設(shè)計(jì)成便于與廣泛的微控制器接口的詳細(xì)概述

微機(jī)原理及接口技術(shù)的七個(gè)實(shí)驗(yàn)指導(dǎo)資料免費(fèi)下載

AN-812: 基于微控制器的串行端口接口(SPI?)啟動(dòng)電路

如何在MAXQ3180微控制器上使用串行外設(shè)接口

怎樣使用MAXQ3180微控制器的串行外設(shè)接口

DS1307與兼容8051的微控制器接口

評(píng)論