请教如何用4M的MCU IO模拟产生2K PWM

2019-12-10 18:32发布

请教如何用4M的MCU IO模拟产生2K  PWM
占空比0-100%可调,分100阶, 主函数中任务还有AD扫描检测 1ms扫描检测一次.
这个产品主要用于PWM调光用,频率太低了 会闪,所以至少要2K的频率
但是芯片的速度又有限制,大家有什么好的办法。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
zqf441775525
1楼-- · 2019-12-11 13:27
软件模拟的话,2K的PWM,200阶,需要200K的Tick,4M的主频,有点够呛。
daicp
2楼-- · 2019-12-11 16:48
 精彩回答 2  元偷偷看……
swdebug
3楼-- · 2019-12-11 21:44
感觉用fpga很轻松,内部有rc的
runball
4楼-- · 2019-12-11 23:10
很肯定地说,IO口模拟做不到,即使8M频率都做不到。换带硬件PWM的吧,又贵不了多少。
retention
5楼-- · 2019-12-12 03:11
利用定时器的计数器在主循环里面不停的判断,还是可以模拟 PWM的

定时器是有吧,如果连定时器都没有,那我这个方法是帮不了你的。。



  1. u8 r_pwm;  
  2. u8 g_pwm;
  3. u8 b_pwm;

  4. //假如定时器的计数寄存器值溢出值为 100,那么当你开了定时器之后,这个counter的值会在  0-99之间循环变化的

  5. //假如红灯的的占空比的数值为  r_pwm = 30的时候,你在主循环不停的刷新以下if语句,就能实现最高亮度的 30%(大约范围):

  6. if(r_pwm> counter)     RedLed = LED_ON;
  7. else                           RedLed = LED_OFF;               


  8. //当你把r_pwm的数值改大或改小,就基本模拟出来 PWM了
复制代码
retention
6楼-- · 2019-12-12 03:18
我都在一个很低端的MCU上面模拟出三路的调光PWM,这个算法有个缺点,就是亮度比较低的时候容易抖动。

一周热门 更多>