我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 942|回复: 0

基于nRF24L01的无线USB控制系统 - 通信/网络 - 电子工程师俱

[复制链接]

该用户从未签到

1万

主题

1292

回帖

2万

积分

管理员

积分
29577

社区居民最爱沙发原创达人社区明星终身成就奖优秀斑竹奖宣传大使奖特殊贡献奖

QQ
发表于 2013-3-30 00:33:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
<strong>0 引言</strong>

当今,无线技术飞速发展,应用的领域越来越广,与有线技术相比,无线技术具有方便、灵活、减少布线施工难度、降低成本等优点。本文阐述了无线USB控制系统的组成、功能和设计方法,系统由PC、无线USB控制器和多个终端节点组成,本文分别给出了实现无线USB控制器和终端节点的一种方案:无线USB控制器的方案是以单片机STC89C58RD+为微控制器,基于Nordic公司的2.4GHz的无线收发芯片nRF24L01,结合Philips公司的 PDISUBDl20D USB控制芯片来实现的;终端节点的方案是以STC89C58RD+为微控制器,基于nRF24L01无线收发芯片和根据需求的实际应用电路来实现的。

<strong>1 系统组成及其实现方案</strong>

1.1 系统描述

如图1,无线USB控制系统的组成包括PC、无线USB控制器和终端节点(n个)。PC和无线USB控制器之间通过USB接口进行通信,在PC端,用 VC++开发应用程序实现对无线USB控制器进行控制,无线USB控制器和各个终端节点通过无线收发芯片nRF24L01实现无线通信。


<ignore_js_op>





2010-3-24 22:27:27 上传
<strong>下载附件</strong> (11.73 KB)




</ignore_js_op>


1.2 系统实现方案

1.2.1 无线USB控制器实现方案

无线USB控制器实现方案如图2所示,主要包括微控制器STC289C58RD+、USB控制芯片PDIUSBD12和无线模块nRF24L01 Module。STC89C58-RD+内含32KB程序存储器、1280B RAM和16KB E2PROM,E2PROM可用来存储终端节点的地址及需要掉电存储的其他数据,32KB程序存储器和1280B RAM可以满足绝大多数应用需求。USB控制芯片PDIUSBD12是一个性能优化的USB控制器件,完全符合USBl.1规范,支持本地DMA传输,用于基于微控制器的系统。USBl.1最大支持的传输速度是12Mb/s,比一般的PC接口速度都快,足够满足无线USB控制系统的应用。无线模块部分采用 Nordic公司的nRF24L01单片射频收发芯片,该芯片工作于2.400~2.4835GHz的ISM(工业、医学和科学)频段,工作电压为 1.9~3.6V,有多达126个频道可供选择,支持多点间通信,最高速率达2Mb/s,内置链路层,减少了MCU的复杂性和成本,提高了数据传输的可靠性,而且只需少量的外围元件便可组成射频收发电路,具有体积小、功耗低、性价比高等优点。


<ignore_js_op>





2010-3-24 22:27:27 上传
<strong>下载附件</strong> (6.96 KB)




</ignore_js_op>


1.2.2 终端节点实现方案

终端节点实现方案如图3所示,主要包括微控制器STC89C58RD+、无线模块nRF24L01 Module和实际应用需求的扩展电路。STC89C58RD+微控制器和nRF24L01无线模块构成终端节点与无线USB控制器之间无线通信的基础,终端节点的扩展电路是根据实际应用需求来设计的,如应用于温度数据采集系统,则扩展电路应是温度传感器的电路,终端节点的灵活设置使得整个系统可以满足多种应用场合的需求。


<ignore_js_op>





2010-3-24 22:27:27 上传
<strong>下载附件</strong> (8.01 KB)




</ignore_js_op>


<strong>2 系统的硬件部分</strong>

2.1 nRY24L0l无线模块原理图

nRF24L01是挪威Nordic VLSI公司推出的单片射频收发芯片,20个引脚4mm×4mm QFN封装,内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,采用Enhanced ShockBurst技术,使用SPI接口与微控制器通信,速率为O~8Mb/s,配置方便。nRF24L01适用于无线数据通信、无线个人电脑外设、无线报警及安全系统、无线开锁、无线监测、家庭自动化和玩具等诸多领域。关于该芯片的具体功能和工作模式及其编程过程请参照参考文献。该模块电路原理图,如图4所示。


<ignore_js_op>





2010-3-24 22:27:28 上传
<strong>下载附件</strong> (18.38 KB)




</ignore_js_op>


nRF24L01模块在PCB布线时采用双面板,底层全部铺地,顶层放置元器件,所有电容电阻电感采用0402封装电容电感电阻尽量靠近芯片引脚,顶层也需大面积铺地,在顶层和底层放置大量的通孔。该模块供电电压为3.3V,SPI接口可以直接与5V的MCU的IO口相连接,无SPI接口的MCU可以用 IO口模拟SPI时序,使用方便。

2.2 USB控制芯片PDIUSBDl2原理图

PDIUSBD12是一款性价高的USB控制芯片,它与MCU配合使用,这使得设计者可以灵活地选择MCU,它与MCU之间通过并行接口通信,还支持本地 DMA传输。图5是PDIUSBD12与STC89C58RD+单片机连接的原理图。

