关于GD32F207ZE的5x5 RGBW矩阵灯DMX512控制板的介绍和分析

描述

方案介绍设计思路

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作品实物图+视频

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分