新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 一種基于USB的通用無線傳輸接口設計

一種基于USB的通用無線傳輸接口設計

作者: 時間:2012-02-11 來源:網(wǎng)絡 收藏

2 軟件設計

2.1 PDIDl2驅(qū)動軟件構架

為了使驅(qū)動軟件可移植性強、易維護,采用分層的方法編寫PDIDl2的驅(qū)動程序,圖4為驅(qū)動程序軟件分層結構圖。

USB驅(qū)動程序軟件包提供給用戶6個API函數(shù),這6個函數(shù)都在USB應用層中定義,功能描述如表1所列。

下面以接收和發(fā)送數(shù)據(jù)任務為例,演示了一個任務從端點2發(fā)送1024個字節(jié)。部分源代碼如下:

#define RW_NUMS 1024 //任務收發(fā)數(shù)據(jù)字節(jié)數(shù)
void TaskRecl(void*pdata)
{#if OS_CRlTICAL_METHOD==3
//為CPU狀態(tài)寄存器分配存儲空間
OS_CPU_SR cpu_sr;
#endif
INT8U Buff[RW_NUMS]; //接收及發(fā)送緩沖區(qū)
INT8U ack=0x01; //應答主機數(shù)值
INT8U err; //函數(shù)返回值
pdata=pdata; //避免編譯器警告
for(;;){
OSSemPend(TaskReel_Sere,0,-err);//等待TaskStart的命令
err=WritePortl(1,&ack,200); //應答USB主機
if(err==USB_NO_ERR){ //應答正確
err=ReadPort2(RW_NUMS,Buff,200);//接收數(shù)據(jù)
OSTimeDly(1); //延時一個時鐘周期
if(err==USB_NO_ERR){ //接收正確
Buff[0]=OSPrioCur; //標識該任務
err=WritePort2(RW_NUMS,Buff,200);//發(fā)送數(shù)據(jù)
}
}
}}

2.2 CY7063231軟件設計

USB 外圍控制器控制射頻芯片,同時與微控制器的USB口相連,實現(xiàn)無線數(shù)據(jù)的接收和發(fā)送。下面以接收無線數(shù)據(jù)為例。主程序UsbTaskLoop,它是一個無限循環(huán),僅僅在中斷的時候跳出。程序檢測的DRl和DR2引腳,當DRl上的電平為高時,產(chǎn)生中斷跳到Receivechl子程序,當DR2上的電平為高時,產(chǎn)生中斷跳到Receivech2子程序。USBSend程序負責從端口1向上位機發(fā)送數(shù)據(jù),WaitforAck程序等待上位機對端口1的應答信號,Receivechl和Receivech2程序分別從的通道1 和通道2接收數(shù)據(jù)。最后調(diào)用DATAOUT把數(shù)據(jù)傳給上位機,然后調(diào)用WaitforAck。Prg2401程序段負責對nRF2401進行操作控制,能夠通過設置不同的參數(shù)使nRF2401工作在三種不同的工作模式。

結 語

本系統(tǒng)采用32位嵌入式微處理器進行核心控制,具有強大的數(shù)據(jù)處理能力。該設計可以通過無線局域網(wǎng)進行無線傳輸,并且可在ARM中對無線接收的數(shù)據(jù)進行處理,以進一步應用于圖像處理,智能監(jiān)控,以及遠程電視電話會議等。因此,基于ARM的嵌入式USB口無線接收處理系統(tǒng)具有廣闊的應用前景和市場。


上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