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

查看: 7830|回复: 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版