图1 系统连接示意图
引言
在工业生产、科学研究等领域,需要大量的通信设备。这些设备通信距离较近、数据量较小、不适合布线,并且很多设备要求体积小、可移动,便于携带;同时,要求其具有功耗低、成本低、使用方便等特点。本文将要讨论的内容就是基于以上需求的一款便携式高原温度测试仪的无线通信模块的设计方案和实现方法。
1 方案设计
该无线数据传输收发器作为便携式高原温度测试仪的一个核心模块,根据整个系统的设计要求,需要满足以下几项要求:
① 功耗低,体积小,便于携带;
② 控制简单,灵敏度高;
③ 工作范围至少在100 m以内;
④ 工作频段为315 MHz。
CC1000作为一种理想的超高频单片收发通信芯片,可利用分时多工进行双向沟通,工作电压在2.1~3.6 V之间,主要应用于低功耗和低电压的应用领域。它的工作频率一般在315 MHz、468 MHz、868 MHz、915 MHz频段上,通过编程,它可以在300 MHz~1 000 MHz之间工作。另外根据设计需要,选择了高性能、低功耗的8位AVR单片机ATmega128作为主控制器。
2 系统原理和硬件设计
本系统采用ATmega128单片机控制CC1000实现无线数据的收发,连接示意图如图1所示。发送模块对检测到的有用信息进行采样,由微控制器进行数据分析后送给CC1000进行编码处理,并以特定的格式经天线发送给接收模块。接收模块对接收到的射频信号放大、解调之后,再将数据送给主控制器ATmega128进行相应的处理,如信息识别、分离和实时显示等。
2.1 射频部分硬件设计
射频模块包括射频发送模块和射频接收模块,主要由ATmega128、CC1000、传感器等组成,其中CC1000及其外围电路是射频收发电路的设计关键。下面详细介绍CC1000电路的设计。
(1) CC1000电路设计
在设计中,LC滤波电路加在天线与CC1000匹配电路之间,用于减少发射时的谐波并提高接收时的灵敏度。为了滤除电源中的高低频杂波,降低电路的噪声,在典型电路的基础上,又在电源部分增加了10个滤波电容。
模块的发射和接收频率由射频芯片CC1000的晶振及外部元件决定。本系统选择的发射频率和接收频率均为315 MHz,这时需接7.372 8 MHz晶振。
(2) CC1000优化配置设计
在CC1000设计中,对CC1000的相关寄存器进行相应的优化配置至关重要,错误的配置可能导致CC1000不能正常工作。
为了配置不同的工作模式,首先需要对CC1000寄存器MAIN进行配置,包括发送或接收模式、LNA、Mixer、IF、Demodulator开关的选择。另外,为了满足电池供电情况下对电源损耗的严格要求,通过设置MAIN寄存器为低电平模式,分别控制接收部分、发送部分、频率合成和晶振。这种独立控制可使电流损耗达到最低值。当调制数据时,通过对3个MODEM寄存器的设置,CC1000可设置为3种不同的数据传输形式,分别是同步NRZ模式、同步曼彻斯特码模式和异步传输模式,根据传输的需要选择数据格式。
CC1000进行初始化配置时,配置顺序也有严格的要求。表1为本系统设计中CC1000的初始化寄存器配置顺序及其配置值。
表1 主要寄存器的配置值和配置顺序表
2.2 控制部分硬件设计
本系统主要采用ATmega128作为主控制器,实现对射频部分的收发控制和相关数据的分析处理。ATmega128主要通过与CC1000的PCLK、PDATA、PALE、DCLK、DIO引脚对CC1000进行配置并进行相关数据的传输。首先,通过CC1000的三线串行数据口(PCLK、PDATA、PALE)实现对CC1000的参数配置。然后,待CC1000工作稳定之后,通过DCLK和DIO引脚传送时钟和数据,实现数据收发;同时利用RS232接口进行单片机与PC机之间的通信,实现在线调试。
(1) 发送部分的控制
传感器将采集到的数据发送给ATmega128,ATmega128将数据通过I/O口送给CC1000;CC1000被激活并进入发射模式,将数据转换为数据帧发送给接收模块。在发送之前,ATmega128需要对CC1000进行初始化并配置相应的寄存器。
(2) 接收部分的控制
在接收模块中,CC1000和ATmega128通过中断方式进行数据传输。在接收状态,DCLK作为数据同步时钟,由主控制器ATmega128检查CC1000是否收到有效的数据信息,然后产生中断,接收CC1000传输过来的数字信号。ATmega128将接收到的数据进行译码,从数据流中提取温度等相关参数值,然后做出相应的处理,如更新当前温度、声光报警等。在接收之前,ATmega128同样要对CC1000进行初始化并配置相应的寄存器,然后等待接收数据。
3 系统软件设计
为实现发射模块与接收模块之间可靠的无线通信,两者之间必须以一定的协议进行。我们采用的是自定义的点对点通信协议,其数据帧格式如下
3.1 发送部分软件设计
发射模块的主程序流程如图2所示。当CC1000检测到唤醒命令时被激活并唤醒ATmega128,ATmega128配置CC1000进入发射模式。ATmega128采集传感器检测的数据并对其进行处理之后,由CC1000发送出去。发送成功后,CC1000和ATmega128重新进入休眠状态,以减少功耗。
图2 发送模块的程序流程
3.2 接收部分软件设计
接通电源后,ATmega128先进行初始化,再对CC1000进行配置。当MCU检测到信号时,给发射模块发送激活命令。发送命令成功后,立刻进入接收模式。若CC1000接收状态准备好,则可以接收数据。若接收到的数据是有效的,则将接收到的数据送给主控制器处理并保存。若检测到的温度等相关参数值偏离正常值,则进行报警。接收模块的程序流程如图3所示。
图3 接收模块的程序流程
3.3 关键程序设计
CC1000作为射频部分的核心电路,其配置参数的写时序如图4所示。PDATA的一次写入周期为16位,前7位(A6:0)为地址位;A6是地址中的MSB且为第一个传输位,并在A0后接一个bit位为1的值表示进入写模式,在传输该8位时,PALE保持低电平。当PDATA传输数据时,PALE必须为高电平。PDATA一次读周期也为16位,与写时序的区别在于A0之后接一个bit位为0的信号表示为读模式。读时序如图5所示。
图4 CC1000写时序
图5 CC1000读时序
4结论
本文提出的基于无线收发芯片CC1000的全双工数据收发器,充分利用无线收发芯片CC1000、ATmega128和传感器的特性,在采用低功耗的工作模式下,发送数据包成功后CC1000可以进入休眠状态,大大降低了模块功耗。同时,由于采用了ATmega128单片机作为主控制器,使得对整个系统的控制更加容易。在高频段数据的传输过程中,由于数据的稳定性和可靠性要求,需要采用不同的编码来适应不同的应用环境。整个系统的设计为无线数据传输提供了一个很好的解决方案。