一种基于USB的通用无线传输接口设计

时间:2012-02-11来源:网络

2 软件设计

2.1 PDIUSBDl2驱动软件构架

为了使驱动软件可移植性强、易维护,采用分层的方法编写PDIUSBDl2的驱动程序,图4为USB驱动程序软件分层结构图。

USB驱动程序软件包提供给用户6个API函数,这6个函数都在USB应用层中定义,功能描述如表1所列。

下面以接收和发送数据任务为例,演示了一个任务从端点2发送1024个字节。部分源代码如下:

#define RW_NUMS 1024 //任务收发数据字节数
void TaskRecl(void*pdata)
{#if OS_CRlTICAL_METHOD==3
//为CPU状态寄存器分配存储空间
OS_CPU_SR cpu_sr;
#endif
INT8U Buff[RW_NUMS]; //接收及发送缓冲区
INT8U ack=0x01; //应答主机数值
INT8U err; //函数返回值
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);//接收数据
OSTimeDly(1); //延时一个时钟周期
if(err==USB_NO_ERR){ //接收正确
Buff[0]=OSPrioCur; //标识该任务
err=WritePort2(RW_NUMS,Buff,200);//发送数据
}
}
}}

2.2 CY7063231软件设计

USB 外围控制器CY7C63231控制nRF2401射频芯片,同时与LPC2210微控制器的USB口相连,实现无线数据的接收和发送。下面以接收无线数据为例。主程序UsbTaskLoop,它是一个无限循环,仅仅在中断的时候跳出。程序检测nRF2401的DRl和DR2引脚,当DRl上的电平为高时,产生中断跳到Receivechl子程序,当DR2上的电平为高时,产生中断跳到Receivech2子程序。USBSend程序负责从端口1向上位机发送数据,WaitforAck程序等待上位机对端口1的应答信号,Receivechl和Receivech2程序分别从nRF2401的通道1 和通道2接收数据。最后调用DATAOUT把数据传给上位机,然后调用WaitforAck。Prg2401程序段负责对nRF2401进行操作控制,能够通过设置不同的参数使nRF2401工作在三种不同的工作模式。

结 语

本系统采用32位嵌入式微处理器进行核心控制,具有强大的数据处理能力。该设计可以通过无线局域网进行无线传输,并且可在ARM中对无线接收的数据进行处理,以进一步应用于图像处理,智能监控,以及远程电视电话会议等。因此,基于ARM的嵌入式USB口无线接收处理系统具有广阔的应用前景和市场。

1 2

关键词: LPC2210 USB nRF2401 CY7C63231

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版