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