打印
[STM32F1]

关于STM32F103高级定时器的问题

[复制链接]
6717|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 qizhying 于 2016-3-18 10:26 编辑

最近在做直流无刷马达控制器要使用STM32F103C8T6的高级定时器功能,但是在测试高级定时器TIM1的时候发现了一些问题!STM32用户手册《RM0008_DocID13902 Rev 16》P354.Table 83描述如下:



CCxE和CCxNE是控制OCx和OCxN输出的控制位,当CCxE和CCxNE均为0时OCx和OCxN的输出功能被关闭,但是在实际测试的结果与手册描述并不相符,下面是测试结果:

测试分为4个步骤:
step1: 正常初始化TIM1,让OC1和OC1N正常输出波形
step2:复位CCxE和CCxNE,此时OC1和OC1N的波形输出被关闭,与手册描述相同
step3:在CCxE=0、CCxN=0的状态下,输入刹车信号(MOE=0),此时像鬼附身似的莫名其妙的OCx和OCxN又正常输出PWM信号了!!这是什么鬼?
step4:去除刹车信号(MOE=1),OCx和OCxN的PWM输出又停止了


step3的现象与手册描述不符,手册中描述在MOE=0,CCxE=0,CCxNE=0时OCx与OCxN的输出会被禁止,但是实际测试发现,此时是有PWM输出的,这是STM32存在的BUG吗?





沙发
xmshao| | 2016-3-18 14:30 | 只看该作者
STM32高级定时器用了好多年了。肯定没你说的这个BUG.

不妨检查下你的代码,这个地方我之前对着这个表一步步也玩过。

使用特权

评论回复
板凳
qizhying|  楼主 | 2016-3-18 14:32 | 只看该作者
xmshao 发表于 2016-3-18 14:30
STM32高级定时器用了好多年了。肯定没你说的这个BUG.

不妨检查下你的代码,这个地方我之前对着这个表一步 ...

我把寄存器都对了一遍,正常情况下MOE=0,CCxE=0,CCxNE=0是不会有波形输出的,但是实际测试下来不是这样,不信你可以试试!

使用特权

评论回复
地板
xmshao| | 2016-3-18 14:38 | 只看该作者
呵呵 不要怀疑芯片BUG了,会把人带入死胡同。又不是啥新芯片或新功能。

如果确定定时器相关配置没问题,确认下管脚,会不会管脚弄错了。这个也经常发生的。

使用特权

评论回复
5
qizhying|  楼主 | 2016-3-18 15:24 | 只看该作者
本帖最后由 qizhying 于 2016-3-18 15:39 编辑
xmshao 发表于 2016-3-18 14:38
呵呵 不要怀疑芯片BUG了,会把人带入死胡同。又不是啥新芯片或新功能。

如果确定定时器相关配置没问题,确 ...

你说的也有道理,不过最好是把问题搞清,免得后面出出问题都不知道是哪里!

我仔细看了数据手册
表格“Table 83. Output control bits for complementary OCx and OCxN channels with
break feature” 最下面有一个注意:
“1. When both outputs of a channel are not used (CCxE = CCxNE = 0), the OISx, OISxN, CCxP and CCxNP bits must be kept cleared.”
也就是说 CCxE = CCxNE = 0时, OISx, OISxN, CCxP and CCxNP也必须清零,否则为非法操作!

使用特权

评论回复
6
xmshao| | 2016-3-18 15:42 | 只看该作者
qizhying 发表于 2016-3-18 15:24
你说的也有道理,不过最好是把问题搞清,免得后面出出问题都不知道是哪里!

我仔细看了数据手册

想起来了,表格最下方写了一句注释。
有印象,当时测试时没碰到这个现象,回头再验证下,不排除是这个原因。

使用特权

评论回复
7
Varus| | 2016-3-18 20:11 | 只看该作者
确认下管脚和相关寄存器配置有没有问题

使用特权

评论回复
8
500days| | 2016-3-18 23:53 | 只看该作者
用103好多年呢,PWM有bug,没听说PWM也有bug的

使用特权

评论回复
9
orangebanana| | 2016-3-20 07:59 | 只看该作者
只用过普通定时器,没用过高级的,不过用着没什么问题

使用特权

