你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 7825|回复: 10

关于STM32F051比较器与定时器的逐波电流控制问题!

[复制链接]

1

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
2018-8-4
发表于 2012-9-4 15:03:46 | 显示全部楼层 |阅读模式
手册里讲STM32F051内部比较器可以连接到定时器的OCREF_CLR输入,可是怎么配置就是实现不了内部连接(外部连接已实现逐周期电流控制),有没有高手用到这个东西,指点下什么情况, 无标题1.png </b>
定时器配置
/******************************************************
    TIM1_Config
*******************************************************/
 
  /* TIM1 clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 , ENABLE); 
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
  TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);


  /* Time Base configuration */
  TIM_TimeBaseStructure.TIM_Prescaler = 999;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseStructure.TIM_Period = 47999;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
  /* Channel 1, 2, 3 and 4 Configuration in PWM mode */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
  TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;
  TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
  TIM_OCInitStructure.TIM_Pulse = 1000;
  TIM_OC1Init(TIM1, &TIM_OCInitStructure);
  TIM_OCInitStructure.TIM_Pulse = 100;
  TIM_OC2Init(TIM1, &TIM_OCInitStructure);
  TIM_OCInitStructure.TIM_Pulse = 100;
  TIM_OC3Init(TIM1, &TIM_OCInitStructure);

  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
//  TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
//  TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
  TIM_OCInitStructure.TIM_Pulse = 1000;   
  TIM_OC4Init(TIM1, &TIM_OCInitStructure);
 
//  TIM1->CCER = 0x3FF6;
  /* Time BDTR configuration */
  TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable;
  TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;
  TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF;
  TIM_BDTRInitStructure.TIM_DeadTime  = 0x00;
  TIM_BDTRInitStructure.TIM_Break     = TIM_Break_Enable;
  TIM_BDTRInitStructure.TIM_BreakPolarity   =  TIM_BreakPolarity_Low;
  TIM_BDTRInitStructure.TIM_AutomaticOutput =  TIM_AutomaticOutput_Enable;
                
  TIM_BDTRConfig(TIM1,&TIM_BDTRInitStructure);
//  TIM_ClearFlag(TIM1, TIM_IT_Update);
//  TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);
 
  TIM_ETRConfig(TIM1, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_Inverted, 0x00);
  TIM_SelectMasterSlaveMode(TIM1, TIM_MasterSlaveMode_Disable);
  TIM_SelectOCREFClear(TIM1, TIM_OCReferenceClear_OCREFCLR);
  TIM_ClearOC1Ref(TIM1, TIM_OCClear_Disable); 
  /* TIM1 counter enable */
  TIM_Cmd(TIM1, ENABLE);
  /* TIM1 Main Output Enable */
  TIM_CtrlPWMOutputs(TIM1, ENABLE);
比较器配置

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
  COMP_DeInit();
   
  COMP_InitStructure.COMP_InvertingInput = COMP_InvertingInput_DAC1;   
  COMP_InitStructure.COMP_Output = COMP_Output_TIM1OCREFCLR;    
  COMP_InitStructure.COMP_OutputPol = COMP_OutputPol_NonInverted;  
  COMP_InitStructure.COMP_Hysteresis = COMP_Hysteresis_No;   
 COMP_InitStructure.COMP_Mode = COMP_Mode_HighSpeed;       
COMP_Init(COMP_Selection_COMP1, &COMP_InitStructure);
  COMP_Cmd(COMP_Selection_COMP1, ENABLE);

无标题.png
回复

使用道具 举报

24

主题

591

回帖

0

蝴蝶豆

中级会员

最后登录
2020-12-2
发表于 2012-9-4 20:52:46 | 显示全部楼层

RE:关于STM32F051比较器与定时器的逐波电流控制问题!

能不能提供工程看看。
回复 支持 反对

使用道具 举报

1

主题

2

回帖

0

蝴蝶豆

新手上路

最后登录
2018-8-4
 楼主| 发表于 2012-9-5 14:21:33 | 显示全部楼层

回复:关于STM32F051比较器与定时器的逐波电流控制问题!

发个外部已经实现的工程,还有波形图片。 逐周期电流控制.jpg
黄色的通道是比较器同相端输入可调电位器,紫色为比较器反相端输入DAC模拟的锯齿波,蓝色为控制后PWM波形。
比较器输出端PA6直连到定时器1ETR端PA12

COMPControlTIM.rar

下载

566.25 KB, 下载次数: 200, 下载积分: ST金币 -1

回复 支持 反对

使用道具 举报

0

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-7-17 11:44:09 | 显示全部楼层

回复:关于STM32F051比较器与定时器的逐波电流控制问题!

高手啊
回复 支持 反对

使用道具 举报

1

主题

14

回帖

0

蝴蝶豆

初级会员

最后登录
2019-11-21
发表于 2015-3-23 11:43:41 | 显示全部楼层
学习学习!!!!
回复 支持 反对

使用道具 举报

100

主题

3617

回帖

1

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2015-3-23 13:18:06 | 显示全部楼层
学习,还没用过
回复 支持 反对

使用道具 举报

52

主题

3313

回帖

61

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2015-3-23 17:10:20 | 显示全部楼层
不懂。帮顶
回复 支持 反对

使用道具 举报

52

主题

3313

回帖

61

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2015-3-23 17:10:57 | 显示全部楼层
随便学习学习
回复 支持 反对

使用道具 举报

0

主题

1

回帖

0

蝴蝶豆

新手上路

最后登录
2017-8-23
发表于 2016-9-22 18:37:58 | 显示全部楼层
我也遇到同样的问题,请问解决了吗?
回复 支持 反对

使用道具 举报

27

主题

498

回帖

40

蝴蝶豆

论坛元老

最后登录
2020-12-5
发表于 2017-8-7 16:49:34 | 显示全部楼层
楼主看着利用高级定时器是要做BLDC电机控制还是?
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版