AN2131QC芯片USB總線通信的開發(fā)
]
6 AN2131QC的固件程序開發(fā)
從CYPRESS公司網(wǎng)站,可以下載到“控制面板程序”和驅(qū)動(dòng)程序,也可以得到開發(fā)例程。通過開發(fā)例程,我們可以總結(jié)出開發(fā)自己固件程序的框架,從而可以輕松完成USB外圍設(shè)備的開發(fā)。
在建立固件程序框架后,根據(jù)地址分配,在KEILC51 編譯器內(nèi)設(shè)置編譯連接地址,如果選用內(nèi)部RAM,CODE地址設(shè)置為0x100,XDATA地址設(shè)置為0x1200。
?。?)在DSCR.A51文件中設(shè)置外圍設(shè)備配置信息和通信管道
在此文件內(nèi)包含有USB外設(shè)的定義信息和通信管道,其中需要自己修改的東西是設(shè)備描述和通信管道。
StringDscr1和StringDscr2用于描述USB外設(shè)的種類和功能。
EpInDscr用于定義AN2131QC的輸出端點(diǎn),包括端點(diǎn)號(hào)(作為輸入的端點(diǎn)號(hào)字節(jié)的最高位為“1”)、傳輸方式、數(shù)據(jù)包最大長度等。
EpOutDscr用于定義AN2131QC的輸入端點(diǎn),格式與EpInDscr相同,但端點(diǎn)號(hào)字節(jié)的最高位為“0”。
(2)通信管道的初始化
在DSCR.A51文件內(nèi)定義了端點(diǎn)號(hào)后,需要在初始化定義里使能相應(yīng)的通信端點(diǎn),下面的例子為輸入端點(diǎn)2和輸出端點(diǎn)2的初始化例程:
其中需要注意的是USBPAIR寄存器的初始化值,他用于設(shè)定相應(yīng)端點(diǎn)的雙輸入輸出緩沖區(qū)。在一些控制設(shè)備中需要實(shí)時(shí)獲取USB外設(shè)的狀態(tài),但在使用雙緩沖功能后,主機(jī)需要發(fā)送3個(gè)IN令牌,才能從外設(shè)取得最新的狀態(tài)數(shù)據(jù),因此在實(shí)時(shí)性要求比較高的情況下,應(yīng)避免使用輸入輸出雙緩沖功能。
(3)數(shù)據(jù)收發(fā)
USB外設(shè)向主機(jī)發(fā)送信息和獲取信息都是以一個(gè)數(shù)據(jù)包為單位,數(shù)據(jù)包的長度可以隨機(jī)改變,但不能超過前面端點(diǎn)定義的最大數(shù)據(jù)包長度。以輸入端點(diǎn)2和輸出端點(diǎn)3為例說明數(shù)據(jù)的收發(fā)過程。
向主機(jī)發(fā)送數(shù)據(jù):輸入端點(diǎn)2
if((IN2CS&0x02)?。?x02))
//檢查輸出緩沖是否為空
7 結(jié)語
在有些設(shè)備中,可能用AN2131QC作為USB通信,用其他功能強(qiáng)大的微處理器作數(shù)據(jù)處理,這樣的配置有一個(gè)瓶頸就是AN2131QC與微處理器的輸入輸出數(shù)據(jù)交換問題,可以用雙口RAM來解決,但這將使系統(tǒng)復(fù)雜,所以最好使用帶有標(biāo)準(zhǔn)并行總線接口的USB控制器。在USB設(shè)備的開發(fā)過程中,驅(qū)動(dòng)程序的開發(fā)也是同等重要。
參考文獻(xiàn)
[1]AN2131QCDATABOOK.Cypress公司.
[2]EZ-USB_TRM. Cypress公司
[3]張弘.USB接口設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,1999.
評論