基于EZ-USB的數(shù)據(jù)采集與控制
發(fā)布時(shí)間:2008/6/3 0:00:00 訪問(wèn)次數(shù):797
來(lái)源:《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》
基于ez-usb的數(shù)據(jù)采集與控制* 摘要:主要介紹帶usb控制核的51系列單片機(jī)ez-usb的傳輸特性與控制機(jī)理,簡(jiǎn)述信息包的組成及幾種枚舉方式。文中給出的程序是一個(gè)利用端點(diǎn)2in/out進(jìn)行塊傳輸?shù)膽?yīng)用實(shí)例。由此可驗(yàn)證它的開(kāi)發(fā)效率。 關(guān)鍵詞:ez-usb pid 枚舉 bulk傳輸 1 概述 在目前pc的i/o模式中,外圍設(shè)備通常被映射為cpu的i/o地址空間,并且被分配一個(gè)指定的irq(中斷請(qǐng)求),在某些情況下也可以是一個(gè)dma通道。這些系統(tǒng)資源被分配給指定的外圍設(shè)備。這種地址分配的方法已經(jīng)成為一種標(biāo)準(zhǔn),軟件開(kāi)發(fā)者要根據(jù)這對(duì)指定的設(shè)備進(jìn)行訪問(wèn)。這給編程者帶來(lái)了不便,同時(shí)外設(shè)消耗了pc的許多系統(tǒng)資源,使許多系統(tǒng)資源不可使用,并且產(chǎn)生了很多沖突,由此造成了許多問(wèn)題。 cypress推出的帶智能usb接口的單片機(jī)ez-usb,極大地降低了usb外設(shè)的開(kāi)發(fā)難度,為pc外設(shè)的制造商提供了一性能的優(yōu)良、價(jià)格較低的設(shè)計(jì)方案;趀z-usb的強(qiáng)大功能,讓我們看到了應(yīng)用usb的美好前景。使用該芯片后,我們?cè)诤芏痰臅r(shí)間內(nèi)便實(shí)現(xiàn)了基于usb傳輸?shù)牟杉到y(tǒng)。為便于理解,有必要介紹一下相關(guān)的usb知識(shí)。 1.1 usb信息包 usb傳送的數(shù)據(jù)包由被稱(chēng)為packet ids(pids)的特定代碼所定義,pid表示了正在被傳送的包的類(lèi)型。usb的包中一類(lèi)有四種pid類(lèi)型,如表1所列。
表1 usb pid pid類(lèi)型 pid名稱(chēng) 數(shù)據(jù)信號(hào) in、out、sof、setup、data0、data1 握手信號(hào) ack、nak、stall 特殊信號(hào) pre 圖1舉例說(shuō)明了usb傳輸。包(1)是一個(gè)由out標(biāo)志表示的輸出信號(hào),表示主機(jī)發(fā)出的數(shù)據(jù)將要通過(guò)總線進(jìn)行傳送。包(2)由數(shù)據(jù)組成,它由data1標(biāo)志表示。包(3)是一個(gè)由外設(shè)發(fā)送的握手信息包。外設(shè)使用ack(確認(rèn))標(biāo)志向主機(jī)報(bào)告外設(shè)已正確地接收數(shù)據(jù)。接下來(lái)發(fā)出的out信號(hào)(4),開(kāi)始進(jìn)行第二次傳輸。緊跟其后的是數(shù)據(jù)包,這一次使用的是data0標(biāo)志。最后,設(shè)備通過(guò)傳送握手信息包中的ack標(biāo)志表示接收成功。 為什么要用到data0與data1兩種數(shù)據(jù)標(biāo)志呢?這是因?yàn)閡sb的設(shè)計(jì)者對(duì)待錯(cuò)誤的檢測(cè)非常嚴(yán)格。如前面提到的,ack握手信號(hào)是一個(gè)向主機(jī)報(bào)告外設(shè)無(wú)差錯(cuò)接收數(shù)據(jù)的信號(hào)(包中的crc位用于錯(cuò)誤檢測(cè))。但是如果在傳輸過(guò)程中,握手信號(hào)本身出了錯(cuò),那又該怎么辦呢?為了檢測(cè)這種錯(cuò)誤,在主機(jī)和外設(shè)雙方都保留了一個(gè)數(shù)據(jù)輪換位,它在數(shù)據(jù)信息包的傳送過(guò)程中輪流改變其狀態(tài)。內(nèi)部輪換位的狀態(tài)與隨數(shù)據(jù)到達(dá)的pid相比較,要么是data0,要么是data1。當(dāng)傳送數(shù)據(jù)時(shí),主機(jī)或設(shè)備發(fā)出交替的data0-data1標(biāo)志。通過(guò)比較數(shù)據(jù)pid和內(nèi)部輪換位,主機(jī)或設(shè)備能夠檢測(cè)到一個(gè)出錯(cuò)的握手信號(hào)包。
setup令牌只針對(duì)控制傳輸。它是數(shù)據(jù)包中的前8個(gè)字節(jié),通過(guò)這幾個(gè)字節(jié)外對(duì)主機(jī)的設(shè)備請(qǐng)求進(jìn)行解碼。 sof信號(hào)每ms發(fā)生1次,代表1個(gè)usb幀的開(kāi)始。 3個(gè)握手信號(hào):ack、nak和stall。 *ack表示“成功”,即數(shù)據(jù)無(wú)誤接收。 *nak表示“忙,重發(fā)”。nak看上去好像表示“出錯(cuò)”,但其實(shí)不是。usb設(shè)備不響應(yīng),
來(lái)源:《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》
基于ez-usb的數(shù)據(jù)采集與控制* 摘要:主要介紹帶usb控制核的51系列單片機(jī)ez-usb的傳輸特性與控制機(jī)理,簡(jiǎn)述信息包的組成及幾種枚舉方式。文中給出的程序是一個(gè)利用端點(diǎn)2in/out進(jìn)行塊傳輸?shù)膽?yīng)用實(shí)例。由此可驗(yàn)證它的開(kāi)發(fā)效率。 關(guān)鍵詞:ez-usb pid 枚舉 bulk傳輸 1 概述 在目前pc的i/o模式中,外圍設(shè)備通常被映射為cpu的i/o地址空間,并且被分配一個(gè)指定的irq(中斷請(qǐng)求),在某些情況下也可以是一個(gè)dma通道。這些系統(tǒng)資源被分配給指定的外圍設(shè)備。這種地址分配的方法已經(jīng)成為一種標(biāo)準(zhǔn),軟件開(kāi)發(fā)者要根據(jù)這對(duì)指定的設(shè)備進(jìn)行訪問(wèn)。這給編程者帶來(lái)了不便,同時(shí)外設(shè)消耗了pc的許多系統(tǒng)資源,使許多系統(tǒng)資源不可使用,并且產(chǎn)生了很多沖突,由此造成了許多問(wèn)題。 cypress推出的帶智能usb接口的單片機(jī)ez-usb,極大地降低了usb外設(shè)的開(kāi)發(fā)難度,為pc外設(shè)的制造商提供了一性能的優(yōu)良、價(jià)格較低的設(shè)計(jì)方案。基于ez-usb的強(qiáng)大功能,讓我們看到了應(yīng)用usb的美好前景。使用該芯片后,我們?cè)诤芏痰臅r(shí)間內(nèi)便實(shí)現(xiàn)了基于usb傳輸?shù)牟杉到y(tǒng)。為便于理解,有必要介紹一下相關(guān)的usb知識(shí)。 1.1 usb信息包 usb傳送的數(shù)據(jù)包由被稱(chēng)為packet ids(pids)的特定代碼所定義,pid表示了正在被傳送的包的類(lèi)型。usb的包中一類(lèi)有四種pid類(lèi)型,如表1所列。
表1 usb pid pid類(lèi)型 pid名稱(chēng) 數(shù)據(jù)信號(hào) in、out、sof、setup、data0、data1 握手信號(hào) ack、nak、stall 特殊信號(hào) pre 圖1舉例說(shuō)明了usb傳輸。包(1)是一個(gè)由out標(biāo)志表示的輸出信號(hào),表示主機(jī)發(fā)出的數(shù)據(jù)將要通過(guò)總線進(jìn)行傳送。包(2)由數(shù)據(jù)組成,它由data1標(biāo)志表示。包(3)是一個(gè)由外設(shè)發(fā)送的握手信息包。外設(shè)使用ack(確認(rèn))標(biāo)志向主機(jī)報(bào)告外設(shè)已正確地接收數(shù)據(jù)。接下來(lái)發(fā)出的out信號(hào)(4),開(kāi)始進(jìn)行第二次傳輸。緊跟其后的是數(shù)據(jù)包,這一次使用的是data0標(biāo)志。最后,設(shè)備通過(guò)傳送握手信息包中的ack標(biāo)志表示接收成功。 為什么要用到data0與data1兩種數(shù)據(jù)標(biāo)志呢?這是因?yàn)閡sb的設(shè)計(jì)者對(duì)待錯(cuò)誤的檢測(cè)非常嚴(yán)格。如前面提到的,ack握手信號(hào)是一個(gè)向主機(jī)報(bào)告外設(shè)無(wú)差錯(cuò)接收數(shù)據(jù)的信號(hào)(包中的crc位用于錯(cuò)誤檢測(cè))。但是如果在傳輸過(guò)程中,握手信號(hào)本身出了錯(cuò),那又該怎么辦呢?為了檢測(cè)這種錯(cuò)誤,在主機(jī)和外設(shè)雙方都保留了一個(gè)數(shù)據(jù)輪換位,它在數(shù)據(jù)信息包的傳送過(guò)程中輪流改變其狀態(tài)。內(nèi)部輪換位的狀態(tài)與隨數(shù)據(jù)到達(dá)的pid相比較,要么是data0,要么是data1。當(dāng)傳送數(shù)據(jù)時(shí),主機(jī)或設(shè)備發(fā)出交替的data0-data1標(biāo)志。通過(guò)比較數(shù)據(jù)pid和內(nèi)部輪換位,主機(jī)或設(shè)備能夠檢測(cè)到一個(gè)出錯(cuò)的握手信號(hào)包。
setup令牌只針對(duì)控制傳輸。它是數(shù)據(jù)包中的前8個(gè)字節(jié),通過(guò)這幾個(gè)字節(jié)外對(duì)主機(jī)的設(shè)備請(qǐng)求進(jìn)行解碼。 sof信號(hào)每ms發(fā)生1次,代表1個(gè)usb幀的開(kāi)始。 3個(gè)握手信號(hào):ack、nak和stall。 *ack表示“成功”,即數(shù)據(jù)無(wú)誤接收。 *nak表示“忙,重發(fā)”。nak看上去好像表示“出錯(cuò)”,但其實(shí)不是。usb設(shè)備不響應(yīng),
熱門(mén)點(diǎn)擊
- C8051與SRAM的高速接口
- 一種實(shí)時(shí)性較強(qiáng)的采樣頻率同步實(shí)現(xiàn)方法
- 基于EZ-USB的數(shù)據(jù)采集與控制
- 一種單片機(jī)實(shí)現(xiàn)的嵌入式視頻切換器
- 單片機(jī)與PC通信的簡(jiǎn)化接口
推薦技術(shù)資料
- CV/CC InnoSwitch3-AQ 開(kāi)
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門(mén)信號(hào)調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究