2.2 微控制器单元
本系统的微控制器采用了STC系列单片机STC12C5410。该单片机含有12 KB的Flash存储器、512字节RAM、异步串口(UART)和内部PLL单元等。内置的SPI总线控制器可以方便地与射频芯片CC1100通信,而内部的ISP(在线可编程)模块允许用户直接通过串口下载程序,给系统软件升级带来便捷条件。由于DMX512的数据波特率为250 kbps,所以选取16 MHz晶振作为时钟源,以便产生同频波特率。
2.3 射频收发单元
CC1100是一款低功耗单片射频收发芯片,具有通信距离远、功耗低、接口灵活等优点。该芯片主要设定工作在315 MHz、433 MHz、868 MHz和915 MHz的工业、科学和医学波段;数据速率支持1.2~500 kbps的可编程控制;提供-30~10 dBm的输出功率;最大空地发射距离大于200 m,工作电压为1.8~3.6 V;最大支持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所示。