上图未画出STC89C58RD+单片机,只给出了网点名称,如P00-P07、P27、ALE、INTl、WR、RD,STC89C58RD+与标准的 80C51(如AT89S51)引脚完全兼容,PDIUSBD12与MCU的连接有2种方式:总线方式和分开的地址数据方式。采用总线方式时引脚10的 ALE连接MCU的ALE,引脚28的A0接到高电平;采用分开的地址数据方式,则ALE连接低电平,A0连接任意的IO口,数据或地址(命令)由A0来区分。图5采用总线方式。另外该无线USB控制器直接使用USB接口供电,省去了电源,降低了成本。

<strong>3 系统的软件部分</strong>

3.1 USB的固件与PC端应用软件设计

当USB设备连接到主机后,主机要先进行一系列的枚举过程,枚举就是从USB设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。枚举过程使用控制传输,对于USB设备来说,固件所要处理的是必须对主机发来的标准设备请求进行相应的正确的响应,除此之外依据USB设备的类型还要响应主机发来的USB设备类请求。另外如果开发属于生产商自定义的USB设备类,则需要开发驱动程序。为了减少开发驱动程序的复杂性,可根据实际情况使用USB标准设备类,现有的设备类有以下几种:音频设备类、通信设备类、HID设备类、显示设备类、海量存储设备类、电源设备类、打印设备类、集线器设备类等,例如可选择做成assStorage类(海量存储设备类)或HID(人机接口)设备类,这样无需开发驱动程序,直接利用操作系统自带的驱动程序。本系统模拟成一个海量存储设备类,这样在枚举过程中固件除了要响应了标准的USB设备请求外,还需要响应2个类特殊请求:GetMaxLun和BulkOnlyMassStorageReset,正确枚举之后PC机通过发送SCSI命令来控制U盘设备,对于海量存储设备类要响应以下几个命令:INQUIRY、READCAPACITY、READ(10)、WRITE(10)、REQUEST SENSE、TEST UNIT READY等,除此外要自定义私有的SCSI命令,以实现控制无线USB设备。另外还要构造一个FAT文件系统的格式,要正确返回DBR和FAT文件分配表以及文件数据。

PC端应用程序的开发采用VC++6.O平台,本设备模拟成MassStorage设备,那么PC与设备通信通过SCSI命令,使用时候除了标准的 SCSI命令外,可以自己定义私有的SCSI命令,程序主要通过自定义的私有的SCSI命令来实现与无线USB控制器的数据通信,应用程序首先用 Create-File()打开设备,之后主要调用DeviceIoControl()函数来实现数据通信,最后用CloseFile()关闭设备。该函数的使用可参考MSDN。

以上部分的软件是整个系统开发的难点,所涉及的知识点范围广,图6是实际开发成功的模拟成MassStorageDevice类的无线USB控制器。


<ignore_js_op>





2010-3-24 22:27:27 上传
<strong>下载附件</strong> (9.59 KB)




</ignore_js_op>


3.2 nRF24L01的固件设计

nRF24L01与MCU之间通过SPI接口通信,本系统所采用的单片机STC89C58RD+无SPI接口,故通过IO口模拟,nRF24L01采用 ShockBurstTM进行可靠的发送和接收。采用AutoAck、自动重发的配置过程如下:

发送过程配置:

  1)配置发射功率、数据速率、载波频率、CRC校验位数、发送的地址宽度和数据宽度、AutoAck、自动重发次数等。
  2)配置:PRIM_RX位为0。
  3)配置要通信的的终端节点地址TX_ADDR和要发送的数据到TX_PLD,配置发送端RX_ADDR的值与TX_ADDR的值一样。
  4)CE从低到高跳变芯片开始发送数据,CE至少需要10μs。
  5)读取STATUS寄存器,判断发射成功与否。

接受过程配置:

  1)配置发射功率、数据速率、载波频率、CRC校验、接收的地址宽度和数据宽度等等,其中数据速率、载波频率、CRC校验位数、接收的地址宽度和数据宽度必须和发送端一致。
  2)PRIM_RX位配置为1,配置EN_RXADDR寄存器使能所有数据管道。
  3)CE从低电平跳变为高电平,130μs后nRF24L01开始监视空中的无线信号。
  4)当IRQ中断时,中断服务程序里面读取STATUS寄存器,判断是否接收到有效的数据。
  5)收到有效数据则设置CE为低电平,nRF24L01进入standby-I模式。MCU读取接收到的数据。

图7和图8是无线USB控制系统应用于控制多终端频率发生器系统的实际软件和硬件。

<strong>4 结束语</strong>

整个系统通过实际验证满足了设计要求,USB工作稳定,速度快,RF24L01无线模块通信正常、距离远、误码率低、稳定性高。本系统可应用于大部分需要 PC进行无线控制或无线数据采集的场合,只需要扩展终端节点的应用电路,即可以满足不同的应用需求。系统具有可靠性好、性价比高、扩展性强和使用方便。

作者:黄秀节 颜可煌 赵伟 电子科技大学
来源:现代电子技术
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

公告:服务器刚移机,
大家请不要下载东西。
会下载失败


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表