基于Blackfin532和Netchip2272的USB接口設(shè)計(jì)
Bushound5.0只捕獲到了設(shè)備枚舉過程中主機(jī)發(fā)出獲取配置描述符請(qǐng)求及之后的數(shù)據(jù),圖中的數(shù)據(jù)是主機(jī)發(fā)出獲取配置描述符請(qǐng)求到主機(jī)發(fā)出設(shè)置配置請(qǐng)求之間的數(shù)據(jù)。
USB設(shè)備和主機(jī)之間的數(shù)據(jù)交換。當(dāng)Netchip2272接收到主機(jī)發(fā)送的數(shù)據(jù)包之后,就會(huì)產(chǎn)生一個(gè)中斷信號(hào)給Blackfin532,Blackfin532在中斷服務(wù)程序中查詢相應(yīng)的寄存器得知接收到數(shù)據(jù)包之后,直接將接收到的數(shù)據(jù)包讀到Blackfin532中。USB設(shè)備需要向主機(jī)發(fā)送數(shù)據(jù)時(shí),先將需要發(fā)送的數(shù)據(jù)放到輸入端點(diǎn)的Buffer中,當(dāng)主機(jī)向相應(yīng)的輸入端點(diǎn)發(fā)送In Token時(shí),Buffe中的數(shù)據(jù)包就返回給了主機(jī),數(shù)據(jù)包發(fā)送成功后Netehip2272會(huì)產(chǎn)生一個(gè)中斷信號(hào)給Blackfin532,在中斷處理函數(shù)中將全局變量Tx_data_flag的相應(yīng)位置1,數(shù)據(jù)包發(fā)送成功。
2.2 驅(qū)動(dòng)程序
驅(qū)動(dòng)程序編寫是復(fù)雜的,選用Jungo的WindowsDriver,在Windows Driver檢測到枚舉成功的設(shè)備之后,輸入設(shè)備的廠商ID(VID)和產(chǎn)品ID(PID),即可生成一個(gè)inf文件,將設(shè)備的PID和VID與設(shè)備的驅(qū)動(dòng)程序綁定在一起,當(dāng)設(shè)備通過設(shè)備描述符將VID,PID傳送給主機(jī)之后,主機(jī)就可以據(jù)此找到設(shè)備的驅(qū)動(dòng)程序了。
3 實(shí)驗(yàn)結(jié)果及分析
設(shè)備枚舉成功之后,利用BusView觀察到的設(shè)備的配置情況如圖5所示。本文引用地址:http://www.ex-cimer.com/article/187737.htm
USB設(shè)備一共有6個(gè)端點(diǎn),這里僅列出其中兩個(gè)端點(diǎn)的描述符,其他的和這兩個(gè)類似。BusView顯示的設(shè)備配置情況和固件程序中對(duì)設(shè)備的配置情況完全一致,這表明設(shè)備的枚舉過程是正確的。
通過使USB設(shè)備循環(huán)的向主機(jī)發(fā)送數(shù)據(jù)來檢驗(yàn)USB輸入到主機(jī)方向的數(shù)據(jù)傳輸,利用Bushound5.0捕獲的部分?jǐn)?shù)據(jù)如圖6所示。圖中的數(shù)據(jù)顯示USB設(shè)備循環(huán)發(fā)送的數(shù)據(jù)是00 01 02 03 04 05 06 07 08 09,在Windows Driver中對(duì)相應(yīng)的管道進(jìn)行監(jiān)聽,收到的數(shù)據(jù)如圖7所示。實(shí)驗(yàn)結(jié)果顯示數(shù)據(jù)傳輸完全正確。對(duì)于主機(jī)輸出到USB設(shè)備方向的數(shù)據(jù)傳輸,進(jìn)行了檢驗(yàn),數(shù)據(jù)傳輸也完全正確。這表明基于Blackfin532和Netc-hip2272的USB接口電路的方案是可行的。
4 結(jié)束語
基于Blackfin532和Netchip2272的USB接口電路具有數(shù)據(jù)傳輸快速、可靠、接口電路簡單、固件程序的可移植性強(qiáng)等優(yōu)點(diǎn),具有良好的實(shí)用價(jià)值和應(yīng)用前景。
評(píng)論