低功耗无线数字传输模块的设计与应用
摘要:介绍了一种以PIC16F73单片机芯片和CC1000调制解调芯片为核心的超低功耗无线数字传输模块的设计方案及实现方法,并给出了该模块在无线智能IC卡水表中的应用。该模块通信速率最高可达38.4kbps,查询工作方式下平均工作电流为10μA,与同类设计相比,该模块具有功耗低、使用方便、通信可靠等优点。
关键词:无线通信 低功耗 移频键控 PIC16F73单片机芯片 CC1000调制解调芯片
在工业、科学研究以及医疗设备中,目前出现了大量需要进行通信的设备,这些设备通信距离较近、数据量较小、不适合布线。比如自动抄表系统、酒店点菜系统以及现场数据采集系统等,其中有很多设备是可移动的,而且要求何种小便于携带。因此,要求其通过设备具有体积小、功耗低、成本低、使用方便等特点。基于这些需求,本文给出了一款超低功耗的无线数字传输模块的设备及实现方法。
该模块采用Chipcon公司的超低功耗FSK调制解调芯片CC1000和Microchip公司的低功耗单片机PIC16F73,从而保证了系统的超低功耗。同时,为了适应电池供电系统的应用,该模块支持查询方式的无线通信,可以使系统的平均工作电流低至10μA。该模块具有8组信道,可以实现点对点、点对多点的半双工通信,并且提供标准串行数据接口,支持TTL、RS232和RS485通信接口,可以方便地与其它控制器或计算机连接。
图1
1 模块硬件设计
模块结构框图如图1所示。
作为工作在物理层和数据链路层的底层通信设备,该系统完成数据的调制解调、假数据过滤、数据组合、解码数据帧、数据校验等功能。在接收过程中完成数据由电信号向位流、由位流数据向字节,由字节向数据帧的变换,而在发送过程中则完成接收到的逆向过程。数据发送过程中数据流的变化如图2所示。
调制解调由CC1000完成。系统采用频移键控调制(FSK),载波频率为434MHz,带宽为64kHz,数据采用差分曼彻斯特编码发送,空中发送数据速率可以根据需要设置,最高FSK数据速率为76.8kpbs。CC1000采用三线命令接口和两线数据接口,可编程配置载波频率和数据速率等内容。有关CC1000的详细内容见参考文献。
模块控制器在发送时从用户接口接数据和命令,并将用户数据转换成数据帧传送给CC1000,控制CC1000进行数据发送。在接收时,控制器接收从CC1000传送过来的数据,分析数据,过滤噪声,将数据由位流转换为字节,进行校验并将用户数据通过串行口传送给用户,使用户可以实现所发即所收。
javascript:window.open(this.src);" style="cursor:pointer;"/>
模块是为低功耗系统而设计的,除了具有SLP引脚可以直接休眠模块外,还有一些专门设计的命令来支持使用查询方式的通信。PCMD、RX、TX三线组成模块的三线接口,配置命令时PCMD必须为高电平。配置命令工作时序如图3所示。
发送数据时PCMD应置为低电平,通过串行口发送数据即可。模块使用时间间隔区分数据帧,如果有传输半个字节的时间没有接收到数据,则认为此前接收到的为一帧数据,系统将编码该帧数据并通过CC1000进行调制和发送。因此,如果用户数据是以数据帧的格式发送的,用户应当连续发送数据,以避免模块将一帧数据分割为两帧数据发送,从而降低发送效率。模块只能进行半双工通信,没有数据发送时模块处于接收状态;有休眠信号时模块进入体眠状态,此时模块无法接收和发送数据,只有将模块唤醒后,才能发送和接收数据。READY信号是模块工作状态指示信号。当READY长时间处于低电平状态时,可以使用RST将模块复位,重新设置模块的工作状态,以避免模块处于错误工作状态。
2 软件设计
系统软件采用专门为PIC单片机进行了优化,能够为PIC系列单片机产生优质高效的代码,具体内容参考文献。系统控制器软件设计是本系统的核心内容,由于控制器要完成与用户和CC1000双方的通信及数据封装,因此系统软件借用Windows系统的消息循环机制设计,采用消息循环的体系结构。这种结构使得程序结构清晰、可扩展性强、可移植性强。经过长时间的初中,证明这种结构非常适合单片机系统软件的开发。
javascript:window.open(this.src);" style="cursor:pointer;"/>
图4为程序初始化和主函数部分的结构框图。系统程序总线结构采用消息驱动机制。在系统内部寄存器和变量初始化完成后便可以进入消息循环程序查询系统消息。系统消息一般是CPU外部或内部的事件通过CPU中断系统激励CPU运行的。为了能够使系统产生和响应消息,必须启动CPU的中断系统,因而在进入消息循环前启动CPU定时中断、串行通信中断、外部触发中断。程序初始化部分在CPU上电或复位后只执行一次,CPU在正常工作时即将终都在消息循环中反复检测消息是否存在,并根据消息的种类做不同的操作,最后清除相应的消息标志,再进行循环检测消息。本系统中消息共有三种,分别是程序节拍控制信号、与CC1000通信的信号以及与用户通信的信号。程序节拍控制信号控制程序的运行过程,包括时间信号、外部中断信号(休眠、唤醒)以及其它定时动作信号;与CC1000通信的信号包括CC1000状态转换信号、接收完成信号、发送开始信号以及发送完毕信号等,负责管理与CC1000的通信和控制工作;与用户通信的信号包括接收用户数据完毕信号、用户数据发送完毕信号以及向用户发送数据开始信号等,负责与用户的通信管理。程序的消息循环结构如图5所示。
3 模块性能javascript:window.open(this.src);" style="cursor:pointer;"/>
3.1 模块功能
作为一款专门为低功耗系统而设计的无线数字传输模块,该模块具有低电平供电、低功耗的特点。供电电压范围为3V~12V。当供电电压为3V时,在接收状态下,模块电流为9.6mA;在发送状态下,模块电流为25.6mA;在休眠状态下,模块电流为2μA。通信系统使用查询方式工作时,处于接收的工作电流计算公式如下,即若休眠时间为dsl,检测信号时间为tdt,那么平均工作电流为(单位为μA
):
Ip=(tsl×2+tdt×9600)/(tsl+tdt)
因此,如果一个系统的休眠时间为8s,检测时间为13μA。这样,5400mAh的锂电流可以使用47年!当然,实际使用中应该计算模块处于接收状态时的电流,此时模块的功耗就取决于模块工作的情况和传输数据量的大小,但是其极低的待机功耗对于移动设备来说是十分重要的。
3.2 通信可靠性
通信误码率可以使用如下近似公式计算:
Pe≈Ne/N
式中,N为传输的二进制码元总线;Ne为被传输错的码元数,理论上应有N→∞。
在实际使用中,N足够大时,才能够把Pe近似为误码率。经过对模块的测试,在数据速率为2400bps、通信距离为100m(平原条件)时,通信误码率为10-3~10-5。在数据速率提高时,通信误码率会增加,但是通信模块可采用多项技术来提高通信可靠性。在物理层,模块采用差分曼彻斯特编码技术发送数据,从而保证通信中的同步问题;而在数据链路层,使用CRC(循环冗余编码)进行数据帧校验,用以保证数据到达用户应用层以后的可靠性。当然,用户在应用层还可以采取多种通信协议来进一步提高通信的可靠性。
3.3 通信距离
在无线通信中,通信距离与发射机发送信号的强度和接收机接收灵敏度有着直接关系。本模块的发送功率为10dBm,而在数据速率为2400bps、带宽为64kHz、通信二进制误码率为10-3条件下,模块的接收灵敏度为-110dBm。在天线高于地面3m的可视条件下,可告通信距离(误码率小于10-3)大于300m。在市区环境中,可靠通信距离在10m左右。
图5
4 模块应用
无线智能IC卡水表由负责显示和读写IC卡的上位机和负责阀门控制的下位机组成,上位机和下位机之间的通信使用无线数字传输模块完成,系统结构如图6所示。上位机负责人机接口,包括显示下位机状态、显示剩余水量、读取IC卡以及与下位机通信等功能,下位机完成水脉冲计数并接收上位机的指令控制阀门开关状态。由于本系统采用电池供电,所以要求系统的功耗必须非常低。水表的上位机和下位机均采用Microchip公司的低功耗单片机PIC16F73,下位机工作在查询状态。
无线智能IC卡水表的通信方式如下:通信由上位机发起,当需要通信时(按键被按下或插入IC卡时),上位机首先发送10s的同步头,然后发送地址,其后等待下位机应答。而下位机使用查询的方式与上位机进行通信,即下位机每9s唤醒一次无线通信椟以检测是否有同步头信息,检测时间为10ms。如果没有同不头信息,并进行解密和地址判断。如果接收到的地十为本机地址,则分析指令并进行响应,否则转入休眠。因为上位机发送同步头的时间大于下位机休眠的时间,所以保证了通信的可靠性。这种通信方式虽然速度较慢,但是却使得下位机的功耗大大降低,延长了下位机电池的寿命。在该系统中,由于数据量较小,所以通信速度不是关键问题,而低功耗才是系统最重要的问题。
javascript:window.open(this.src);" style="cursor:pointer;"/>
基于CC1000的低功耗无线数字通信模块完成了设计目标,达到了低功耗、高可靠性的通信要求,并且通信速度可以达到38.4kbps,所以可以满足大部分短距离无线数字通信的要求。当然,由于系统的功耗比较低,使得发射功率较小,通信距离比较近。因此,在对通信距离要求更高时,可以适当加大发射功率,以增加传播距离。目前该模块已经在无线智能IC卡水表中使用,工作稳定。