無線USB的設(shè)計與實現(xiàn)
后臺D12中斷服務(wù)程序和nRF401中斷服務(wù)程序與前臺主循環(huán)程序之間的數(shù)據(jù)交換,通過事件標(biāo)志和數(shù)據(jù)緩沖區(qū)來實現(xiàn)。后臺中斷服務(wù)程序由中斷觸發(fā),通過標(biāo)志位與主模塊通信。主模塊循環(huán)掃描各標(biāo)志位,對相應(yīng)的標(biāo)志位做出處理。例如,nRF401 接受到有效數(shù)據(jù)后,送入串口觸發(fā)串口中斷,進(jìn)入nRF401中斷服務(wù)程序,將數(shù)據(jù)接收后放入數(shù)據(jù)緩沖區(qū),然后設(shè)置UART_DATA標(biāo)志,退出子模塊。主模塊查詢到UART_DATA被置位,則調(diào)用 writendpoint()程序?qū)?shù)據(jù)發(fā)往PC。
值得注意的是,nRF401在接受狀態(tài)下即使沒有數(shù)據(jù)接受,也會有隨機(jī)碼輸出。因此需要在所需傳輸?shù)臄?shù)據(jù)前加入標(biāo)識頭,如55AAH。當(dāng)檢測到從串口進(jìn)入的數(shù)據(jù)為55AAH時,再開始有效數(shù)據(jù)的接受。
對PC而言,無線USB傳輸模塊是它的一個USB外設(shè),因此必須提供USB設(shè)備的驅(qū)動程序。驅(qū)動程序的設(shè)計采用WDM模型[5],使用DriverStudio 進(jìn)行開發(fā)。DriverStudio是一款優(yōu)秀的驅(qū)動程序開發(fā)軟件。啟動DriverStudio中DriverWizard,填寫USB設(shè)備的端點配置,便會自動生成驅(qū)動程序原代碼和相應(yīng)的測試程序原代碼,只需稍做改動便可用VC6.0編譯運(yùn)行[5]。驅(qū)動程序向用戶程序提供標(biāo)準(zhǔn)的IO接口:WriteFile ()、 ReadFile() 、DeviceIoControl ()。用戶程序調(diào)用相應(yīng)的函數(shù),即可實現(xiàn)對USB設(shè)備的訪問。下面的例子是實現(xiàn)向USB總線寫數(shù)據(jù)的功能。
hFile = open_file(threadParam->pipe_name); //打開需要使用的端點
……
bResult = WriteFile(hFile,
threadParam->pcIoBuffer,
//等待傳送的數(shù)據(jù)緩沖區(qū)地址
threadParam->uiLength, //數(shù)據(jù)長度
nBytes,
NULL); //向該端點寫入數(shù)據(jù)
if (bResult != TRUE) { //出錯處理
DeviceIoControl(hFile, //復(fù)位該端點
IOCTL_D12_RESET_PIPE,
0, 0, 0, 0,
nBytes,
NULL);}
編程過程中要注意串口波特率要一致,否則會造成接受數(shù)據(jù)錯誤。nRF401周圍的布線和天線的設(shè)計很有講究,一定要按照手冊的要求進(jìn)行設(shè)計。
參考文獻(xiàn):
[1] Universal Serial Bus Specification Revision 1.1. http:/
/www.usb.org/developers/docs.html , 1998.
[2] Philips Semiconductors PDIUSBD12 Specification. http://www.semiconductors.philips.com /, 1999.
[3] Nordic 433Mhz Single Chip RF Transceiver nRF401 datasheet. http:// www.nvlsi.no/thenRF401.htm, 2000.
[4] 徐愛鈞.單片機(jī)高級語言C51 Windows環(huán)境編程與應(yīng)用[M].北京: 電子工業(yè)出版社, 2001.
[5] KRULINSKI D J. Programming Microsoft Visual C++6. 0技術(shù)內(nèi)幕[M].北京: 希望電子出版社,1999.
[6]PDIUSBD12 datasheethttp://www.dzsc.com/datasheet/PDIUSBD12+_544412.html.
[7]PCBdatasheethttp://www.dzsc.com/datasheet/PCB_1201640.html.
[8]nRF401datasheethttp://www.dzsc.com/datasheet/nRF401_521026.html.
評論