OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 14858|回复: 8

[开发板通用] 分享:PWM输出极性高低的区别

[复制链接]

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2018-12-15 18:30:28 | 显示全部楼层 |阅读模式
本帖最后由 1208 于 2019-11-23 16:58 编辑

定义:TIM_OCNPolarity_High为高极性
          TIM_OCNPolarity_Low为低极性
分析图:
QQ截图20181215184543.png
110:PWM模式1- 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为
无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否
则为有效电平(OC1REF=1)。
111:PWM模式2- 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为
有效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电
首先要先理解好这一句话:
当PWM模式2- 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时
通道1为无效电平,否则为有效电平
TIM_SetCompare2(TIM3,0);
1)为什么在高极性时,灯会灭呢
因为TIMx_CNT<TIMx_CCR1,通道1为无效电平
战舰板的LED是低电平亮,而TIM_SetCompare2(TIM3,0);即TIMx_CCR1的值为0,也就是TIMx_CCR1
<=TIM3_CNT时通道2输出是高电平
不符合LED灯低电平亮,LED灯是不亮的。
2)那么把高极性改为低极性,为什么灯会
如TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
因为CC1P=0时:OC1高电平有效  TIM_OCNPolarity_High
CC1P=1时:OC1低电平有效  TIM_OCNPolarity_Low
QQ截图20181215175847.png
由于低极性输出的是低电平有效所以灯可以点亮
3)为什么把PWM2改成了PWM1,别的什么都没动,灯就亮了
“PWM模式1- 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平
4)考虑到设置CCR的值设置为300到500效果不是很明显
所以CCR取0和899,可以直接看出效果现象
QQ截图20181215183748.png


业精于勤荒于嬉;行成于思毁于随!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
 楼主| 发表于 2019-1-8 18:48:46 | 显示全部楼层
本帖最后由 1208 于 2019-1-8 20:19 编辑

1)占空比的大小跟ARR和CCR的值有关,它决定着灯的亮度和时间
同时灯的亮度跟脉冲宽度和电压由这两个因素决定着
2)程序灯的亮度是跟CCER寄存器有关,不是跟比较值CCR有关
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Disable; //比较输出使能
3)如何使灯闪烁,人眼停留看到20HZ,一般设置20HZ以下才可以看到闪烁。
控制1000ms亮灭一次,这个就需要CCR 的值是ARR的一半,即频率调成1HZ。
TIM_OCMode_Toggle一个周期翻转一次
TIM_OCMode_PWM1一周期翻转两次

4)TIM14_PWM_Init(10000-1,8400-1);    //84M/8400=10000hz的计数频率,重装载值10000,所以PWM频率为 10000/1000=1hz.
ARR和PSC都是16位的,2^16=65536,超过这个值就会溢出,由溢出的部分开始计算
也就是PWM频率1HZ输出时间1s,由T=1/F得;

探索者: PWM输出实验.zip

3.98 MB, 下载次数: 52

业精于勤荒于嬉;行成于思毁于随!
回复 支持 0 反对 1

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
 楼主| 发表于 2019-11-23 17:48:26 | 显示全部楼层
当CCRx是个变化的值时候,在0-899之间变化,因为灯亮是在电平低状态下,在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为无效电平,即使它是低电平,也是无效的,为什么灯还会亮,因为无效电平,强制为低
业精于勤荒于嬉;行成于思毁于随!
回复 支持 1 反对 0

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
发表于 2018-12-15 19:54:59 | 显示全部楼层
楼主又出新作
Loto虚拟示波器 官方qq群: 706769836 https://shop296209296.taobao.com/shop/view_shop.htm?tracelog=t
回复 支持 反对

使用道具 举报

2

主题

474

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6084
金钱
6084
注册时间
2018-6-27
在线时间
524 小时
发表于 2019-3-8 07:42:42 | 显示全部楼层
学习学习,学习学习。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2019-7-26
在线时间
3 小时
发表于 2019-8-6 10:54:31 | 显示全部楼层
1208 发表于 2019-1-8 18:48
1)占空比的大小跟ARR和CCR的值有关,它决定着灯的亮度和时间
同时灯的亮度跟脉冲宽度和电压由这两个因素 ...

我是新手,看了您写的有一些地方没弄明白。由分析图知,占空比跟arr和ccr有关,而占空比不就决定了灯的亮度吗?
假如说实验为pwm2模式,输出极性设为高,只有频率较大,那么占空比为20%的不就是灯的亮度为长亮(实际无闪烁)的80%,且常亮(实际闪烁)吗?
回复 支持 反对

使用道具 举报

10

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
188
金钱
188
注册时间
2020-3-13
在线时间
56 小时
发表于 2020-4-19 11:14:05 | 显示全部楼层
你好,我想问一下就是配置的极性高低是在开发板开启的初始状态作用吗,然后后续就不关这个的事了,这样理解对吗?因为我在学PWM用作DAC的时候极性设置为低,所以不太明白,请指教!谢谢
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2019-11-20
在线时间
6 小时
发表于 2021-8-14 19:12:22 | 显示全部楼层
这个Excel表是不是有问题,PWM2模式下,高极性是高电平有效吧,CNT<CCR,输出无效电平(即低电平),灯应该是亮的。所以,这个表是不是弄反了?
回复 支持 反对

使用道具 举报

68

主题

212

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2013-5-7
在线时间
28 小时
发表于 2022-8-4 12:59:19 | 显示全部楼层
66666666666
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 22:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表