打印
[STM32F0]

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

[复制链接]
3806|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
jmworkspace + 2 很给力!
地板
icecut| | 2014-5-15 14:41 | 只看该作者
看不懂你究竟想做什么.ad输入和pwm输出有什么关系呢?难道你想对pwm进行rc滤波得到相同的波形?

使用特权

评论回复
5
jmworkspace|  楼主 | 2014-5-15 14:42 | 只看该作者
icecut 发表于 2014-5-15 14:41
看不懂你究竟想做什么.ad输入和pwm输出有什么关系呢?难道你想对pwm进行rc滤波得到相同的波形? ...

我自己有个PWM信号产生器,然后通过这个开发板的AD采集这个信号产生器产生的波形,然后在通过该开发板的TIM1输出波形在示波器上看

使用特权

评论回复
6
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哪个数据

使用特权

评论回复
7
icecut| | 2014-5-15 15:46 | 只看该作者
jmworkspace 发表于 2014-5-15 14:42
我自己有个PWM信号产生器,然后通过这个开发板的AD采集这个信号产生器产生的波形,然后在通过该开发板的T ...

PWM信号产生器,然后通过这个开发板的AD采集这个信号
这样是不行的.你知道ad采样的结果是什么样子吗?

使用特权

评论回复
8
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模块生成可变占空比的。

使用特权

评论回复
9
icecut| | 2014-5-15 17:27 | 只看该作者
你先做ad采集部分,估计会知道遇到什么问题

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
jmworkspace + 1 神马都是浮云
10
wallace_tsou| | 2014-5-16 20:05 | 只看该作者
PWM也要用DMA寫入。不然PWM  Duty在寫入新值時會受到干擾而動作。
成功的案例是
ADC -> DMA ->  RAM中取值計算後放到輸出RAM  -> DMA -> PWM

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
jmworkspace + 1 赞一个!
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

45

帖子

0

粉丝