方案介绍设计思路
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文章
16348浏览量
177932 -
寄存器
+关注
关注
31文章
5342浏览量
120295 -
控制板
+关注
关注
5文章
254浏览量
31194
发布评论请先 登录
相关推荐
评论