基于USB的通用无线传输接口设计
发布时间:2008/5/26 0:00:00 访问次数:606
    
    
    来源:单片机及嵌入式系统应用 作者:武汉理工大学 任晖
     摘 要:介绍一种基于philips公司的32位arm7t[)mi—s微处理器lpc2210的usb接口设计,并使用nordic公司生产的单片射频收发芯片nrf2401设计usb接口的无线通信模块。阐述该系统的工作原理、硬件构成及软件设计方案。实现了基于usb接口的无线串行通信。
    
     关键词:无线传输 lpc2210 usb nrf2401 cy7c63231
    
    引 言
    usb通用串行总线主要用于usb设备与主机之间的数据通信,特别为usb设备与usb主机之间大量的数据传输提供了高速、可靠的传输协议。射频通信以其优点也应用在越来越多的场合。本文所设计的usb无线串行接口电路由nrf2401单片射频收发器、lpc2210微控制器和usb接口芯片组成。本系统充分利用usb口数据传输功能,设备连接方便,系统可用于进行无线串行数据双向传输,在仪器仪表、计算机遥测遥控系统、家庭网络系统等中得到了应用。
    
    1 硬件设计
    整个硬件设计分为两个部分:使用带并行总线的usb接口器件pdiusbd12设计lpc2200的usb接口,其电路图如图1所示;使用cypress公司的usb外围控制芯片cy7c63231设计射频芯片nrf2401的usb接口,其电路图如图2所示。两个部分通过usb口相接,整个硬件设计系统框图如图3所示。
    
    
    
    
    图1中,usb接口芯片采用的是philips公司的并行usb接口芯片pdlusbd12,符合通用串行总线(usb)1.1版本规范。这里以lpc2200微控制器与pdiusbi)12构成usb设备,pdiusbd)12连接到lpc2200的硬件原理图如图1所示。
    pdiusbd12使用lpc2200外部存储控制的bank2部分,数据地址为0x82000000,命令地址为ox82000001。rst_usb、susp为lpc2200的输出引脚,pdiusbd)12中断信号为中断输入信号,且为外部中断o。c1、c2和x1为pdiusbd)12提供工作所需的时钟输入。发光二极管goodlink在正常通信时闪烁。pdiusbd12的ad0连接到lpc2200的a0,当lpc2200在a0引脚输出l时,表示输出到pdiusbd12数据总线do~d7上的数据为命令字;当a0引脚输出0时,表示输出到pdiusbd)12数据总线do~d7的数据为数据字。
    
    图2中,cy7c63231是8位risc微处理器,特别适用在usb嵌入式方面,工作电压为5 v。nrf2401是单片射频收发芯片,有四种工作模式:收发模式、配置模式、空闲模式和关机模式。所有配置工作,工作模式选择和收发数据都是通过cy7c63231的po引脚控制完成的。用电压调整芯片lp2980im5—3.3产生nrf2401的工作电压(3.3 v),同时sn74lvc4245产生控制口3.3 v和5 v的电平转换,使工作在不同电压的这两种芯片能正常的相连。
    
    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);//等待ta
    
    
    来源:单片机及嵌入式系统应用 作者:武汉理工大学 任晖
     摘 要:介绍一种基于philips公司的32位arm7t[)mi—s微处理器lpc2210的usb接口设计,并使用nordic公司生产的单片射频收发芯片nrf2401设计usb接口的无线通信模块。阐述该系统的工作原理、硬件构成及软件设计方案。实现了基于usb接口的无线串行通信。
    
     关键词:无线传输 lpc2210 usb nrf2401 cy7c63231
    
    引 言
    usb通用串行总线主要用于usb设备与主机之间的数据通信,特别为usb设备与usb主机之间大量的数据传输提供了高速、可靠的传输协议。射频通信以其优点也应用在越来越多的场合。本文所设计的usb无线串行接口电路由nrf2401单片射频收发器、lpc2210微控制器和usb接口芯片组成。本系统充分利用usb口数据传输功能,设备连接方便,系统可用于进行无线串行数据双向传输,在仪器仪表、计算机遥测遥控系统、家庭网络系统等中得到了应用。
    
    1 硬件设计
    整个硬件设计分为两个部分:使用带并行总线的usb接口器件pdiusbd12设计lpc2200的usb接口,其电路图如图1所示;使用cypress公司的usb外围控制芯片cy7c63231设计射频芯片nrf2401的usb接口,其电路图如图2所示。两个部分通过usb口相接,整个硬件设计系统框图如图3所示。
    
    
    
    
    图1中,usb接口芯片采用的是philips公司的并行usb接口芯片pdlusbd12,符合通用串行总线(usb)1.1版本规范。这里以lpc2200微控制器与pdiusbi)12构成usb设备,pdiusbd)12连接到lpc2200的硬件原理图如图1所示。
    pdiusbd12使用lpc2200外部存储控制的bank2部分,数据地址为0x82000000,命令地址为ox82000001。rst_usb、susp为lpc2200的输出引脚,pdiusbd)12中断信号为中断输入信号,且为外部中断o。c1、c2和x1为pdiusbd)12提供工作所需的时钟输入。发光二极管goodlink在正常通信时闪烁。pdiusbd12的ad0连接到lpc2200的a0,当lpc2200在a0引脚输出l时,表示输出到pdiusbd12数据总线do~d7上的数据为命令字;当a0引脚输出0时,表示输出到pdiusbd)12数据总线do~d7的数据为数据字。
    
    图2中,cy7c63231是8位risc微处理器,特别适用在usb嵌入式方面,工作电压为5 v。nrf2401是单片射频收发芯片,有四种工作模式:收发模式、配置模式、空闲模式和关机模式。所有配置工作,工作模式选择和收发数据都是通过cy7c63231的po引脚控制完成的。用电压调整芯片lp2980im5—3.3产生nrf2401的工作电压(3.3 v),同时sn74lvc4245产生控制口3.3 v和5 v的电平转换,使工作在不同电压的这两种芯片能正常的相连。
    
    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);//等待ta
上一篇:交错技术显著提高升压转换效率