评论回复
10
dongnanxibei| | 2016-3-20 13:28 | 只看该作者
要看手册上的那个图,别看表格,那个图上画的有怎么配置以及结构图。

使用特权

评论回复
11
643757107| | 2016-3-20 19:46 | 只看该作者
STM32 用高级定时器 T1 生成CH1  CH4  的PWM 的初始化程序,大家小走弯路

RCC->APB2ENR|=1<<11;       //TIM1时钟使能   

////////////////////////////////////////
GPIOA->CRH&=0XFFFF0FF0;//PA8 11 输出
GPIOA->CRH|=0X0000B00B;//复用功能输出   

////////////////////////////////////////
TIM1->BDTR |=0xC0;   //ARPE使能
TIM1->ARR=arr;//设定计数器自动重装值
TIM1->;PSC=psc;//预分频器不分频

TIM1->CCMR1|=6<<4;  //CH2 PWM2模式 CH1/2  
TIM1->CCMR1|=1<<3; //CH2预装载使能
TIM1->CCMR2|=6<<12;  //CH2 PWM2模式 CH3/4   
TIM1->CCMR2|=1<<11; //CH2预装载使能

TIM1->CCER|=1<<0;   //OC2 输出使能
TIM1->CCER|=1<<12;   //OC2 输出使能

TIM1->CR1 |=0x80;   //ARPE使能
TIM1->CR1|=0x01;    //使能定时器1
TIM1->BDTR|=0x8000;  //使能定时器1输出



T1  和其它的定时器不一样,T2  T3  T4 都不需要最后这一句,  而调T1时,没有最后的这个BDTR,死活不出PWM。

使用特权

评论回复
12
qizhying|  楼主 | 2016-3-20 20:46 | 只看该作者
本帖最后由 qizhying 于 2016-3-21 09:25 编辑
500days 发表于 2016-3-18 23:53
用103好多年呢,PWM有bug,没听说PWM也有bug的

嗯,严格按照STM32的手册来配置是没有问题的。可能是STM32设计的不够严谨,正常思维的情况下如果PWM输出控制位都禁能,无论其他控制寄存器的配置是否合法都不应该有波形输出,但STM32的片子会有波形输出,这就是设计不够严谨!

使用特权

评论回复
13
qizhying|  楼主 | 2016-3-20 20:47 | 只看该作者
xmshao 发表于 2016-3-18 15:42
想起来了,表格最下方写了一句注释。
有印象,当时测试时没碰到这个现象,回头再验证下,不排除是这个原 ...

我验证过了,严格按照STM32的规格书来配置,是没有问题的!

使用特权

评论回复
14
米尔豪斯| | 2016-3-20 21:28 | 只看该作者
定时器相关配置对吗

使用特权

评论回复
15
冰河w| | 2016-3-20 22:36 | 只看该作者
仔细检查代码,芯片BUG应该不会的

使用特权

评论回复
16
qizhying|  楼主 | 2016-3-21 09:32 | 只看该作者
冰河w 发表于 2016-3-20 22:36
仔细检查代码,芯片BUG应该不会的

这应该不算BUG,严格按照STM32的手册来操作不会有问题,不过我还是认为是STM32设计的不够严谨,因为在PWM禁止输出的状态下,其他某些相关的控制位没有被初始化(这种不初始化的情况是非法的),此时PWM仍然会有波形输出,具体请看主题。

使用特权

评论回复
17
xmshao| | 2016-3-23 20:57 | 只看该作者
643757107 发表于 2016-3-20 19:46
STM32 用高级定时器 T1 生成CH1  CH4  的PWM 的初始化程序,大家小走弯路

RCC->APB2ENR|=1CRH|=0X0000B0 ...

是的,STM32里的定时器众多,分好几类。

STM32 tim1、tim8与其它是不一样,二者称为高级定时器,又成马达定时器,带刹车和死区控制。

BDTR也只有高级定时器有,有个输出主控制位,默认是关闭的,需手动打开才能有OC输出。

使用特权

评论回复
18
Varus| | 2016-3-23 22:10 | 只看该作者
可能是STM32设计的不够严谨,有小的bug也不一定

使用特权

评论回复
19
643757107| | 2016-4-14 22:57 | 只看该作者
几个高手都说STM32做的很烂,BUG很多,只不过用的人多,软件上可以通过一定方法避免

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

23

帖子

1

粉丝