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

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

[复制链接]
淘豆者 提问时间:2012-9-4 15:03 /
手册里讲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
收藏 评论10 发布时间:2012-9-4 15:03

举报

10个回答
zykzyk-93033 回答时间:2012-9-4 20:52:46

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

能不能提供工程看看。
淘豆者 回答时间:2012-9-5 14:21:33

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

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

COMPControlTIM.rar

下载

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

lql2009 回答时间:2014-7-17 11:44:09

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

高手啊
jackliu-417543 回答时间:2015-3-23 11:43:41
学习学习!!!!
stary666 回答时间:2015-3-23 13:18:06
学习,还没用过
wyxy163@126.com 回答时间:2015-3-23 17:10:20
提示: 作者被禁止或删除 内容自动屏蔽
wyxy163@126.com 回答时间:2015-3-23 17:10:57
提示: 作者被禁止或删除 内容自动屏蔽
adeweilive 回答时间:2016-9-22 18:37:58
我也遇到同样的问题,请问解决了吗?
dear祝子 回答时间:2017-8-7 16:49:34
楼主看着利用高级定时器是要做BLDC电机控制还是?
shaonian 回答时间:2018-2-25 17:00:58
楼主还在么,能解释下原理吗

所属标签

相似问题

官网相关资源

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