當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 通用串行總線控制器技術(shù)
通用串行總線Universal Serial Bus,縮寫為USB,是一個(gè)標(biāo)準(zhǔn)的外部總線標(biāo)準(zhǔn)。在計(jì)算機(jī)領(lǐng)域,它是已經(jīng)獲得廣泛使用的技術(shù),常用的電子設(shè)備上幾乎都有USB接口。USB最初用于規(guī)范個(gè)人電腦PC與外部設(shè)備之間的連接與通訊,一般由PC來(lái)充當(dāng)host端,各種外部設(shè)備作為device端,所有的通信都必須在host與device之間進(jìn)行,各device之間無(wú)法進(jìn)行直接通信。隨著USB技術(shù)的不斷廣泛應(yīng)用,各種帶USB接口的電子設(shè)備不斷涌現(xiàn),形成了現(xiàn)成遍地開(kāi)花的局面。這樣一來(lái)沒(méi)有PC就無(wú)法使用USB進(jìn)行通信,顯得十分不方便。于是USB OTG技術(shù)開(kāi)始出現(xiàn)。USB OTG是USB On-The-Go的縮寫,是近年發(fā)展起來(lái)的技術(shù),主要應(yīng)用于各種不同的設(shè)備或移動(dòng)設(shè)備間的聯(lián)接,進(jìn)行數(shù)據(jù)交換,特別是PAD、移動(dòng)電話、消費(fèi)類設(shè)備。
在以前傳統(tǒng)的通信方式中,例如以前個(gè)人計(jì)算機(jī)的串口和并口。以前的RS232串行通信,因?yàn)槊看蝺H能傳送一個(gè)bit的數(shù)據(jù),波特率也無(wú)法獲得更進(jìn)一步的提高,數(shù)據(jù)傳輸速率很低。相比串行通信,并行通信能同時(shí)傳送多個(gè)比特位,可以顯著加快數(shù)據(jù)通信速率。然而并行通信,需要多根數(shù)據(jù)線來(lái)同時(shí)傳送數(shù)據(jù)的各bit位,如果傳輸距離稍長(zhǎng),通信線路的成本明顯增加,不太適合距離稍遠(yuǎn)的數(shù)據(jù)傳輸。然而不管是串行還是并行通信,由于它們直接使用電平的高低來(lái)表示二進(jìn)制的01信號(hào),使得電信號(hào)在傳輸過(guò)程中抗干擾能力差,隨著通信距離的增加,信號(hào)衰減快。要想提高通信距離,同時(shí)提高通訊速率,就需要采用差分線來(lái)傳輸數(shù)據(jù)。USB就是基于這一原理,通信過(guò)程中僅需要D+,D-這一對(duì)差分?jǐn)?shù)據(jù)線,使得通信線路簡(jiǎn)單,通信速率有了巨大的提高,同時(shí)抗干擾能力強(qiáng)。USB接口還能供電,支持熱插拔。自從該技術(shù)在PC中應(yīng)用以來(lái),就受到了廣泛歡迎。
USB接口可以進(jìn)行供電,這樣小型的設(shè)備就不需要單獨(dú)供電,簡(jiǎn)化了設(shè)備的供電設(shè)計(jì)。于是各種小型的電子設(shè)備都特別喜歡使用USB接口。嵌入式設(shè)備中,經(jīng)常都需要該設(shè)備充當(dāng)device的角色。下面以device的設(shè)計(jì)為例,討論一下USB接口的軟硬件設(shè)計(jì)。比如一個(gè)簡(jiǎn)單的基于單片機(jī)的USB數(shù)據(jù)采集器,可以如下設(shè)計(jì):
這是一個(gè)基于AVR單片機(jī)的通用USB數(shù)據(jù)采集器,使用了一款經(jīng)典的USB接口芯片PDIUSBD12,單片機(jī)與PDIUSBD12之間直接利用傳統(tǒng)的數(shù)據(jù)、地址和控制三總線方式連接,有利于最大化數(shù)據(jù)傳輸。PDIUSBD12芯片引出差分?jǐn)?shù)據(jù)線D+,D-與USB插頭相連。
軟件開(kāi)發(fā)上,需要實(shí)現(xiàn)USB協(xié)議棧,按傳統(tǒng)的軟件分層設(shè)計(jì)方法來(lái)進(jìn)行設(shè)計(jì)即可,比如該數(shù)據(jù)采集器的軟件層次結(jié)構(gòu)如下:
當(dāng)USB檢測(cè)到device插入后,就會(huì)自動(dòng)和設(shè)備進(jìn)行前期的多次對(duì)話,完成必要的初始化和加載任務(wù),我們?cè)O(shè)計(jì)device時(shí),就需要不斷地向host返回相應(yīng)的信息,例如:
利用傳統(tǒng)的單片機(jī)前后臺(tái)程序設(shè)計(jì)方法就可以完成。該數(shù)據(jù)采集器是個(gè)通用的USB device設(shè)計(jì)模塊,其它USB設(shè)備只需在其基礎(chǔ)上做相應(yīng)的軟硬件修改即可實(shí)現(xiàn)。