[STM32F0] 想采用stm32f051实现ADC采集数据转化为PWM输出

[复制链接]
 楼主| jmworkspace 发表于 2014-5-15 14:10 | 显示全部楼层 |阅读模式
小弟刚买的开发板,稍微看了板子信息,现在想用stm32f0-discovery实现ADC采集数据转化为PWM的功能,因为考虑到输入可能是不同的波形,譬如方波、正炫波、三角波等。就想采用ADC一个输入口采集然后将数据从TIM1的一个输出通道,通过示波器检测波形,但是关于ADC还有TIM1的配置小弟实在不会,特别TIM1的配置不知道该如何入手,看了很多代码也没有类似的。固件实例只是固定频率、占空比的的方波输出设置。
    考虑到输入的波形,所以TIM1的设置该如何设置呢?还有,应该是用ADC_DMA吧?具体怎么用?是哪个变量反馈的值决定TIM1哪个值在while(1)循环体里不断变化呢?注意,大神们如果有代码请注意小弟所用的IC类型,是M0的,不是M3的 所以库的类型也不同,在此谢谢广大同胞关注~
 楼主| jmworkspace 发表于 2014-5-15 14:11 | 显示全部楼层
小弟1楼就先占了:lol,希望有相关兴趣的一起讨论。小弟也是刚开始玩,也刚在看固件库源码:P
mmuuss586 发表于 2014-5-15 14:36 | 显示全部楼层
icecut 发表于 2014-5-15 14:41 | 显示全部楼层
看不懂你究竟想做什么.ad输入和pwm输出有什么关系呢?难道你想对pwm进行rc滤波得到相同的波形?
 楼主| jmworkspace 发表于 2014-5-15 14:42 | 显示全部楼层
icecut 发表于 2014-5-15 14:41
看不懂你究竟想做什么.ad输入和pwm输出有什么关系呢?难道你想对pwm进行rc滤波得到相同的波形? ...

我自己有个PWM信号产生器,然后通过这个开发板的AD采集这个信号产生器产生的波形,然后在通过该开发板的TIM1输出波形在示波器上看
 楼主| jmworkspace 发表于 2014-5-15 14:45 | 显示全部楼层
mmuuss586 发表于 2014-5-15 14:36
https://bbs.21ic.com/forum.php?mod=viewthread&tid=392803
看下这个资料吧;

这个资料我刚也看到了 也是看这个的ADC_DMA写了这部分代码,但是具体的TIM1的初始化不懂,怕初始化设置导致错误,因为TIM1是受ADC输出影响的,怕配置影响实际输出效果,所以想问问具体TIM1该如何设置。还有是采集ADC哪个数据
icecut 发表于 2014-5-15 15:46 | 显示全部楼层
jmworkspace 发表于 2014-5-15 14:42
我自己有个PWM信号产生器,然后通过这个开发板的AD采集这个信号产生器产生的波形,然后在通过该开发板的T ...

PWM信号产生器,然后通过这个开发板的AD采集这个信号
这样是不行的.你知道ad采样的结果是什么样子吗?
 楼主| jmworkspace 发表于 2014-5-15 15:51 | 显示全部楼层
icecut 发表于 2014-5-15 15:46
PWM信号产生器,然后通过这个开发板的AD采集这个信号
这样是不行的.你知道ad采样的结果是什么样子吗? ...

:L这样为什么不行的? 不知道呢 求指教!!


网上看到在主函数有用
int main(void)
{
     
      
  /* System Clocks Configuration */
  RCC_Configuration();

  /* GPIO Configuration */
  GPIO_Configuration();
  
  DMA_Configuration();
  
  ADC1_Configuration();
  
  TIM4_Configuration();
  
  
  while (1)
  {
       
        TIM4->CCR1 = (uint16_t) (ADCConvertedValue[1]* (TimerPeriod - 1) / 4096);
        TIM4->CCR2 = (uint16_t) (ADCConvertedValue[0]* (TimerPeriod - 1) / 4096);
       
  }
}


这个来控制的,不过这个是用M3开发的,功能是AD模块生成可变占空比的。
icecut 发表于 2014-5-15 17:27 | 显示全部楼层
你先做ad采集部分,估计会知道遇到什么问题

评分

参与人数 1威望 +1 收起 理由
jmworkspace + 1 神马都是浮云

查看全部评分

wallace_tsou 发表于 2014-5-16 20:05 | 显示全部楼层
PWM也要用DMA寫入。不然PWM  Duty在寫入新值時會受到干擾而動作。
成功的案例是
ADC -> DMA ->  RAM中取值計算後放到輸出RAM  -> DMA -> PWM

评分

参与人数 1威望 +1 收起 理由
jmworkspace + 1 赞一个!

查看全部评分

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

本版积分规则

12

主题

45

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部