老古开发网首页
导航:老古开发网首页文章索引索引第1537页文章分类芯片介绍第10页→[一种基于USB的通用无线传输接口设计]
| -文章搜索 - 最新文章 - |

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

发布时间:2005年12月30日 点击次数:1848
来源:   作者:武汉理工大学信息工程学院 任晖
 

摘    要:本文介绍了一种基于微处理器LPC2210的USB接口的设计,并使用射频收发芯片nRF2401设计了USB接口的无线通信模块。阐述了该系统的工作原理、硬件构成及软件设计方案。实现了基于USB接口的无线串行通信。
关键词:LPC2210;USB;nRF2401;CY7C63231

引言
USB为USB设备与USB主机之间大量的数据传输提供了高速、可靠的传输协议。而射频通信以其优点也应用在越来越多的场合,本文所设计的USB无线串行接口电路由nRF2401单片射频收发器、LPC2210微控制器和USB接口芯片组成。本系统充分利用USB的数据传输功能,设备连接方便,系统可用于进行无线串行数据双向传输,可在仪器仪表、计算机遥测/遥控、家庭网络等系统中应用。


图1  PDIUSBD12与LPC2210连接电路原理图


图2  nRF2401与CY7C63231的连接电路原理图


图3 硬件系统设计框图


图4  USB驱动分层结构图
硬件设计
整个硬件电路设计可以分为两个部分: 使用带并行总线的USB接口器件PDIUSBD12 设计LPC2210的USB接口,其电路如图1所示;使用Cypress公司的USB外围控制芯片CY7C63231设计射频芯片nRF2401的USB接口,其电路如图2所示。两个部分通过USB口相接,整个硬件设计系统框图如图3所示。
图1中,采用Philips公司的并行USB接口芯片 PDlUSBDl2,符合USB1.1版本规范。 这里以LPC2210微控制器与PDIUSBD12构成USB设备。
由图1可知,PDIUSBD12使用LPC2210外部存储控制的Bank2部分,其地址如下:数据地址 0x82000000,命令地址 0x82000001。RST_USB、SUSP为LPC2210输出引脚,PDIUSBD12中断信号为中断输入信号,且为外部中断0。C1、C2和X1为PDIUSBD12提供工作所需的时钟输入;发光二极管GoodLink在正常通信时闪烁;PDIUSBD12的AD0连接到LPC2210的A0。当LPC2210在A0引脚输出1时,表示输出到PDIUSBD12数据总线D0 ~ D7上的数据为命令字,当A0引脚输出0时,表示输出到PDIUSBD12数据总线D0 ~ D7的数据为数据字。
表1  USB驱动程序软件包6个API函数
图2为射频芯片nRF2401与CY7C63231的连接电路原理图。CY7C63231是8位RISC微处理器,特别适用于USB嵌入式设计,工作电压是5V。nRF2401是单片射频收发芯片,工作模式有4种:收发模式、配置模式、空闲模式和关机模式。所有配置工作,工作模式选择和收发数据都通过CY7C63231的P0引脚控制完成,其连接方式如图中标号所示。用电压调整芯片LP2980IM5-3.3产生nRF2401的工作电压3.3V,同时,SN74LVC4245可实现控制口3.3V和5V的电平转换,使工作在不同电压水平的这两种芯片正常连接。

软件设计
PDIUSBD12驱动软件构架
为了增强驱动软件的可移植性,且容易维护,采用分层的方法编写PDIUSBD12的驱动程序。在LPC2210应用C/OS-II操作系统的基础上综合考虑USB协议、PDIUSBD12硬件接线、C/OS-II的结构来组织驱动软件的构架,图4所示为USB驱动程序软件分层结构。
USB驱动程序软件包提供给用户6个API函数,这6个函数都在USB应用层中定义。这6个函数如表1所示。    
下面以接收和发送数据任务为例来说明怎样使用表1的API函数,例子演示了一个任务,从端点2发送1024个字节。部分源代码如下:
#define RW_NUMS 1024 //任务收发数据字节数
void TaskRec1(void *pdata)
{ #if  OS_CRITICAL_METHOD == 3  /* Allocate storage for CPU status register */
OS_CPU_SR cpu_sr;
#endif
INT8U Buff[RW_NUMS]; //接收及发送缓冲区
INT8U ack = 0x01; //应答主机数值
INT8U err; //函数返回值
pdata = pdata;  /* Prevent compiler warning */
for (;;){
OSSemPend(TaskRec1_Sem,0,&err);    //等待TaskStart的命令
err = WritePort1(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); //发送数据
                           }
                           }
         }
}
CY7C63231软件设计
USB外围控制器CY7C63231控制nRF2401,同时与LPC2210的USB口相连,实现无线数据的接收和发送。nRF2401可以接收两个频段的数据,以接收无线数据为例,CY7C63231的程序主要分为:主程序UsbTaskLoop,它是一个无限循环,仅仅在中断的时候跳出,程序检测nRF2401的DR1和DR2引脚,当DR1上的电平为高时,产生中断,跳到Receivech1子程序,当DR2上的电平为高时,产生中断,跳到Receivech2子程序;USBSend程序负责从端口1向上位机发送数据;WaitforAck程序等待上位机对端口1的应答信号;Receivech1和Receivech2程序分别从nRF2401的通道1和通道2接收数据,最后调用DATAOUT,把数据传给上位机;DATAOUT程序将接收到的字节发送给上位机,然后调用WaitforAck;Prg2401程序段负责对nRF2401进行操作控制,能够通过设置不同的参数使nRF2401工作在三种不同的工作模式。限于篇幅,该部分的程序源代码不在此详述。

结语
本系统采用32 位嵌入式微处理器进行核心控制,采用C/OS-II作为操作系统,具有强大的数据处理能力。本系统可以通过无线局域网进行无线传输,并且可在ARM 中对无线接收的数据进行处理,以进一步应用于图像处理、智能监控,以及远程电视/电话会议等。


欢迎进入老古论坛进行讨论
[芯片介绍] 相关文章:
串行 LVDS 接口ADC改善电路板的布线设计
简介:
当共模信号较难处理或对系统有负面影响的时候,需要进行信号调理。部分系统的设计会将模拟变换器输出的单端信号转为全差分信号,然后将这些信号传送到差分输入ADC。这种设计的优点是,大部分混入差分线路的噪声会同时出现在两条线路上 (假设差分线路都是按差分方式平衡布局)。 输入信号转为数字信号之后,便必须传送到DSP或ASIC/FPGA,以便进行处理。全差分输出信号电路通过两条对称的线路输出及吸收电流。低电压差分信号 (LVDS) 便是这种信号。ADC12QS065 芯片就采用了 LVDS 技术,可解决......

基于VC0701与红外技术的人体检测系统设计
IR的60V DirectFET功率MOSFET最大导通电阻为7.0 mΩ
动态TCAM
FODB100:光耦合器
 
下一个:[消费类电子]国产手机陷入困境 低价手机下乡不切实际
简介:
国产手机陷入困境,许多热心人便开始出注意,帮国产手机厂商如何扭亏为赢,于是有人说,国产手机应该利用低价占领农村市场以获得生存的机会。此点子一出,马上得到许多人的赞许。但我以为,低价手机占领农村市场,愿望虽好,却不切实际。 赞许低价手机占领农村市场的人认为,现在的中国农民缺手机,原因一是农民买不起,二是农村手机销售渠道不畅,三是没有符合农民使用......

上一个:[自动控制]煤矿安全监控分站的研究

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:30分钟 执行时间:47毫秒