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

stm32f030 DMA 被PWM给干掉了!!!

[复制链接]
风铃草2 提问时间:2014-12-24 11:47 /
我把工程文件上传先。[url=]ADC_DMA.zip[/url]
1. ADC_DMA.zip (3.57 MB, 下载次数: 24)
收藏 评论14 发布时间:2014-12-24 11:47

举报

14个回答
奔跑小蜗牛 最优答案 回答时间:2014-12-25 10:58:03
你是VREF+ 和VDDA连在一起了吧?VDDA供电要在2.0V-3.6V,VDDA低于2V AD都不能正常工作,Vref要<=VDDA。如果Vref纹波太大,AD采样值也不会稳的,
小贾-370388 最优答案 回答时间:2014-12-26 13:46:08
本帖最后由 小贾-370388 于 2014-12-26 13:51 编辑

1、VDDA和VREF+的区别就是,VREF+只是提供电压基准参考的,从VREF+流入的电流基本可忽略不计,VREF+内部的电路对VREF+处的电压基本也没什么影响,VREF+的电压稳定度完全由电压基准的精度确定。
VDDA顾名思意,这是要给整个模拟部分供电的,从VDDA上流过的电流视内部模拟部分的电流消耗而定,VDDA内部的电路可能会对VDDA处的电压产生影响,但一般情况下,设计得当也基本可以忽略这个影响。
2、VDDA和VDD没有什么关系,当然,如果你想简化电源设计,把VDD和VDDA连在一起是可以的,此时相当于VDD给数字部分供电,模拟部分也使用VDD提供,如此而已,但VDD一般来说精度比较差,所以VDD和VDDA连在一起时还想着要多高的AD精度显然是你自己的问题3、在没有VREF+的时候,ST把VREF+内部引脚接到了VDDA上,那么此时保证AD精度的一个要求就是:VDDA必须稳定和准确,设计的基本原则就是选择一个比较好外部电压基准,并且这个电压基准应该有一定的带载能力,否则可能发生带载能力不足导致VDDA被拉低,从而导致VREF+也没拉低(没有外部引脚,但内部还是有VREF的,只是内部把VREF+接到了VDDA上),此时,AD的精度多数就保证不了拉,但这是你自己外围芯片选择不当4、在这里纠缠这个问题的人中,估计很多没有完全理解上面的1~3条5、VREF+连到VDDA根本和温漂没什么关系,精度完全取决于你外部电压基准输入到VDDA的电压精度。
风铃草2 回答时间:2014-12-24 11:50:25
另外加上 我的PWM输出图
IMG_20141224_105850.jpg
晓枫VS枯叶 回答时间:2014-12-24 12:07:36
本帖最后由 晓枫VS枯叶 于 2014-12-24 12:12 编辑
  1. TIM_CtrlPWMOutputs(TIM14, ENABLE);//
复制代码
  1. void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState)
  2. {
  3.   /* Check the parameters */
  4.   assert_param(IS_TIM_LIST2_PERIPH(TIMx));
  5.   assert_param(IS_FUNCTIONAL_STATE(NewState));
  6.   if (NewState != DISABLE)
  7.   {
  8.     /* Enable the TIM Main Output */
  9.     TIMx->BDTR |= TIM_BDTR_MOE;
  10.   }
  11.   else
  12.   {
  13.     /* Disable the TIM Main Output */
  14.     TIMx->BDTR &= (uint16_t)(~((uint16_t)TIM_BDTR_MOE));
  15.   }  
  16. }
复制代码
  1. #define IS_TIM_LIST2_PERIPH(PERIPH) (((PERIPH) == TIM1) || \
  2.                                      ((PERIPH) == TIM15)|| \
  3.                                      ((PERIPH) == TIM16)|| \
  4.                                      ((PERIPH) == TIM17))
复制代码
高级定时器才有这个函数TIM_CtrlPWMOutputs,tim14是高级定时器么?
而且不是有一个设置脉宽的函数吗TIM_SetComparex,为什么你又写了一个函数!
风铃草2 回答时间:2014-12-24 13:37:29
晓枫VS枯叶 发表于 2014-12-24 12:07
高级定时器才有这个函数TIM_CtrlPWMOutputs,tim14是高级定时器么?
而且不是有一个设置脉宽的 ...

就是因为原先是TIM16出现这种情况我才换的TIM14的,结果也是一样。 那个设置脉冲宽度的函数我没调用,还要修改的。
风铃草2 回答时间:2014-12-24 15:10:39
彻底把我雷到了!!!!! 我把我拥有的TIM 都输出 48KPWM  居然发现TIM1输出48K的时候 不会影响ADC DMA   其它的TIM全部会影响  那STM32F030不至于这样吧????
风铃草2 回答时间:2014-12-24 15:12:32
额 新发现 。。。可能是我调试方法有问题
风铃草2 回答时间:2014-12-24 15:59:14
新发现 TIM17 在VREF 参考电压1.90V  (采样电压始终是1.25-1.35V)在PWM输出48K 时能稳定采样 ,其余通道除了TIM1 全失败
风铃草2 回答时间:2014-12-25 08:30:08
鸟性 ,结贴了  VDDA 参考电压必须2.4V以上  否则各种错误
回答时间:2014-12-25 10:46:07
楼主能力太强了。
不好意思,最近有些事情不能在论坛及时回复。
12下一页

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版