作者:陈香
引言
无线数据通信技术被越来越多地使用到嵌入式系统中,在简化布线的同时,也使数据交换变得更加便捷。本文介绍一种适用于远程计数无线传输的测试系统,该系统主要由德州仪器(TI)公司的CC1100射频收发器和飞利浦(Philips)公司的微处理器P89LPC922构成。
1 硬件设计
(1)总体方案设计
本设计由1个主机和1~32台终端从机组成。从机通过内部传感器计数后将数据以无线方式传送给主机,主机负责整个系统的调度、显示、配置。
(2)微控制器P89LPC922
P89LPC922芯片具有8 KB Flash程序存储器、1 KB可擦除扇区和64字节可擦除页,可擦除单个字节,指令执行时间只需2~4个时钟周期,指令执行速率6倍于标准80C51器件,有可配置的片内振荡器和 RC振荡器、增强型UART,具有波特率发生器及自动地址识别和通用的中断功能。
(3)射频芯片CC1100
CC1100的主要特点有:体积小(20引脚,QLP 4 mm×4 mm),工作频率为300~1000 MHz,接收灵敏度高(1.2 kb/s下110 dBm),数据传输率最大可达500 kb/s,功耗低(RX中15.6 mA,2.4 kb/s,433 MHz),在所有频段输出功率高达+10 dBm;SPI接口,支持ASK、OOK、2-FSK、GF-SK和MSK调制模式,具有无线唤醒(WOR)功能等。
由于高频收发信号会对MCU部分产生干扰,所以无线通信部分应单独做1块PCB板,并外加屏蔽。P89LPC922和CC1100的连接如图1所示。
2 软件设计
(1)数据包格式
CC1100数据包格式包含以下几部分:前导、同步词汇、可控数据包长度、可选地址字节、有效载荷、可选的2字节CRC。它支持恒定长度和可变长度数据包协议,其数据长度可达255字节,对于更长的数据包,必须使用无限长度数据包协议。本系统采用可变长度数据包格式。
(2)状态及寄存器设置
CC1100有一个内置的状态机,用来在不同的操作状态(模式)之间切换。状态的变化要么通过命令滤波,要么通过内部事件(如TX FIFO下溢)改变。当前状态可从状态寄存器MARCSTATE获得。CC1100的寄存器比较多,可根据需要配置,有一部分需由软件SmartRF Studio给出。
CC1100的3个数字输出引脚SO(GDO1)、GDO0、GDO2也可以通过IOCFGX寄存器配置成所需的功能接口。设计中,GDO0 IOCFGO=Ox06,引脚会在收发到同步词汇的时候置成高电平,当数据包传输结束时变成低电平。此外,当收发FIFO溢出时也将变成低电平。 GDO2IOCFG2=Ox0B,引脚输出一连续时钟,可以用来检测CC1100是否工作。
(3)收发数据
CC1100上电后,需要依次对芯片进行复位、寄存器设置、功率设置等。收发数据可以通过GPO0引脚产生中断,然后依据不同的情况处理。程序如下:
3 通信协议
在大多数主从式结构通信中,一般主机和从机之间的通信都是采用查询方式进行,然而当从机数量较多时,效率并不高。因此,设计一种快速实用的通信模式就很有必要。时分多址(time division multiple access)是把时间分割成互不重叠的时段(帧),再将帧分割成互不重叠的时隙(信道),与用户具有一一对应关系;依据时隙区分来自不同地址的用户信号,从而完成多址连接。时分多址简称TDMA。
根据上述定义,在设计中主机采用定时发送命令的方式,每个从机则分配1个时间段用于和主机通信。时间段的选择要根据从机的数量、同步的时间,以及通信速率来决定。具体约定如下:
主机定时向终端从机发送命令,命令中包含下次同步的时间以及其他所需信息,命令周期可以自行定义,这里命令周期为1 s。
从机接收到主机命令后首先同步自己的时钟,然后再做出相应的动作。
①对于无应答的命令,从机立刻进入休眠状态,只在下一个接收主机命令时刻到来之前,提前2 ms退出休眠。
②对于有应答的命令,从机则在接收到主机命令之后延时(N×30)ms应答主机,在没有应答之前,从机也先进入休眠,只是在应答时刻到来之前,提前2ms 醒来,准备应答。从机应答时间为1~25 ms,剩余的5 ms是为了把一个时间段和另一个时间段分开(即保护时间)。当应答结束后延时2 ms进入休眠。
③当从机未能和主机同步时,应开启CC1100电磁波激活功能,搜寻主机信息。
其中N为从机地址号,设置范围1~32,具体通信协议如图2所示。
结语
本文介绍的无线数据通信方案,适用于工业信号监控、无线仪器仪表测试、楼宇智能系统等,性价比高,所提出的通信协议具有较强的实时性、可靠性。现场工作表明,在计数测试系统中,距离100 m内未发生通信错误的情况,满足了测试要求。