注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

中国古代易经之精华四柱八字之研究和实践

偏印是人类潜藏的灵感和智慧,火克金初形成之水是智慧之源泉。

 
 
 

日志

 
 

基于nRF24LU1的无线USB数据传输系统的设计  

2010-07-02 17:20:39|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

基于nRF24LU1的无线USB数据传输系统的设计

内容摘要

提出了了NORDIC公司新推出来的无线射频芯片nRF24LU1的无线USB模块的设计和实现方案,从nRF24LU1芯片的内部结构入手,介绍了该芯片无线USB系统的工作原理,给出无线收发机的具体硬件电路图和流程图,重点阐述了nRF24LU1无线USB模块的设计。



通用串行总线(Universal Serial Bus-----USB)是目前计算机与外设之间最流行,最方便的通信接口标准。它除了具有较高的传输数率(USB1.1支持低速1.5Mbps和全速12Mbps两种传输速度,USB2.0还支持高速480Mbps)外,还有易于扩展以及支持即插即用和热插拔的特性,被广泛用于数据采集系统和各种计算机外设中。但是基于USB接口的数据通信依然是一种有线的接入方式。随着短距离无线通信技术的发展以及无线通信技术在可靠性和可操作性方面的优势,在数据采集系统中以无线接入代替有线接入已成为了一种趋势。

本文提出了一种基于nRF24LU1芯片的无线USB短距离无线通信的解决方案。

1 无线USB模块结构和原理

无线USB模块结构如图1所示,它包括USB接口、USB控制器、MCU、射频模块、射频匹配电路及天线六个部分组成。其中,USB控制器只要负责把MCU发来的数据进行USB协议封装和对USB数据进行控制,以及对USB数据解析后转发到MCU;MCU负责对射频芯片和USB控制器的控制,实现模块总功能的实现;射频模块和射频匹配电路主要负责无线数据的发送和接收。

图1 无线USB结构图

无线USB的实现一般有三种实现方案,一个是三芯片实现,即单片机、USB控制器和射频芯片;两芯片实现,即用已集成了USB控制器的单片机和射频芯片或者是已集成了USB控制器的射频芯片和单片机实现;三是单芯片实现,即USB控制、单片机和射频芯片都集成到一个芯片中。本文的nRF24LU1芯片就是这样的一款单芯片实现USB的无线通信,它具有成本低、体积小的优势。

2 系统硬件设计

2.1 nRF24LU1芯片结构及特点

nRF24LU1是NORDIC公司推出的一款将高性能的射频收发器和USB控制器以及8051单片机的功能高度集成到一起的无线收发芯片。nRF24LU1内含一个增强型的8051MCU内核,采用MCS 51指令设计,但大大减少了指令周期,达到传统8051的12倍;16k字节的flash和2k的SRAM;接口包括通用IO口、主从SPI口,UART和USB口,其中USB控制器是全速的USB2.0控制器;2.4GHz的射频传输模块,传输速度可以为1MHz或2MHz,对于其作为无线USB应用有很好的传输速度保证,同时其包括自动回复和重传功能。

nRF24LU1集成电压转换模块,直接由USB总线供电,不需要再加电压转换芯片,节约成本和减少了版面空间。无线USB模块主要由以下几部分组成:匹配电路、USB接口电路和时钟输入接口电路。其硬件电路图如图2。

图2无线模块硬件电路图

3 系统软件设计

3.1 nRF24LU1的USB固件程序

USB的软件开发包括PC端的USB设备驱动端和界面应用程序以及USB芯片端的芯片固件程序开发。USB固件程序就是运行在USB芯片内部的程序代码,它负责USB协议的处理和USB设备和主机的数据传输。

nRF24LU1的USB模块由两个SFR寄存器和SDATA寄存器组来控制,USB固件程序由两部分组成:USB模块初始化和USB中断服务程序。

(1)USB模块的初始化程序

先关闭USB中断,调用端点初始化函数USB_endpoint_init(void)设置传输方式、结构、状态信息和中断。调用USB服务函数USB_service(void)为中断服务程序中调用做准备;打开USB中断,调用函数USB_device_connect(viod),实现全速USB设备的配置,这样就可以响应主机的枚举过程了。

(2)USB模块的中断服务程序

USB控制器提供两个中断信号给nRF24LU1,分别为唤醒中断请求USBWU和USB中断请求USBIRQ信号。USB中断请求下又有许多中断,包括:12个块端点中断、帧开始中断、挂起中断、USB复位中断、建立令牌中断、建立数据有效中断。激活的中断在中断向量寄存器ivec中得到。USB中断请求USBIRQ的部分程序如下:

static void isr_sudav() //有效数据中断

