当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于nRf2401和CP2102的USB2.0无线测控网络

0 前言

  现在,越来越多的无线技术被应用到自动控制系统中。nRf2401是挪威Nordic公司推出的单片2.4GHz无线收发一体芯片,支持多点间通信,最高传输速率达到1Mbit/s,可以用于无线网络中。

  USB2.0口传输速率是480Mbps,有即插即用和热插拔功能。接口提供内置电源,可以向外设提供5V和最多500mA的电源。因此在以计算机为上位机的控制系统中,USB口比较适合作为计算机与测控网络的接口。

  USB接口器件的开发过程比较复杂,开发者需要知道USB协议、USB设备驱动程序开发、主机应用程序开发等知识,使用USB-UART桥接电路CP2102可以避免上述麻烦。

  1系统的设计思想及nRf2401和CP2102介绍

  系统的设计思想如图1所示。系统是由 CP2102、nRF2401、单片机等组成。

  图1  系统设计思想

  nRF2401是业界体积最小、功耗最低、外围元件最少的低成本射频芯片。有125个频道,速率(0~1Mbps)、发射功率和工作频率等所有工作参数可编程设置。每个芯片可以通过软件设置最多40bit地址,而且只有收到本机地址时才会输出数据。内置CRC纠检错硬件电路和协议。nRf2401内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块。工作于2.4~2.5GHz ISM自由频段,采用SoC方法设计,只需少量外围元件便可组成射频收发电路。nRF2401没有复杂的通信协议,它完全对用户透明,同种产品之间可以自由通信。

  CP2102是美国Silicon公司生产的高集成度USB-UART桥接电路。它们能够用最简单的外部电路、最少的外部器件简便实现USB2.0到UART的转换。

  使用CP2102作为USB接口器件最大的特点是开发方便:①厂商免费提供适用于Windows(含Windows CE)、Linux等操作系统的驱动程序。驱动程序将计算机的USB口虚拟成一个COM口,计算机使用普通操作串口的命令访问虚拟COM口。②内置USB2.0全速功能控制器、USB收发器、48MHz内部晶体振荡器、1KB字节 E2PROM及异步串行数据总线(UART),电路无需任何外部的USB器件。③CP2102的UART接口波特率为300bps~921.6kbps,可以满足无线网络的传输要求。

  2硬件电路的实现

  上位机系统电路如图2所示。单片机选用ATmega16,是ATMEL公司生产的高性能、低功耗的8 位AVR® 微处理器,采用先进的RISC 结构,数据吞吐率高达1 MIPS/MHz。片内集成有16K 字节可编程Flash、512 字节的E2PROM、1K字节的SRAM、两个可编程 的串行UART和可工作于主机/从机模式的SPI 串行接口。

  图2 上位机系统电路

  CP2102无需外部电阻和晶体,VBus与REGIN引脚连到USB接口的Vbus端,在REGIN端加1μF的去耦电容。CP2102与单片机接口是标准UART电平,RTX、TXD引脚分别是串口的接收、输出端,与单片机的对应引脚相连。CP2102的USB端与计算机的USB口连接。CP2102的SUSPEND脚是USB口挂起信号端,接到单片机的PC4引脚。

  图3 无线收发模块

  上位机所有器件均由计算机的USB口提供电源。ATmega16L的电源电压范围为2.7~5.5V,nRF2401的电源电压范围为1.9~3.6V,利用计算机USB口的+5V电源,通过MIC2937A芯片将电压转换为3.3V。

  无线收发模块电路如图3所示。nRf2401外围元件很少,可使用单鞭天线或环形天线,电感需要采用高Q高精度的贴片绕线高频电感,晶体需采用高稳定晶体,电容应选用高稳定贴片元件。nRf2401通过SPI接口与单片机进行通讯,ATmega16集成了SPI接口(CLK、MISO、MOSI引脚),与nRf2401的CLK1、DATA相连接。nRf2401的CS是片选端,CE是发送或接收控制端,PWR_UP是电源控制端,分别由单片机的PC5、PC6、PC7引脚控制。nRf2401的DR1为高时表明在接收缓冲区有数据,接单片机的中断引脚。

  3 单片机程序设计

  3.1单片机对串口的编程

  ATmega16集成有串口,使用前需要先对它进行初始化。具体过程如下:①UCSRA=0,异步正常模式;②UBRR=1,设置波特率为500Kbps;③UCR= 0x98,使能接收中断,允许发送;④SREG=0x80;//开中断。

  初始化后,可以通过串口与CP2102进行数据交换。采用中断方式接收,当有串口数据到达时单片机产生中断,单片机响应中断从接收缓冲器读入数据。串口接收中断程序如下:

  #pragma interrupt_handler uart_rec:8

  unsigned char i;

  void uart_rec()

  {i=UDR;}

  串口发送程序如下:①UDR=1,发送数据;②while(!(USR&0x40)),等待发送结束;③USR&=~0x40,清发送完标志。

  3.2单片机对nRf2401的编程

  单片机对nRf2401的编程包括对nRf2401进行配置、发送数据、接收数据等程序。

  当PWR_UP=1、CE=0、CS=1时nRf2401进入配置工作状态。配置字最高可达18字节,作用是使nRf2401子系统能够处理RF协议。配置字从最高位开始,依次通过SPI接口(CS、CLK1和DATA)送给配置寄存器。本系统配置为ShockBurst方式,配置字分为如下四块:有效数据宽度(DATA2_W和DATA1_W)、地址宽度(ADDR2和ADDR1)、接收频道地址(ADDR_W)、CRC配置(CRC_L和CRC_EN)。其值从高到低分别为8EH, 08H, 1CH, 20H, 50H, 0AH, 0

 

