数控灯光的短距离无线通信系统方案
CLK是同步时钟,SS用作器件的片选信号。CC1100的GD02信号用作内部FIFO的状态信号,用于提示单片机FIFO空间已满。发射和接收模块接口示意图如图3所示,发射模块与接收模块的结构基本一致,只是通信数据流方向相反。

3 系统软件实现
3.1 主要程序流程
系统上电后首先进行初始化配置,包括I/O端口输入/输出状态配置、串口配置、SPI接口设置、CC1100寄存器配置,以及无线传输数据格式的配置,使系统处于正常工作状态。此时主发射模块等待DMX512总线数据的到来。一旦DMX512数据包起始标志出现,即打开单片机串口,等待串口接收中断产生。中断产生之后单片机缓存总线数据,激活CC1100,并向其发送FIFO中写入发送数据,然后无线发送出去。
接收模块的工作流程和发送模块相反。在初始化完成之后,单片机设置好CC1100的FIFO寄存器,等待FIFO产生外部中断。这里外部中断被用作无线数据接收成功的标志。FIFO中断产生后,单片机通过SPI总线缓存FIFO中的数据,并立刻通过串口模拟DMX512时序,恢复总线信号,完成信号的无线传输。发送和接收数据流程如图4所示。

3.2 自定义通信数据格式
虽然CC1100的传输数率比DMX512的时序速率要高,但毕竟CC1100的FIFO有限,不可能把一个DMX512数据包一次性全部发送出去,因此在主从端之问必须协商一种合适的数据通信格式。CC1100支持4种格式的数据包,分别是:定长(小于255字节)、变长(小于255字节)、无限长和有限长。完整的数据包包括前导码、同步字、数据长度、地址、有效数据和CRC校验。本系统采用有效数据为32字节的有限长格式,具体的数据格式如下:

DMX512的数据包中包含有512路调光数据,而CC1100发送一次数据包只包含32个有效数据,因此在发送时要在CC11OO的地址码段填入该次发送有效数据在总数据包中的序号,以保证接收端在接收的时候按顺序重组成功。
3.3 拆解和重组DMX512总线数据
系统在对DMX512总线数据的拆解和重组过程中,都利用了单片机内部的串口单元。但DMX512总线数据时序与单片机UART串口不完全相同,因此在使用的时候需要做如下修正。
主发射端对DMX512总线数据的拆解,需要先将串口端口(P3.1)配置为I/O口。当接收到DMX512的起始标志(即P3.1=0)时,开启定时器0开始计数,88μs溢出中断后准备接收数据。单片机确认M.a.B(MarkafterBreak)信号出现后,配置串口端口为普通串口,开始缓存数据帧。
从接收端在无数据传输时,要把串口端口配置为I/O口,并置为高电平。在接收完毕无线数据后,先将串口端口拉低,利用定时器延时超过88μs,完成起始标志(Break)信号的发送。然后配置串口端口为普通串口,按缓存的顺序将数据发送到DMX512总线上。数据发送完成之后,还需要将串口端口还原为普通I/O,发送结束信号(小于1s的高电平),完成DMX512时序要求。
4 总结
基于CC1100设计的DMX512灯光控制信号无线传输系统,具有成本低、外围器件少、电路结构简洁的特点。虽然CC11OO标称空旷地发射距离可以达到200m,但在实际使用时,由于楼宇等建筑物的影响,有效的通信距离为30m左右。因此利用该系统能实现小范围(如室内环境)将DMX512有线传输转变为无线传输。为了延长系统传输距离,可以考虑在射频收发单元增加功放模块,在保证灯光数据实时传输的条件下,降低通信速率,提高系统传输的稳定性。
- ZigBee在生命子系统中的应用(08-27)
- 基于无线通信技术的图书馆自助服务研究(08-30)
- UWB无线通信及其关键技术(10-14)
- JPEG2000的近距离无线视频传输系统设计(10-21)
- 无线通信设备用晶体振荡子XRCGD系列(03-15)
- Waldmann携手EnOcean:让灯具互相“沟通”(04-12)
