引 言
隨著數(shù)字化技術(shù)和計算機技術(shù)的廣泛普及,舞臺和演播廳等燈光控制系統(tǒng)由傳統(tǒng)的模擬控制轉(zhuǎn)變?yōu)閿?shù)字控制。為了解決各廠家設(shè)備兼容性問題,美國劇場技術(shù)協(xié)會(USITT)制定了DMX512協(xié)議標(biāo)準(zhǔn)。由于該協(xié)議簡單實用,目前幾乎所有的燈光及舞臺設(shè)備生產(chǎn)廠商都支持該控制協(xié)議,使之成為燈光控制的國際標(biāo)準(zhǔn)。由于協(xié)議規(guī)定DMX512信號通過EIA-485有線線纜進(jìn)行傳輸,這就造成在條件不利于有線布線的環(huán)境下設(shè)備安裝困難。因此,設(shè)計一種短距離無線通信系統(tǒng)來代替有線線纜完成信號的傳輸就顯得十分必要。
1 DMX512協(xié)議簡介
DMX512協(xié)議適用于一點對多點的主從式燈光控制系統(tǒng),主控制器往總線發(fā)送控制時序,總線上的其他從燈光設(shè)備接收總線數(shù)據(jù),提取其對應(yīng)通道的數(shù)據(jù),完成控制信號的接收。
協(xié)議規(guī)定控制信號數(shù)據(jù)包的傳輸通過異步通信的方式進(jìn)行。一個DMX512數(shù)據(jù)包包含起始碼和512個數(shù)據(jù)幀。數(shù)據(jù)幀內(nèi)包含1個起始位(低電平)、8個位數(shù)據(jù)和2個停止位(高電平),沒有奇偶校驗。DMX512的信號數(shù)據(jù)傳輸率為250 kbps,數(shù)據(jù)幀每位寬度為4μs,發(fā)送一幀需要44μs。一個數(shù)據(jù)幀代表了一路控制通道,因此該協(xié)議支持512路控制通道。一般舞臺燈光設(shè)備可以同時接受多路通道控制。接受的通道數(shù)越多,接收的控制數(shù)據(jù)量也越大,燈光的表現(xiàn)能力也就越強。譬如,某些舞臺激光燈可以根據(jù)需要投射出不同圖案、顏色甚至字符。 DMX512數(shù)據(jù)包的傳輸要符合一定的格式和時序要求。主要包含1個至少88 μs的低電平輸出起始標(biāo)志(Break)、起始碼幀、512個數(shù)據(jù)幀和最后的數(shù)據(jù)包結(jié)束標(biāo)志(高電平)??刂破骱徒邮掌髦挥袧M足DMX512數(shù)據(jù)包的時序要求,才能正常完成主從機之間的通信。具體的信號時序如圖1所示。
2 系統(tǒng)硬件設(shè)計
2.1 系統(tǒng)設(shè)計框圖
系統(tǒng)設(shè)計的目的是利用無線傳輸代替有線電纜,解決有線布線困難的問題,因此在設(shè)計上必須滿足輕便易安置的條件,以保證與原有線系統(tǒng)無縫結(jié)合。如圖2所示,整個系統(tǒng)的硬件結(jié)構(gòu)由微控制器單元(MCU)、射頻收發(fā)單元和電源管理單元3部分組成。
在工作方式上,一方面發(fā)射模塊的MCU單元接收DMX512控制端的總線數(shù)據(jù),分析并拆解總線數(shù)據(jù),然后將數(shù)據(jù)經(jīng)過適當(dāng)處理之后通過射頻發(fā)送單元發(fā)送出去;另一方面接收模塊在接收無線數(shù)據(jù)之后,由MCU單元將數(shù)據(jù)整合重組,在接收端總線恢復(fù)DMX512控制信號。這樣設(shè)計的好處是可以將有線和無線傳輸相結(jié)合。在接收端架設(shè)一個無線接收模塊就可以保證該區(qū)域DMX512控制信號得到有效傳輸,并不需要為每個設(shè)備都安置一個無線接收模塊。
2.2 微控制器單元
本系統(tǒng)的微控制器采用了STC系列單片機STC12C5410。該單片機含有12 KB的Flash存儲器、512字節(jié)RAM、異步串口(UART)和內(nèi)部PLL單元等。內(nèi)置的SPI總線控制器可以方便地與射頻芯片CC1100通信,而內(nèi)部的ISP(在線可編程)模塊允許用戶直接通過串口下載程序,給系統(tǒng)軟件升級帶來便捷條件。由于DMX512的數(shù)據(jù)波特率為250 kbps,所以選取16 MHz晶振作為時鐘源,以便產(chǎn)生同頻波特率。
2.3 射頻收發(fā)單元
CC1100是一款低功耗單片射頻收發(fā)芯片,具有通信距離遠(yuǎn)、功耗低、接口靈活等優(yōu)點。該芯片主要設(shè)定工作在315 MHz、433 MHz、868 MHz和915 MHz的工業(yè)、科學(xué)和醫(yī)學(xué)波段;數(shù)據(jù)速率支持1.2~500 kbps的可編程控制;提供-30~10 dBm的輸出功率;最大空地發(fā)射距離大于200 m,工作電壓為1.8~3.6 V;最大支持64字節(jié)的接收和發(fā)送FIFO。設(shè)計人員可以通過SPI接口完成內(nèi)部寄存器配置,讀寫接收/發(fā)送FIFO等內(nèi)部控制。
2.4 接口電路設(shè)計
接口電路的設(shè)計主要包括2部分:DMX512總線與單片機之間的通信,以及單片機控制 CC1100射頻模塊收發(fā)數(shù)據(jù)。由于DMX512總線數(shù)據(jù)幀格式與通用異步串口(UART)格式基本兼容,因此系統(tǒng)與DMX512總線的通信利用串口通信接口。但DMX512信號的電氣接口標(biāo)準(zhǔn)是EIA-485,與單片機的TTL電平接口不兼容,要實現(xiàn)相互通信,需要采用電平轉(zhuǎn)換芯片作為橋接電路。在分解和還原DMX512總線數(shù)據(jù)上,分別采用MC3486和MC3487。在系統(tǒng)發(fā)送端,通過MC3486將DMX512總線的差分?jǐn)?shù)據(jù)轉(zhuǎn)換為TTL電平數(shù)據(jù),由單片機的串口接收數(shù)據(jù);另外,串口的該引腳還同時連接到單片機的P3.2/INTO口,用于識別DMX512總線的起始標(biāo)志(Break),提前通知單片機準(zhǔn)備接收總線數(shù)據(jù)。在系統(tǒng)接收端,通過MC3487將單片機串口TTL電平數(shù)據(jù)轉(zhuǎn)換為DMX512差分?jǐn)?shù)據(jù)。
對CC1100的內(nèi)部寄存器配置和FIFO單元讀寫都通過單片機4線SPI總線接口來完成。MISO和MOSI分別是數(shù)據(jù)發(fā)送、接收端口,SCLK是同步時鐘,SS用作器件的片選信號。CC1100的GD02信號用作內(nèi)部FIFO的狀態(tài)信號,用于提示單片機FIFO空間已滿。發(fā)射和接收模塊接口示意圖如圖 3所示,發(fā)射模塊與接收模塊的結(jié)構(gòu)基本一致,只是通信數(shù)據(jù)流方向相反。
3 系統(tǒng)軟件實現(xiàn)
3.1 主要程序流程
系統(tǒng)上電后首先進(jìn)行初始化配置,包括I/O端口輸入/輸出狀態(tài)配置、串口配置、SPI接口設(shè)置、CC1100寄存器配置,以及無線傳輸數(shù)據(jù)格式的配置,使系統(tǒng)處于正常工作狀態(tài)。此時主發(fā)射模塊等待DMX512總線數(shù)據(jù)的到來。一旦DMX512數(shù)據(jù)包起始標(biāo)志出現(xiàn),即打開單片機串口,等待串口接收中斷產(chǎn)生。中斷產(chǎn)生之后單片機緩存總線數(shù)據(jù),激活CC1100,并向其發(fā)送FIFO中寫入發(fā)送數(shù)據(jù),然后無線發(fā)送出去。
接收模塊的工作流程和發(fā)送模塊相反。在初始化完成之后,單片機設(shè)置好CC1100的FIFO寄存器,等待FIFO產(chǎn)生外部中斷。這里外部中斷被用作無線數(shù)據(jù)接收成功的標(biāo)志。FIFO中斷產(chǎn)生后,單片機通過SPI總線緩存FIFO中的數(shù)據(jù),并立刻通過串口模擬DMX512時序,恢復(fù)總線信號,完成信號的無線傳輸。發(fā)送和接收數(shù)據(jù)流程如圖4所示。
3.2 自定義通信數(shù)據(jù)格式
雖然CC1100的傳輸數(shù)率比DMX512的時序速率要高,但畢竟CC1100的FIFO有限,不可能把一個DMX512數(shù)據(jù)包一次性全部發(fā)送出去,因此在主從端之問必須協(xié)商一種合適的數(shù)據(jù)通信格式。CC1100支持4種格式的數(shù)據(jù)包,分別是:定長(小于255字節(jié))、變長(小于255字節(jié))、無限長和有限長。完整的數(shù)據(jù)包包括前導(dǎo)碼、同步字、數(shù)據(jù)長度、地址、有效數(shù)據(jù)和CRC校驗。本系統(tǒng)采用有效數(shù)據(jù)為32字節(jié)的有限長格式,具體的數(shù)據(jù)格式如下:
DMX512的數(shù)據(jù)包中包含有512路調(diào)光數(shù)據(jù),而CC1100發(fā)送一次數(shù)據(jù)包只包含32個有效數(shù)據(jù),因此在發(fā)送時要在CC11OO的地址碼段填入該次發(fā)送有效數(shù)據(jù)在總數(shù)據(jù)包中的序號,以保證接收端在接收的時候按順序重組成功。
3.3 拆解和重組DMX512總線數(shù)據(jù)
系統(tǒng)在對DMX512總線數(shù)據(jù)的拆解和重組過程中,都利用了單片機內(nèi)部的串口單元。但DMX512總線數(shù)據(jù)時序與單片機UART串口不完全相同,因此在使用的時候需要做如下修正。
主發(fā)射端對DMX512總線數(shù)據(jù)的拆解,需要先將串口端口(P3.1)配置為I/O口。當(dāng)接收到DMX512的起始標(biāo)志(即P3.1=0)時,開啟定時器 0開始計數(shù),88μs溢出中斷后準(zhǔn)備接收數(shù)據(jù)。單片機確認(rèn)M.a(chǎn).B(Mark afterBreak)信號出現(xiàn)后,配置串口端口為普通串口,開始緩存數(shù)據(jù)幀。
從接收端在無數(shù)據(jù)傳輸時,要把串口端口配置為I/O口,并置為高電平。在接收完畢無線數(shù)據(jù)后,先將串口端口拉低,利用定時器延時超過88 μs,完成起始標(biāo)志(Break)信號的發(fā)送。然后配置串口端口為普通串口,按緩存的順序?qū)?shù)據(jù)發(fā)送到DMX512總線上。數(shù)據(jù)發(fā)送完成之后,還需要將串口端口還原為普通I/O,發(fā)送結(jié)束信號(小于1 s的高電平),完成DMX512時序要求。
4 總 結(jié)
基于CC1100設(shè)計的DMX512燈光控制信號無線傳輸系統(tǒng),具有成本低、外圍器件少、電路結(jié)構(gòu)簡潔的特點。雖然CC11OO標(biāo)稱空曠地發(fā)射距離可以達(dá)到200 m,但在實際使用時,由于樓宇等建筑物的影響,有效的通信距離為30 m左右。因此利用該系統(tǒng)能實現(xiàn)小范圍(如室內(nèi)環(huán)境)將DMX512有線傳輸轉(zhuǎn)變?yōu)闊o線傳輸。為了延長系統(tǒng)傳輸距離,可以考慮在射頻收發(fā)單元增加功放模塊,在保證燈光數(shù)據(jù)實時傳輸?shù)臈l件下,降低通信速率,提高系統(tǒng)傳輸?shù)姆€(wěn)定性。