引言
随着数字化技术和计算机技术的广泛普及,舞台和演播厅等灯光控制系统由传统的模拟控制转变为数字控制。为了解决各厂家设备兼容性问题,美国剧场技术协会(USITT)制定了DMX512协议标准。由于该协议简单实用,目前几乎所有的灯光及舞台设备生产厂商都支持该控制协议,使之成为灯光控制的国际标准。由于协议规定DMX512信号通过EIA-485有线线缆进行传输,这就造成在条件不利于有线布线的环境下设备安装困难。因此,设计一种短距离无线通信系统来代替有线线缆完成信号的传输就显得十分必要。
1 DMX512协议简介
DMX512协议适用于一点对多点的主从式灯光控制系统,主控制器往总线发送控制时序,总线上的其他从灯光设备接收总线数据,提取其对应通道的数据,完成控制信号的接收。
协议规定控制信号数据包的传输通过异步通信的方式进行。一个DMX512数据包包含起始码和512个数据帧。数据帧内包含1个起始位(低电平)、8个位数据和2个停止位(高电平),没有奇偶校验。DMX512的信号数据传输率为250kbps,数据帧每位宽度为4μs,发送一帧需要44μs。一个数据帧代表了一路控制通道,因此该协议支持512路控制通道。一般舞台灯光设备可以同时接受多路通道控制。接受的通道数越多,接收的控制数据量也越大,灯光的表现能力也就越强。譬如,某些舞台激光灯可以根据需要投射出不同图案、颜色甚至字符。DMX512数据包的传输要符合一定的格式和时序要求。主要包含1个至少88μs的低电平输出起始标志(Break)、起始码帧、512个数据帧和最后的数据包结束标志(高电平)。控制器和接收器只有满足DMX512数据包的时序要求,才能正常完成主从机之间的通信。具体的信号时序如图1所示。
2 系统硬件设计
2.1 系统设计框图
系统设计的目的是利用无线传输代替有线电缆,解决有线布线困难的问题,因此在设计上必须满足轻便易安置的条件,以保证与原有线系统无缝结合。如图2所示,整个系统的硬件结构由微控制器单元(MCU)、射频收发单元和电源管理单元3部分组成。
在工作方式上,一方面发射模块的MCU单元接收DMX512控制端的总线数据,分析并拆解总线数据,然后将数据经过适当处理之后通过射频发送单元发送出去;另一方面接收模块在接收无线数据之后,由MCU单元将数据整合重组,在接收端总线恢复DMX512控制信号。这样设计的好处是可以将有线和无线传输相结合。在接收端架设一个无线接收模块就可以保证该区域DMX512控制信号得到有效传输,并不需要为每个设备都安置一个无线接收模块。
2.2 微控制器单元
本系统的微控制器采用了STC系列单片机STC12C5410。该单片机含有12KB的Flash存储器、512字节RAM、异步串口(UART)和内部PLL单元等。内置的SPI总线控制器可以方便地与射频芯片CC1100通信,而内部的ISP(在线可编程)模块允许用户直接通过串口下载程序,给系统软件升级带来便捷条件。由于DMX512的数据波特率为250kbps,所以选取16MHz晶振作为时钟源,以便产生同频波特率。
2.3 射频收发单元
CC1100是一款低功耗单片射频收发芯片,具有通信距离远、功耗低、接口灵活等优点。该芯片主要设定工作在315MHz、433MHz、868MHz和915MHz的工业、科学和医学波段;数据速率支持1.2~500kbps的可编程控制;提供-30~10dBm的输出功率;最大空地发射距离大于200m,工作电压为1.8~3.6V;最大支持64字节的接收和发送FIFO。设计人员可以通过SPI接口完成内部寄存器配置,读写接收/发送FIFO等内部控制。
2.4 接口电路设计
接口电路的设计主要包括2部分:DMX512总线与单片机之间的通信,以及单片机控制CC1100射频模块收发数据。由于DMX512总线数据帧格式与通用异步串口(UART)格式基本兼容,因此系统与DMX512总线的通信利用串口通信接口。但DMX512信号的电气接口标准是EIA-485,与单片机的TTL电平接口不兼容,要实现相互通信,需要采用电平转换芯片作为桥接电路。在分解和还原DMX512总线数据上,分别采用MC3486和MC3487。在系统发送端,通过MC3486将DMX512总线的差分数据转换为TTL电平数据,由单片机的串口接收数据;另外,串口的该引脚还同时连接到单片机的P3.2/INTO口,用于识别DMX512总线的起始标志(Break),提前通知单片机准备接收总线数据。在系统接收端,通过MC3487将单片机串口TTL电平数据转换为DMX512差分数据。
对CC1100的内部寄存器配置和FIFO单元读写都通过单片机4线SPI总线接口来完成。MISO和MOSI分别是数据发送、接收端口,SCLK是同步时钟,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有线传输转变为无线传输。为了延长系统传输距离,可以考虑在射频收发单元增加功放模块,在保证灯光数据实时传输的条件下,降低通信速率,提高系统传输的稳定性。