方案介紹設計思路
1. 設計思路:采用高時鐘頻率的MCU的內(nèi)部定時器產(chǎn)生中斷,使用計數(shù)的方式生成8位分辨率的PWM,IO口使用映射表的方式,可以在里面任意設置IO對應的DMX512數(shù)據(jù)位置,100個IO分成10組,每中斷一次對一組IO進行狀態(tài)更新,最終可以生成400HZ左右的8位PWM,送RGBW燈的驅(qū)動電路,進行調(diào)光。串口設置成9位數(shù)據(jù)接收,250Kbps波特率,1位停止位,通過MAX485轉(zhuǎn)換芯片,接收燈光控制臺送來的DMX512數(shù)據(jù),保存在緩沖區(qū),PWM生成程序可以從緩沖區(qū)里即時更新PWM占空比數(shù)據(jù)。
2. 主控芯片采用GD32F207ZET6,IO口超過110個,100個作為PWM輸出的IO,1個串口(PD5、PD6) + IO用于DMX512信號(P4D)使用,4個IO接編碼開關用于設置地址(PA8-PA11),2個IO作為操作按鍵(PA0,PA1),1個IO連接LED作為工作狀態(tài)指示燈(PA12),上面用掉的IO從PWM映射表里去掉就好了。原理圖很簡單就不畫了,板上IO沒有全部引出,簡單搭電路做了6路PWM,板上3個LED,杜邦線連接一組RGB燈測試功能。
3方案結(jié)構(gòu)框圖
4設計應用描述及心得總結(jié)
1. 本案例的核心在于軟件PWM的生成,100路8分辨率PWM輸出對于普通單片機來說還是有一定的壓力,還要同時處理DMX512數(shù)據(jù)的接收,得益于GD32F207的120M運行速度,可以在短時間內(nèi)處理更多的指令,將100路PWM計數(shù)變量分成10組,通過輪流的方式更新每一組IO的計數(shù)變量,同時更新IO的狀態(tài),有效的減少中斷處理的數(shù)據(jù)量,縮短處理時間,本案例中實現(xiàn)了8位分辨率400Hz以上的PWM輸出,用來控制調(diào)光燈,完全不會出現(xiàn)閃爍的情況。串口中斷方式接收DMX512數(shù)據(jù)幀,即時保存在DMX512的緩沖區(qū)中,按DMX512數(shù)據(jù)每秒40幀的更新速度,最多在第2幀數(shù)據(jù)到來時可以把當前狀態(tài)更新到所控制的燈上。
2. 本案例控制IO輸出采用了數(shù)據(jù)表映射的方式,可以任意修改IO所對應DMX512數(shù)據(jù)字節(jié),操作時讀取數(shù)據(jù)表里的映射數(shù)據(jù),直接操作GPIO控制寄存器,也有效的減少操作指令,提高了操作效率。
3. 采用高頻率的單片機模擬多路PWM的方式,取代市場上現(xiàn)有的使用FPGA的方案,在滿足性能的同時有效的降低了產(chǎn)品的設計復雜程度和產(chǎn)品成本。
5作品實物圖+視頻
-
控制器
+關注
關注
112文章
16332瀏覽量
177806 -
寄存器
+關注
關注
31文章
5336瀏覽量
120230 -
控制板
+關注
關注
5文章
254瀏覽量
31191
發(fā)布評論請先 登錄
相關推薦
評論