1 引言
随着现代科技的飞速发展,无线通信技术成为人们日益关注的问题之一。在工业系统控制中。短距离无线通信技术应用也越来越广泛。水阻试验是内燃机车恒功率负载试验的主要方式之一,本文论述了在对内燃机车智能化水阻试验系统数据采集部分的改进中。将原来的有线数据采集改为无线数据采集传输方式的无线模块设计。
2 总体设计
无线模块的基本电路图如图1所示.主要由电源、复位电路、串口连接电路和无线收发电路组成。可实现串口数据的无线收发。即:发送数据时,RS232串口数据经过MAX232将电平转换为TTL电平。再通过CC2430无线发送。接收数据则是发送数据的逆过程,CC2430先接收到数据信号。然后经MAX232将TTL电平转换为RS232的标准电平,再通过RS232向上位机输入数据。
3 硬件设计
无线模块采用的无线收发器是CC2430。CC2430出自挪威Chipcon公司。是一款真正符合IEEE802.15.4标准的片上ZigBee产品。CC2430采用Chipcon公司最新的SmartRF03技术和0.18um CMOS工艺制造,采用7mm×7mm QLP48封装: 除了包括RF收发器. 还集成了加强型8051MCU、32/64/128 KB 的Flash 内存、8 KB 的RAM、ADC、DMA、看门狗等。CC2430工作在2.4GHz频段,采用低电压(2.0 V~3.6 V)供电且功耗很低(接收数据时为27 mA。发送数据时为25 mA)、灵敏度高(-97 dBm)、最大输出为24 dBm、最大传送速率为250 kb/s。
CC2430的外围元件数目很少。它使用一个非平衡天线,连接非平衡变压器使天线性能更好。电路中的非平衡变压器由电容C12和电感L1、L2、L3以及一个PCB微波传输线组成,整个结构满足RF输入/输出匹配电阻(50Ω)的要求。内部T/R交换电路完成LNA和PA之间的交换。R4、R5为偏置电阻。其中R4主要用于为32 MHz的晶体振荡器提供合适的工作电流。用一只32 MHz石英谐振器和两只电容(C13、C14)构成32 MHz晶体振荡器电路。电压稳压器为所有1.8 V电压的引脚和内部电源供电.Cl1、C15是去耦电容。用于电源滤波。
由于CC2430具有低功耗的特性,因此,选用两节干电池为模块供电。另外还选用了AH805升压稳压器。可将3 V电压升高至5 V。此故电源部分可提供3 V和5 V两种电压,其中3 V电压为CC2430供电。5 V电压为MAX232和复位电路供电。
复位电路采用典型的RC复位方式,它具有上电复位和手动两种复位功能,且低电平有效。值得注意的是。为了使系统达到有效复位,应使RESET-N端保持10 ms的低电平。当复位结束后立即对该器件进行初始化时。很容易发生错误。所以,进入0000H地址后。应首先执行1ms-10ms的软件延时。然后再进行初始化。
由于模块采用RS232与上位机相连,因此,需要用MAX232将RS232电平转换为TTL电平。
4 程序设计
无线模块的设计包括硬件连接及CC2430软件设计。编写软件程序首先要弄清楚数据在模块中的传输路径及其过程,如图2所示。
图2 数据在无线模块中的传输路径
发送数据时, 数据通过串口USART进入CC2430的DATA 内存区。对水阻试验台来说,DATA内存区的高128字节能够满足存储容量的要求,因此将数据存放在DATA内存区的高128字节中。为了提高数据的传输速度,使用DMA传输方式将内存区中的数据传送到Radio的先进先出缓存器TXFIFO中。数据进入Radio后,经过一系列的硬件处理。最后通过天线向发射无线信号。
接收数据是发送数据的逆过程。Radio从天线接收到无线信号,通过一系列的硬件处理,将信号转换为数据,存放在RXHFO中,再通过DMA方式送入DATA 内存区的低128字节中。再通过USART串口将接收到的数据送出。
不难看出,整个数据传输过程大部分都是在CC2430内部完成。这得益于CC2430具有极高的集成度。是一款片上系统,能够提供较高的系统稳定性和可靠性。CC2430包括了较多的自定义SFR寄存器。如何使用好这些SFR寄存器较为关键。例如在对USART的控制操作中,CC2430内部集成的USART的控制寄存器和状态寄存器分别是UxUCR和UxCSR(其中x可取值为0和1,表示CC2430集成的两个USART中的一个)。UxCSR状态字格式和UxUCR控制字格式如表1所示。
用这两个寄存器可完成USART的基本设置.如:
SET U0CSR.MODE ;选择USART0为UART模式
SET U0CSR.RE ;允许USART0接收数据
MOV U0UCR,#1FH ;设置UART的帧格式。此格式为奇偶校验有效,一帧为9位,第9位为偶校验,停止住为高电平。且接收器校验两位停止位,开始位为高电平。
值得注意的是,CC2430串口波特率的设置与一般8051不同,因为其内部集成了一个波特率发生器,因此,不需要使用定时器而只需设置相关的SFR 寄存器UxBAUD.BAUD_M[7:0]和UxGCR.BAUD[4:0],便可得到系统要求的波特率,其关系式如下:
其中,F为系统时钟频率。若F为32 MHz,执行下列语句.得到9600 b/s的串口波特率:
MOV U0GCR,#08H
MOV U0BAUD,#3BH ;设置波特率为9600 b/s
实际上对USART的操作还包含对其所连接的I/O口的设置。设置I/O应与硬件密切结合,如:
MOV P1SEL,#30H ;选择P1.5,P1.4为外部功能口
MOV P1DIR,#20H ;选择P1.5为输出口,P1.4为输入口
CLR P1FG ;清空P1口的中断标志
MOV P2SEL,#00H ;设置USART0为优先
同样.对DMA和Radio的操作也有这样功能全面的SFR寄存器。对CC2430进行程序设计,其实就是对其SRF寄存器的认识和运用过程,篇幅所限这里不一一赘述。
5 系统抗干扰
由于系统所处环境有较强的电磁场干扰,因此需要进行电磁屏蔽。具体方法为:将模块置于一个铝质外壳中。外壳通过RS232接口与上位机外壳连接.实现接地。铝质外壳相当于一个空心的导体.置于电场中,电力线终止于导体表面,从而有屏蔽电场的作用。铝质外壳也相当于一个屏蔽罩,在高频磁场的作用下产生涡流,而涡流的磁场与原磁场方向相反,从而可屏蔽高频磁场。