什么是uart
通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,是一種異步收發(fā)傳輸器,是電腦硬件的一部分。它將要傳輸?shù)?a href="http://www.wenjunhu.com/soft/special/" target="_blank">資料在串行通信與并行通信之間加以轉(zhuǎn)換。作為把并行輸入信號(hào)轉(zhuǎn)成串行輸出信號(hào)的芯片,UART通常被集成于其他通訊接口的連結(jié)上。
具體實(shí)物表現(xiàn)為獨(dú)立的模塊化芯片,或作為集成于微處理器中的周邊設(shè)備。一般是RS-232C規(guī)格的,與類(lèi)似Maxim的MAX232之類(lèi)的標(biāo)準(zhǔn)信號(hào)幅度變換芯片進(jìn)行搭配,作為連接外部設(shè)備的接口。在UART上追加同步方式的序列信號(hào)變換電路的產(chǎn)品,被稱為USART(Universal Synchronous Asynchronous Receiver Transmitter)。
UART是一種通用串行數(shù)據(jù)總線,用于異步通信。該總線雙向通信,可以實(shí)現(xiàn)全雙工傳輸和接收。在嵌入式設(shè)計(jì)中,UART用于主機(jī)與輔助設(shè)備通信,如汽車(chē)音響與外接AP之間的通信,與PC機(jī)通信包括與監(jiān)控調(diào)試器和其它器件,如EEPROM通信。
什么是usb
USB,是英文Universal Serial Bus(通用串行總線)的縮寫(xiě),是一個(gè)外部總線標(biāo)準(zhǔn),用于規(guī)范電腦與外部設(shè)備的連接和通訊。是應(yīng)用在PC領(lǐng)域的接口技術(shù)。USB接口支持設(shè)備的即插即用和熱插拔功能。USB是在1994年底由英特爾、康柏、IBM、Microsoft等多家公司聯(lián)合提出的。
下一代USB接口將會(huì)有改動(dòng)方向,下一代的Type-C USB接口,可支持正反兩面插,并且傳輸數(shù)據(jù)信號(hào)強(qiáng),但目前(2014年)生產(chǎn)商有限。
理論上USB接口可用于連接多達(dá)127個(gè)外設(shè),如鼠標(biāo)、調(diào)制解調(diào)器和鍵盤(pán)等。USB自從1996年推出后,已成功替代串口和并口,并成為二十一世紀(jì)個(gè)人電腦和大量智能設(shè)備的必配的接口之一。
usb作為一種串行接口,應(yīng)用日益廣泛。如同每個(gè)工程設(shè)計(jì)人員必須掌握I2C,RS232這些接口一樣,我們也必須掌握usb.
但是usb的接口協(xié)議實(shí)在有點(diǎn)費(fèi)解,linux uhci驅(qū)動(dòng)作者之一Alan Stern曾經(jīng)就說(shuō)過(guò)“The USB documentation is downright evil. Most of it is just crap, written by a committee. You‘re better off ignoring most of it ”。
本文將從整體上介紹usb協(xié)議,包括usb host ,usb hub,usb function。希望能給讀者一個(gè)總體上的了解。也因此,文章將分成相應(yīng)的三部分講解 。
一、usb function
1。初識(shí)usb.usb是一種串行接口協(xié)議,它靠d+,d-兩條數(shù)據(jù)線構(gòu)成的差分線來(lái)進(jìn)行數(shù)據(jù)傳輸,這讓我們非常感興趣它到底和我們通常熟悉兩線 rs232/485有何區(qū)別。了解這種區(qū)別有助于我們對(duì)usb作一個(gè)深入的了解。那么讓我們回想一下到底一個(gè)兩線rs232的數(shù)據(jù)是如何傳送的,
在這里我們的重點(diǎn)在于,我們發(fā)現(xiàn)要在串行口傳送數(shù)據(jù)一個(gè)最體碼的要求恐怕就是:要知道數(shù)據(jù)傳輸何時(shí)開(kāi)始,何時(shí)結(jié)束。即如何delimit.那么 rs232怎么做的。顯然,在idle(空閑)時(shí),即無(wú)數(shù)據(jù)傳送時(shí),數(shù)據(jù)線處于高電平,等到有數(shù)據(jù)開(kāi)始傳送,發(fā)送方首先拉低數(shù)據(jù)線(start),表示數(shù) 據(jù)傳輸開(kāi)始,接受端也因?yàn)檫@個(gè)“start”信號(hào)開(kāi)始準(zhǔn)備接受即將到來(lái)的數(shù)據(jù),類(lèi)似一次握手,隨后,在兩者之間的數(shù)據(jù)傳送開(kāi)始,結(jié)束后主方再次拉高數(shù)據(jù) 線,表示結(jié)束傳輸,自此兩者重新進(jìn)入Idle狀態(tài)。等待下一輪傳送開(kāi)始。
了解了rs232,那么我們自然想到usb如何做到這個(gè)呢,既然是串行位流傳輸,也理所當(dāng)然的解決這個(gè)問(wèn)題。沒(méi)錯(cuò),Usb協(xié)議必然要解決這個(gè)問(wèn)題,讓我們作一個(gè)類(lèi)似rs232的比較吧!類(lèi)似于rs232,usb的傳輸楨如圖二:
?。ㄟ@里我們暫時(shí)忽略這個(gè)傳輸所代表的意義)為了說(shuō)明問(wèn)題,我們對(duì)一些問(wèn)題簡(jiǎn)化,我們定義這樣幾個(gè)狀態(tài):
假設(shè)D+,D-分別表示usb信號(hào)線的電平信號(hào)。那么對(duì)于usb full speed function(high speed ,low speed是不同的),我們定義差分?jǐn)?shù)據(jù)線上可能出現(xiàn)的四個(gè)狀態(tài):
Data J state:D+=1,D-=0;
Data K state:D+=0,D-=1;
SE0:D+=D-=0;
SE1:D+=D-=1
這個(gè)對(duì)usb full speed function來(lái)說(shuō),idle狀態(tài)將處于Data J state,se0表示一楨結(jié)束。看這個(gè)圖是不是很像我們熟悉的rs232。沒(méi)錯(cuò)!??!他們確實(shí)很相似。在無(wú)數(shù)據(jù)傳輸時(shí),它們都處于Idle狀態(tài),當(dāng)要開(kāi) 始傳輸數(shù)據(jù)時(shí),先發(fā)一個(gè)sync(同步信號(hào),rs232為start,usb為一sync字節(jié),見(jiàn)協(xié)議說(shuō)明)信號(hào)進(jìn)行“握手”,而后開(kāi)始傳輸,當(dāng)傳輸要結(jié) 束時(shí),發(fā)一stop信號(hào)(usb為一個(gè)se0狀態(tài)表示要結(jié)束傳輸),最后又進(jìn)入idle態(tài)等待新的傳輸。不過(guò),你可能更加注意到,他們還是不同的。不同在 于usb是按“packet” 進(jìn)行傳輸?shù)?,就是說(shuō)它傳輸?shù)淖钚挝皇莗acket,而rs232是按字節(jié)傳送的,也即它的最小傳送單位是字節(jié)。既然是按pakcet傳送,想想我們相較 于rs232的按字節(jié)單位傳輸,我們可以得到哪些“好處”。想想看,pakcet的好處不就在于我們可以靈活的定義數(shù)據(jù)的傳送格式,傳送方式,從而可以適 應(yīng)各種各樣的串行設(shè)備,這不就是所謂的“通用串行總線”嗎?
簡(jiǎn)介:從本節(jié)開(kāi)始,我們將介紹usb的傳輸機(jī)制。這節(jié)先介紹usb現(xiàn)有傳輸方式的背景知識(shí),做為對(duì)下節(jié)將要展開(kāi)的四種傳輸類(lèi)型,描述符,等相關(guān)知識(shí)的一個(gè)導(dǎo)引。
評(píng)論
查看更多