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