skyfulstar 发表于 2011-12-15 12:57:37

RE:STM32F103VE AD转换跨界问题

/*********************************************************************************************************
** 函数名称: ADC_Value_Handle
** 功能描述: ADC转换结果处理,10ms把4通道ADCBUFLEN   个AD值累加求平均,在把平均值,累加ADCNUMMAX 次
** 输 入: 无
** 输 出: 无
********************************************************************************************************/
void ADC_Value_Handle(void)
{
uint16 i;
uint8j;
uint32 adc_temp;
for(j=0;j

火雷达 发表于 2011-12-15 12:55:58

回复:STM32F103VE AD转换跨界问题

你这种情况还真是有点头痛。我看了下你的测量数据,正常情况下AD值应该有+-3个的波动,进位的时候,有10个左右AD值(这个的话,相对来说,还是正常的)
建议做法:
1、把信号源输入电压提高比如1V以上,看看是否有进位时误差太多
2、把采样速度加快,看看比如1mS采样一次,看看AD值是否异常
3、确认一下信号源是否稳定,可以尝试用2.5V基准分压输出,看看情况
还有应该问题是,输入太小,相对来说,ADC的精度有比较大的影响,STM32有一篇文章专门介绍了提高ADC精度的,2.5V精度的,在输入1.25V时,相对比较好。

火雷达 发表于 2011-12-15 13:15:31

回复:STM32F103VE AD转换跨界问题

PA0,听别人说,是有点问题的,不知道你是否用了这个AD口

发表于 2011-12-15 14:36:16

RE:STM32F103VE AD转换跨界问题

for(j=0;j
这个是不是不对?我还是建议你把你查看一下采集到的数据,因为你这里做平均运算,很可能发生的问题是将前面和后面采集到的电压值进行处理的时候,有的会被正好抵消。

skyfulstar 发表于 2011-12-16 08:20:16

回复:STM32F103VE AD转换跨界问题

回复第 13 楼 于2011-12-15 05:15:31发表:
PA0,听别人说,是有点问题的,不知道你是否用了这个AD口 

我用的是PA0-PA4,发现问题的是PA1,之后我把四个脚连在一起测量,出的数值都有错误。

skyfulstar 发表于 2011-12-16 08:30:03

回复:STM32F103VE AD转换跨界问题

回复第 12 楼 于2011-12-15 04:55:58发表:
你这种情况还真是有点头痛。我看了下你的测量数据,正常情况下AD值应该有+-3个的波动,进位的时候,有10个左右AD值(这个的话,相对来说,还是正常的)
建议做法:
1、把信号源输入电压提高比如1V以上,看看是否有进位时误差太多
2、把采样速度加快,看看比如1mS采样一次,看看AD值是否异常
3、确认一下信号源是否稳定,可以尝试用2.5V基准分压输出,看看情况
还有应该问题是,输入太小,相对来说,ADC的精度有比较大的影响,STM32有一篇文章专门介绍了提高ADC精度的,2.5V精度的,在输入1.25V时,相对比较好。 

我现在的临时解决办法就是把信号零点电压提高到了630mv,就使用大约630-1200这个范围,信号测量都是准的,如果信号再大些就到了1250mv(2^11)就又出现误差了,不过如果信号到了这个点不在我仪器要求参数范围内,有误差也说的过去。
采样速度从大到小都试验过了,没效果,我的信号源就是用误差0.001的基准分出来的,应该没问题。
但以后再用就让我头疼了,不敢保证都能使用非进位点啊,如果解决不了,STM32这个片子,如果用就要加外部AD了,哎~

skyfulstar 发表于 2011-12-16 08:34:40

回复:STM32F103VE AD转换跨界问题

回复第 14 楼 于2011-12-15 06:36:16发表:
for(j=0;j
这个是不是不对?我还是建议你把你查看一下采集到的数据,因为你这里做平均运算,很可能发生的问题是将前面和后面采集到的电压值进行处理的时候,有的会被正好抵消。 

这是我最出发现问题时的程序,之后我就把平均都去掉了,单采样看数,还是有错误
贴出来的程序怎么FOR循环被消了一块去呀正确的如下:

/*********************************************************************************************************
** 函数名称: ADC_Value_Handle
** 功能描述: ADC转换结果处理
** 输   入: 无
** 输   出: 无
********************************************************************************************************/
void ADC_Value_Handle(void)
{
 uint16 i;
 uint8  j;
 uint32 adc_temp;
 for(j=0;j

火雷达 发表于 2011-12-16 09:56:41

回复:STM32F103VE AD转换跨界问题

回复第 13 楼 于2011-12-15 05:15:31发表:
PA0,听别人说,是有点问题的,不知道你是否用了这个AD口

我用的是PA0-PA4,发现问题的是PA1,之后我把四个脚连在一起测量,出的数值都有错误。

这个问题你需要确认一下,STM32官方曾今有对PA作为AD口输入有问题有个说明的,具体是什么现象我忘记了,是不是因为这个问题影响ADC测量,需要确认。

skyfulstar 发表于 2011-12-16 13:19:35

RE:STM32F103VE AD转换跨界问题

ADC通道0上的电压尖峰
问题描述
当ADC处于注入触发模式时,在某些特殊情况下,PA0引脚上会产生一个低幅度的电压脉冲尖峰信号。此脉冲信号由内部耦合器产生,并同步到注入序列的头尾,与正在使用
的哪个ADC注入通道无关。尖峰的幅度通常都小于150mV,并持续10ns(该数据是在把I/O口配置为高阻输入并且不连任何输入的情况下测得的)。如果把PA0用作数字输出,尖峰对输出信号没有任何影
响。如果PA0是作为数字输入,只要驱动PA0端口的阻抗小于5 kΩ,该尖峰信号也不会被检测成一个错误的跳变。尖峰信号对A端口的其余引脚没有影响,在单ADC配置时,
对ADC的转换注入结果也没有任何影响。当使用双ADC,并且ADC处于注入触发模式时,为了避免任何副作用,建议合理配置模拟通道,把通道0配置成注入通道。

qfw66 发表于 2013-2-18 09:12:56

回复:STM32F103VE AD转换跨界问题

请问现在解决了吗,我也遇到相同的问题。
页: 1 [2]
查看完整版本: STM32F103VE AD转换跨界问题