社区导航

 

搜索
查看: 1286|回复: 5

[讨论] STM32F030F4P6多通道ADC DMA采样数值为4095问题总结

[复制链接]

7

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2020-1-15 10:51 | 显示全部楼层 |阅读模式
本帖最后由 zhouguoping 于 2020-1-15 10:55 编辑

    最近调试STM32F030F4P6多通道ADC DMA定时触发采样时,碰到鬼了!此鬼折腾了我2天多的时间总算得出结论。

    电路原理图:                                                image.png

    现象描述:

    PA0,PA1外接2路模拟量,PA2,PA3当UART TTL电平使用,然后启用DMA 2通道定时器1的TRGO触发采样。第一版板子都调试成功了,第二版稍微修改了一下板子尺寸,元器件布局之类的,总之,原理上就将LED从PA4移到了PA5,其他都没有动。然后焊接板子调试,奶奶的,见鬼了!PA0接了其他传感器,PA1接了个TMP36,DMA缓存数组0的值(接其他传感器的值)正确,1的值(TMP36)为4095。

    捉鬼过程:

    1、测硬件,VCCA=3.28,VCC=3.28,REST=3.3V。么发现问题,因为板子元器件密度比较大,怀疑是不是底线没接好?因地线是走线加覆铜,而电源线专门走的20mil的线,么得怀疑。然后地线飞了两个线后问题依旧!

    2、查代码,没发现啥问题。因使用IAR开发,FLASH的15扇区留作存参数,FLASH容量不够用了,将优化级别设置为Medium,怀疑是不是程序优化带来的问题?然后精简程序,想将优化级别改为Low,但是怎么折腾还是没达到目的,最后将串口部分功能注视掉,优化级别设置为Low,问题依旧!

    3、修改代码中的怪相:将ADC_ChannelConfig(ADC1, ADC_Channel_0, ADC_SampleTime_55_5Cycles);中的ADC_SampleTime_55_5Cycles改为ADC_SampleTime_1_5Cycles,通道1的值不再是4095,但还是与外部测量的电压值对不上,比如0.8V的输入,缓存数组1里面的值是1600左右,后来发现,将通道转换时间或者是ADC的CLK调整的越高,采样值越低,越慢采样值越大。

    4、因之前代码板子都是好的,并且之前的板子上的元器件已经拆到新板子上了,也就没法对比?第二天早上再搜网页,发现一网友也见过此鬼!“STM32F030的ADC严重问题”。原文连接 http://bbs.eeworld.com.cn/thread-464556-1-1.html 豁然想起也用示波器测测看,发现TMP36的信号线上叠加了一个2us的方波,而且将与电脑的RX拔掉就没了,再测RX线是5V的TTL电平,问题应该就在于这个5V的TTL电平吧?然后给5V的RX线中串接一个10K的电阻,一切正常了。这就是问题的结局。

    

     问题回顾:

     第一版用的是自制的3.3V TTL与电脑通信,故一切OK!第二版直接采用USB转232 TTL(TTL为5V电平,未测,之前不知)

     

     疑惑:

     PA4管脚的电平不对?为什么影响到了PA1?为什么么有影响到PA0?再说PA4都配置为UART管脚了,怎么又牵扯到芯片内部的模拟量的东东(当然完全没关系估计是不可能的!)?这么说来,那通信之类的干扰岂不是对模拟量影响很大?难道不是芯片的BUG?

此帖出自stm32/stm8论坛

回复

使用道具 举报

615

TA的帖子

103

TA的资源

纯净的硅(中级)

Rank: 5Rank: 5

发表于 2020-1-28 15:28 | 显示全部楼层

是用STM32CubeMX生成的工程配置吗?

你目前应该还没找到问题的根源

点评

我用的是标准库,自己写的代码.  详情 回复 发表于 2020-3-19 14:47

回复

使用道具 举报

4

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2020-1-28 21:48 | 显示全部楼层

我使用F030F4P6采集6路ADC的时候出现AD值与电压值对不上的情况,后来加了一句HAL_ADCEx_Calibration_Start(&hadc);    就好了

点评

我用标准库,自己写的代码,也调用了校准,我的值是对的,就是PA4配置为UART时,如果与5V的TTL电平连接时,会影响PA1(码值4095),PA0是好的.  详情 回复 发表于 2020-3-19 14:49

回复

使用道具 举报

7

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-3-19 14:47 | 显示全部楼层
gs001588 发表于 2020-1-28 15:28 是用STM32CubeMX生成的工程配置吗? 你目前应该还没找到问题的根源

我用的是标准库,自己写的代码.


回复

使用道具 举报

7

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-3-19 14:49 | 显示全部楼层
stcanx 发表于 2020-1-28 21:48 我使用F030F4P6采集6路ADC的时候出现AD值与电压值对不上的情况,后来加了一句HAL_ADCEx_Calibration_Start( ...

我用标准库,自己写的代码,也调用了校准,我的值是对的,就是PA4配置为UART时,如果与5V的TTL电平连接时,会影响PA1(码值4095),PA0是好的.


回复

使用道具 举报

14

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2020-3-24 15:20 | 显示全部楼层

顶一下


回复

使用道具 举报

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

关闭

站长推荐上一条 1/4 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-6-3 13:42 , Processed in 0.243933 second(s), 28 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表