单片机如何模拟16路PWM

2019-07-15 10:10发布

RT。。最近整了个灯的样品在玩,通过逻辑分析仪抓到的16路PWM波形,16路周期都为5ms,其中有6路PWM是持续输出,剩下的10路间断输出,每一路的占空比都在3个周期后改变。观察到的占空比无任何规律,求解应如何做才比较好。。
QQ截图20170720215221.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
17条回答
he07413
2019-07-17 03:59
单片机做如此多的PWM,可以考虑用一个定时器做时基,溢出触发DMA,内存数据搬运到GPIO,然后占空比和周期这部分通过内存里的数据来控制。假设定时器10us溢出1次,数组数据0b11111111 11111111,0b11111111 11111110,0b11111111 11111101,0b11111111 11111100,0b11111111 11111111,0b11111111 11111110,0b11111111 11111001,0b11111111 11111100,这样子输出到GPIA的话,GPIOA0 口输出的PWM占空比为50%,周期20us;GPIOA1的占空比为50%,周期40us,GPIOA2的占空比为20%,周期50us。其他口同理,需要修改数组数据。
这样子的话,CPU负担也很小,主要工作由DMA完成,CPU只需要计算那组数据放在内存。等待DMA输出就可以。

评分

参与人数 1积分 +5 收起 理由 ElecFans王岑 + 5

查看全部评分

一周热门 更多>