TI中文支持网
TI专业的中文技术问题搜集分享网站

请问一下28335使用ADC采样对于同一电压每次上电采样值不一样的问题

我的28335在AD采用时出现了一个非常奇怪的异常跳动问题,我现在把具体现象描述一下:在AD口输入模拟电压不变(比如我是用1.65V)的情况下,我进行程序编译,下载,运行等,这个时候我观察ADmirror结果寄存器的值为2250, 2251, 2252, 2250, 2251, 2252, 2250等等,总之是围绕大约2251左右波动,因为我的1.65V毕竟也会有微小的波动。然而,当我disconnect后再connect,再进行第二次编译,下载,运行等,此时我观察ADmirror结果寄存器的值却变为2281, 2282, 2282, 2282, 2280, 2281, 2280等等,也就是说围绕2280左右波动。这样如此反复,反复在不断电的情况下下载程序和反复上电断电的现象一致,发现在1.65V的模拟量输入不变的情况下,ADmirror结果寄存器的值却有两个基准,即这次调试时为2250左右,下次调试时为2280左右,很奇怪的现象。这个感觉很不正常,它不是说程序在运行中AD采样值的波动范围大小问题,而是说每当重新下载程序或者板子重新上电运行时AD采样值的基准跳动问题。

电路按照标准的2.2uF外部电容设置,内部基准。

我能保证我的输入电压没有发生变化。

谢谢!

HH Y:

关注一下,最近也被类似问题搞得焦头烂额,不过不关TI的事,用的芯片都是其他厂家的,但是可能和楼主反映的问题有关,希望楼主的问题不是乌龙。

事情是这样的,我们的产品有触摸屏,用了市场上常用的触摸芯片。很长一段时间来,经常出现很诡异的现象:

1、同一份代码,烧录在不同的板上,有些触摸正常,有些触摸不灵敏

2、同一块板,烧录不同版本的代码,有的版本触摸正常,有的版本触摸不灵敏。

3、对比不同版本的代码,发现差异仅仅是在一个函数内定义两个临时变量时是否有初始化以及初始化的值是多少的问题。比如,不初始化, int a,触摸时灵敏;初始化 int a = 0,触摸不灵敏;初始化 int a = 32767,触摸又灵敏了。可以肯定的,这两个值是否初始化以及初始化成什么值都毫无意义,因为程序运行时就算一次都没有执行到这个函数,触摸屏也能表现出差异,就算执行到了,a的值也不存在未赋值就被使用的bug,程序逻辑上毫无问题。

4、第一次临时用不初始化a这个办法解决了。后来,又出了一批,这次不管这个a的事,但也是因为一句可有可无的代码而有差异。比如,一句用来关掉仿真引脚功能的代码也会影响。总之,可以肯定,和代码逻辑毫无关系,感觉就是代码量的变化影响的。

这次进行了彻底研究,然后发现导致触摸不灵敏的直接原因。用过电阻屏的都知道,触摸芯片就是一块模数转换芯片,触摸不良就是采样到的模拟信号波动太大,被滤波算法认为是干扰而过滤掉(真不好意思,这个触摸底层代码是买学习板带来的例程,不是我写的)。也就是说,同一块板,竟然因为烧录的代码量不同而影响到模拟电路?!

由于没有很专业的设备,很难确认模拟信号究竟波动到什么程度,用一般的示波器看不出问题。也可以排除SPI通讯干扰,因为模拟量虽然波动较大,但也不至于没有底线的乱跳,显然不是通讯问题。总之能尝试的办法都尝试了,比如关全局中断什么的,都没用。最后没有办法,修改了滤波算法,增加采样数量,降低滤波阈值,问题解决。当然,也可能这种修改已经改变了代码量了~细思极恐~

如果模数转换功能真的有每次上电基准都不同的现象,那就可能存在每次上电转换精度都不同的情况,然后由于代码量不同,芯片运行时间有差异,于是……掰不下去了,听专家看法吧!

我的28335在AD采用时出现了一个非常奇怪的异常跳动问题,我现在把具体现象描述一下:在AD口输入模拟电压不变(比如我是用1.65V)的情况下,我进行程序编译,下载,运行等,这个时候我观察ADmirror结果寄存器的值为2250, 2251, 2252, 2250, 2251, 2252, 2250等等,总之是围绕大约2251左右波动,因为我的1.65V毕竟也会有微小的波动。然而,当我disconnect后再connect,再进行第二次编译,下载,运行等,此时我观察ADmirror结果寄存器的值却变为2281, 2282, 2282, 2282, 2280, 2281, 2280等等,也就是说围绕2280左右波动。这样如此反复,反复在不断电的情况下下载程序和反复上电断电的现象一致,发现在1.65V的模拟量输入不变的情况下,ADmirror结果寄存器的值却有两个基准,即这次调试时为2250左右,下次调试时为2280左右,很奇怪的现象。这个感觉很不正常,它不是说程序在运行中AD采样值的波动范围大小问题,而是说每当重新下载程序或者板子重新上电运行时AD采样值的基准跳动问题。

电路按照标准的2.2uF外部电容设置,内部基准。

我能保证我的输入电压没有发生变化。

谢谢!

user3593196:

我的ADC输入加上了运放做缓冲器 依然没有用, DSP每次上电对于同一电压的采集量都略有变化,变化在20——30个AD值之间

我的28335在AD采用时出现了一个非常奇怪的异常跳动问题,我现在把具体现象描述一下:在AD口输入模拟电压不变(比如我是用1.65V)的情况下,我进行程序编译,下载,运行等,这个时候我观察ADmirror结果寄存器的值为2250, 2251, 2252, 2250, 2251, 2252, 2250等等,总之是围绕大约2251左右波动,因为我的1.65V毕竟也会有微小的波动。然而,当我disconnect后再connect,再进行第二次编译,下载,运行等,此时我观察ADmirror结果寄存器的值却变为2281, 2282, 2282, 2282, 2280, 2281, 2280等等,也就是说围绕2280左右波动。这样如此反复,反复在不断电的情况下下载程序和反复上电断电的现象一致,发现在1.65V的模拟量输入不变的情况下,ADmirror结果寄存器的值却有两个基准,即这次调试时为2250左右,下次调试时为2280左右,很奇怪的现象。这个感觉很不正常,它不是说程序在运行中AD采样值的波动范围大小问题,而是说每当重新下载程序或者板子重新上电运行时AD采样值的基准跳动问题。

电路按照标准的2.2uF外部电容设置,内部基准。

我能保证我的输入电压没有发生变化。

谢谢!

user3593196:

回复 user3593196:

赞(0)
未经允许不得转载:TI中文支持网 » 请问一下28335使用ADC采样对于同一电压每次上电采样值不一样的问题
分享到: 更多 (0)