{

hal_usb_dev_req_resp_t ret

uint8_t *data_ptr;

uint16_t data_size;

……

static void isr_sof() //起始帧中断

{

}

static void isr_sutok() //建立令牌中断

{

i_usb.packetizer.data_ptr = NULL;

i_usb.packetizer.data_size = 0;

i_usb.packetizer.pkt_size = 0;

……

}

static void isr_suspend() //挂起中断

{

uint8_t allow_remote_wu = 0;

if( g_hal_usb.state == CONFIGURED )

{if((g_hal_usb.bm_state&USB_BM_STATE_ALLOW_REMOTE_WAKEUP)== USB_BM_STATE_ALLOW_REMOTE_WAKEUP )

{

allow_remote_wu= 1;

}

}

g_hal_usb.state = SUSPENDED;

if( g_hal_usb.suspend != NULL )

{

g_hal_usb.suspend(allow_remote_wu);

}

}

static void isr_usbreset() //复位中断

{

g_hal_usb.state = DEFAULT;

g_hal_usb.current_config = 0;

g_hal_usb.current_alt_interface = 0;

g_hal_usb.bm_state = 0;

if( g_hal_usb.reset != NULL ) g_hal_usb.reset();

}

3.2 nRF24LU1无线模块软件设计:

nRF24LU1使用内嵌的增强型ShockBurst作为RF收发器,增强型ShockBurst具有自动包处理的能力,这使得双向数据连接更为方便。

发射工作原理:通过设置RFCON寄存器中的rfce位为高来激活PTX模式。如果在TX FIFO 有数据,则进入发射模式并发射数据包。如自动重发使能,则状态机检查是否NO_ACK标志已经置位;如果不是,则进入接收模式接收ACK包。如果收到的是空ACK包,则只有TX_DS IRQ中断被设置。如果ACK包包含载荷,则TX_DS IRQ 和RX_DR IRQ两个中断均在返回待机模式-I前被设置。

如果在接收超时前还没有接收到ACK包,则射频收/发将进入待机模式-II并将一直停留在待机模式-II知道ARD的到来。如果还未到ARC所定义的重发次数,则射频收/发部分将进入发射模式再次重发上一个包。当达到最大重发次数时,射频收/发部分设置MAX_RT IRQ中断并返回待机-I模式。图3为PRX工作在增强型ShockBurst模式下的流程图:

图3 ShockBurst模式下的PTX流程图

接受工作原理:通过设置RFCON寄存器中的rfce位为高激活PRX模式。射频收/发部分进入接收模式并搜索有效数据包。如果搜到一个数据包,看RX FIFO是否已满,若不满则设定接收窗口对数据进行接收,如果自动应答使能,射频收/发部分确定是否是一个新数据包,如果是新数据包,数据载荷移入RX FIFO并且RX_DR IRQ中断置位。如果丢失数据包,将会再次收到上一个包,PRX将会丢弃此包并在返回接收模式前发送一个应答包。具体流程图如图4:

图4 ShockBurst模式下的PRX流程图

由于nRF24LU1的无线模块比较成熟,内嵌了一个nRF24L01无线内核,具有强大的无线数据收发功能,在程序初始化过程中对相关的寄存器进行相应的配置就可以进行数据的收发。发送数据时,通过单片机将需要发送的数据送进TX FIFO中,收发器定时扫描FIFO,自动将数据发射出去,接收端会不断的搜寻有效地址,当接收到一个有效地址,接收端接收数据并通过CRC验证,最后的结果通过接收端发回给发送端的握手信号产生相应的中断来执行相应的中断服务程序。

4 总结

本文通过应用无线收发芯片nRF24LU1实现无线数据的传输,更好的解决了USB的无线应用,做成的模块比普通的无线USB模块体积小、成本低、功耗低,提高了无线USB的性能,具有一定的使用价值。

参考文献

[1] nRF24LU1 Objective Product Specification.

[2] 周立功.USB 2.0与OTG规范其开发指南[M].北京:北京航空航天大学出版社.2004.

[3] 谭晖.nRF无线SOC单片机原理与高级应用[M].北京:北京航空航天大学出版社.2009.

[4] 刘荣.圈圈教你玩USB[M].北京:北京航空航天大学出版社.2009.

[5] 黄志伟.单片机无线数据通信IC原理与应用[M].北京:北京航空航天大学出版社.2004.

[6] 任岩松.无线接口及组网的设计与实现[M].西安:西安交通大学出版社.2003.

[7] 肖世文.USB2.0硬件设计[M].北京:清华大学出版社.2002.

[8] 丁保国,陆以勤,孙颖楷.基于NRF24LU1的无线USB模块设计和实现[J].微计算机信息.2009,7-2:240-242.

[9] 李建明,彭建学,于涛.nRF24LU1+的USB无线网络系统设计[J].单片机与嵌入式系统应用.2009,9:36-39.

[10] 肖铎,徐洁,杜鹏英.基于USB口的无线数据收发器[J].电子技术应用,2006,32(7):80-82.

作者简介:谢昌斌(1983-),男,江西赣州人,中北大学通信与信息系统专业硕士研究生,主要研究生方向为无线数据传输技术;张志杰(1965-),男,山西太原人,教授,博士生导师,主要从事动态测试技术与智能仪器研究及通信技术应用研究。

  评论这张
 
阅读(1559)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017