BH, 0CH, 0DH, 0EH, 0AAH, 28H, 0AH, 0BH, 0CH, 0A3H, 6FH, 65H。配置后nRf2401的通道1数据段长度80bit(其中nRf2401的序列号8byte + 2byte温度数据),地址段长度40bit,通道1硬件地址0AAH, 28H, 0AH, 0BH, 0CH,启用16位片上校验功能,单通道接收,突发传递模式,通信速率1Mbit/s,晶振频率16MHz,工作频段2.450GHz,开始处于接收状态。

 

  当PWR_UP=1、CE=1、CS=0时为收发方式。ShockBurst发送过程如下:①CE=1,nRf2401开始工作;②将接收节点地址写入nRf2401;将需要发射的数据写入nRf2401;③CE=0,激活ShockBurst发送。

  通过中断方式接收数据。当有数据需要接收时,nRf2401会将DR1置高产生中断信号,接收完毕后DR1又会被置低。首先配置中断0为上升沿触发方式(ISC01=1, ISC00=1),具体接收过程如下:①校验接收到的RF包的地址和欲接收的RF包中有效数据的长度;②CE=1,激活RX;③经过200μs处理,nRf2401子系统监视启动并等待信号的到来;④当收到一个有效的数据包(正确的地址和CRC),nRf2401子系统移去前缀、地址和CRC位;⑤nRf2401子系统通过把DR1置高,产生中断信号;⑥CE=0,RF设为低功耗方式;⑦单片机取出有效数据,需要注意的是,每接收一个字节需要先写0xff 到nRF2401。

  完整的射频数据包由四部分组成:前缀、地址、有效数据和CRC。前缀一般是8位(也可以设置为4位,由地址的首位决定)。如果地址的首位是0,前缀为01010101;如果地址的首位是1,前缀为10101010。ShockBurst方式下,CP2102接收到有效的数据包后,自动移去前缀、地址和CRC,只留有效数据。

  4 计算机控制软件的编程

  当把CP2102与计算机连接时,系统会提示发现新硬件,并要求安装驱动程序,执行CP2102驱动程序的安装文件即可。驱动程序安装后,在设备管理器中会有CP2102虚拟的COM口(一般是COM3)。

  VB开发环境集成有串口控件MSComm,该控件是将RS-232的初级操作予以封装,用高级的Basic语言即可实现串口数据的发送和接收[2]。

  首先向工具箱添加MSComm控件,并产生一个串口对象,取对象名为“MSc”。然后编程对MSc进行初始化,步骤如下:①MSc.CommPort=3, 选择安装驱动程序后计算机虚拟的COM3口;②MSc.Settings = "500000,n,8,1",设置通信波特率是500kbps,无校验,8位数据,1位停止位;③MSc.InputMode=1,数据以二进制形式存取;④MSc.RThreshold=1,每收到1个字符都触发接收事件;⑤MSc.PortOpen=True,打开串口。

  发送数据只是向控件的Output属性写数据即可,既MSc.Output=输出的数据。

 

  接收数据采取事件驱动方式,程序代码如下:

  Public Sub msc_OnComm()

  Select Case MSc1.CommEvent

                       Case comEvReceive

 

                                   av = MSc.Input  ‘接收数据

                                   ……‘根据接收的数据进行处理

  End S

       elect

 

     End Sub

  5 结束语

  本系统通过CP2102实现USB2.0接口,通过nRf2401通实现无线数据收发,具有开发简单、可靠性高等特点,传输速率可以达到900kbps,在工业控制、消费电子等各个领域都具有广阔的应用前景。本文的创新点:系统使用CP2102芯片实现USB2.0接口,芯片厂商免费提供驱动程序,计算机端程序开发方便。使用nRf2401实现无线数据收发,有内置地址设置、CRC纠检错、工作于自由频段优点。文章给出详细的硬件电路和软件程序。

  参考文献

  [1] Silicon Laboratories Inc.CP2102 Product Data Sheet, http:// www.silabs.com,2006

  [2] 范逸之等.Visual Basic与RS-232串行通信控制.北京:中国青年出版社,2002.1

  [3] nRF240x Configurator User Guide. Nordic VLSI document, Nordic Cooperation.

  [4] 彭祖林,邓罗根,刘细华.用于测量体温的无线实时监测系统的设计与实现[J].微计算机信息,2005,1:59-61

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