方案介紹設計思路
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作品實物圖+視頻
-
控制器
+關注
關注
114文章
16984瀏覽量
183017 -
寄存器
+關注
關注
31文章
5423瀏覽量
123434 -
控制板
+關注
關注
5文章
268瀏覽量
31925
發布評論請先 登錄
STM32F207VET6的flash是512KB的,為什么對0x080A0000后512KB的內存進行操作程序沒有問題呢?
AN207 GD32G5x3三角函數加速器TMU的使用說明

AN030 GD32F47x&F42x與GD32F45x&F40x系列間的差異

SM18522PH 裝飾照明驅動 IC 兼容并擴展 DMX512(1990)協議

【GD32 MCU 移植教程】9、從 STM32F10x 系列移植到 GD32F30x 系列

【GD32 MCU 移植教程】7、從 GD32F10x 移植到 GD32E103

【GD32 MCU 移植教程】6、從GD32F1x0和GD32F3x0移植到GD32E230

【GD32 MCU 移植教程】1、從 GD32F10x 移植到 GD32F30x

Hi512E小功率差分并聯DMX512解碼恒流驅動規格書
【GD32F303紅楓派開發板使用手冊】第二十講 SPI-SPI NAND FLASH讀寫實驗

評論