搜索

[学习笔记] ATC芯片生成PWM波形——一路的上升沿对齐另一路的下降沿

[复制链接]
199|4
wangjj19950516|  楼主 | 2021-5-6 14:19 | 显示全部楼层 |阅读模式
本帖最后由 wangjj19950516 于 2021-5-6 14:20 编辑

如题,最近有客户有这样一个需求:需要做PWM输出,要求2路输出可独立控制占空比,但一路的上升沿与另一路的下降沿对齐。
这个要求通过配置PWM模块是可以实现的,下面简单讲一下原理:

1.首先,两路输出需要独立控制占空比,则应设置为PWM输出的独立模式;
   其次,两路的一个边沿要在任何情况下都要对齐,则应选择向上计数模式,每次在初始时刻对齐边沿
   最后,一路的上升沿对齐另一路的下降沿,则这两路的极性应设置为相反。
下图显示了边沿对齐的PWM配置不同极性后输出的波形,计数器从CNTIN开始向上计数,当与设置的最大计数值MCVR匹配时,则完成了一个周期,重新从CNTIN开始计数,CHnV用于控制占空比。
       当设置为高有效时,从初始时刻开始,该通道输出高电平,直到计数值与CHnV匹配,则将输出拉低,占空比为(2+1)/(4+1) = 60%.
       当设置为低有效时,从初始时刻开始,该通道输出低电平,直到计数值与CHnV匹配,则将输出拉高,占空比为1-(2=1)/(4+1)= 40%.

捕获.JPG
2.程序配置
  1. void PWM_GPIO_Config(void)
  2. {
  3.     GPIO_SetFunc(GPIOB, GPIO_PIN5, GPIO_FUN1);//PWM1_CH0
  4.     GPIO_SetFunc(GPIOB, GPIO_PIN4, GPIO_FUN1);//PWM1_CH1        
  5. }
  6. void PWM_Config(void)
  7. {
  8.     PWM_SimplyConfigType SimplyConfig;
  9.     memset(&SimplyConfig, 0, sizeof(SimplyConfig));
  10.         
  11.         
  12.     SimplyConfig.allChCombineMode       = PWM_INDEPENDENT_MODE; //独立模式
  13.     SimplyConfig.countMode              = PWM_UP_COUNT; //向上计数,边沿对齐
  14.    
  15.     /* PWM_CLK_SOURCE_BUS */
  16.     SimplyConfig.clkSource              = PWM_CLK_SOURCE_APB; //PWM模块时钟源选择APB时钟,24MHZ
  17.     SimplyConfig.clkPsc                 = 0; //时钟分频系数
  18.     SimplyConfig.initValue              = 0;//初始计数值
  19.     SimplyConfig.maxValue               = 24000;//最大计数值,决定频率。24M/maxValue = 24000000/24000 = 1000HZ
  20.     SimplyConfig.chValue[0]             = 10000;//通道0匹配值
  21.     SimplyConfig.chValue[1]             = 20000;//通道1匹配值
  22.    
  23.     SimplyConfig.interruptEn            = DISABLE;
  24.     SimplyConfig.callBack               = NULL;
  25.     PWM_SimplyInit(PWM1, &SimplyConfig);
  26.     PWM_SetChannelELSR(PWM1, PWM_CH_0, PWM_HIGH_TRUE);//通道0极性为高有效
  27.     PWM_SetChannelELSR(PWM1, PWM_CH_1, PWM_LOW_TRUE);//通道1极性为低有效

  28. }
  29. int main(void)
  30. {
  31.         PWM_GPIO_Config();
  32.         PWM_Config();
  33.         
  34.         while(1)
  35.         {
  36.                
  37.         }
  38. }
复制代码
生成波形如下图:黄色为PWM_CH0,绿色为PWM_CH1.可以看出CH0的上升沿与CH1的下降沿对齐
dso_4.jpg
如果需要不同的对齐边沿,可以修改通道的极性来实现,可以为相同的极性,也可为不同的极性。

附上调试代码: PWM_上升沿对齐下降沿.rar (1.61 MB, 下载次数: 3)

使用特权

评论回复
weifeng90| | 2021-5-7 19:18 | 显示全部楼层
谢谢楼主的分享

使用特权

评论回复
单片小菜| | 2021-5-7 22:52 | 显示全部楼层
这个是软件看的吗?

使用特权

评论回复
嵌入小菜菜| | 2021-5-7 23:51 | 显示全部楼层
感谢楼主的分享,持续关注中。不错的帖子。

使用特权

评论回复
wangjj19950516|  楼主 | 2021-5-8 14:00 | 显示全部楼层
单片小菜 发表于 2021-5-7 22:52
这个是软件看的吗?

看输出波形呀,理解原理之后就看的更明白了

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

本版热帖

本版活跃用户

优质原创写原创,赢大奖

编辑推荐

  • 1 wolfe_yu 得到打赏 ¥170.00
  • 2 小叶三千 得到打赏 ¥160.00
  • 3 最美葫芦娃 得到打赏 ¥155.00
  • 4 呐咯密密 得到打赏 ¥115.00
  • 5 hk386 得到打赏 ¥80.00
  • 6 laocuo1142 得到打赏 ¥80.00
  • 7 wzx1994 得到打赏 ¥60.00
  • 8 年轻的国王 得到打赏 ¥60.00
  • 9 bjs1688 得到打赏 ¥55.00
  • 10 木野臻 得到打赏 ¥55.00
在线客服 快速回复 返回顶部 返回列表