格式的配置,使系统处于正常工作状态。此时主发射模块等待
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)信号
出现后,配置串口端口为普通串口,开始缓存数据帧。