如何解决GD32F103在重新上电AD采样时偶尔有6个码的跳动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决GD32F103在重新上电AD采样时偶尔有6个码的跳动相关的知识,希望对你有一定的参考价值。

参考技术A 属于数据异常抖动问题,可以增加对基准电压的采样。
具体解决步骤如下:
1、增加采样保持时间。
2、在电压信号相差较大的信道中间,增加对基准电压的采样,使信号处于平均值,在切换通道时不会因为充放电不及时导致数据错误。

温故《单片机基础》之——AD转换

重新翻开这本书,还是有收获的,这里记录点ADC的知识点,虽然书上有些知识点跟不上时代的发展,但是基本上,还算比较系统的,也不是很过时,零几年的技术,数字电路的基本原理是没变过。这里结合自己的项目实际和书上的知识点整理一下。

1、ADC的采样过程,这个四步骤基本上,没变过,采样、保持、量化、编码,而且在∑△还有一个数字滤波器的。

2、在采样的前端,通常需要有传感器、放大器,传感器有温度传感器、光电传感器、湿度传感器、流量传感器、压力传感器、机械量传感器pH传感器等,目前我接触过温度传感器、光电传感器、流量传感器、压力传感器,还有气体传感器,这个主要用于报警的。在大学里,传感器其实是单独一门课的。

3、放大器对于硬件设计来说,是很熟悉了,尤其是运算放大器,具有输入阻抗高、增益大,可靠性高,同时,随着技术的发展,很多运放已经有了其他高精度等优点,为嵌入式的开发提供了更加先进的产品。

4、还有一个参数叫“建立时间”,这个其实和采样时间有点类似,我的理解是,一个电平从外部传输到采样电路需要时间的,尤其是电平变化过程中,cpu是需要等待这个时间的。

建立时间的定义

  建立时间是指从理想的瞬时步进应用输入到闭环放大器的输出达到并保持在一个规定的对称性误差范围的时间。建立时间包括一个非常短暂的传播延迟时间,以及将输出转换至最终值近似值所需的时间,然后结合转换从过载条件下恢复,最后稳定在规定误差范围内。对于高精度ADC来说,规定的误差范围通常为一个最低位(LSB)ADC的四分之一。

5、转换时间,这个很好理解,是ADC自己的转换过程, 不同类型的ADC转换时间是有区别的。通常并行ADC最快,逐次逼近型和流水行次之,∑-Δ型ADC最慢。这个是ADC的内部转换原理是有很大关系的。

逐次逼近型、积分型、压频变换型等,主要应用于中速或较低速、中等精度的数据采集和智能仪器中。

分级型和流水线型ADC主要应用于高速情况下的瞬态信号处理、快速波形存储与记录、高速数据采集、视频信号量化及高速数字通讯技术等领域。

此外,采用脉动型和折叠型等结构的高速ADC,可应用于广播卫星中的基带解调等方面。

∑-Δ型ADC主应用于高精度数据采集特别是数字音响系统、多媒体、地震勘探仪器、声纳等电子测量领域。

还有一种 闪烁型 adc,转换速度也很快。但是工号比较大,电路也很复杂,芯片尺寸也就很大了。

可以参考这个文章:https://blog.csdn.net/whereismatrix/article/details/81814431

6、输入电压信号形式
分为三种;

1、单级电压,正能测试正电压,这个也是比较好理解的,比如0v到+10v,不多解释,
2、双极电压,可以测试正负对称电压,比如-10v到+10v,
3、差分电压,这个是差分信号的意思,只要vin-接地,可以达到单级电压的效果,同样可以测试正负电压,所以,目前很多芯片否是这个标准配置。

7、输出二进制代码形式,

有两种,一种是二进制的补码形式,另一种是BCD码,前一种比较主流的。

8、分辨率

也就是ADC的采样位数,8、10、12、14、16、20、24等,高精度的六位半数字万用表就是用24位的。这个可以参考《活学活用ADC芯片》这本书籍。很多不同类型的ADC的有其适应的分辨率。目前24位通常采用∑-Δ型ADC,而且转换时间比较长。

9、AD转换的控制信号

古老的ADC芯片很多都是并行的,这里由于没怎么用过,所以不展开。

9.1、时钟信号,很多古老的芯片,需要外部提供,而新式ADC基本上内置了,这给设计带来了方便。

9.2、启动转换芯片,这个有的使用电平来触发,有的是用命令来触发,新式的ADC都是用SPI命令来启动ADC转换的。

9.3、转换结束,芯片转换结束后,都要提示cpu可以读取了,1、使用特定引脚(这个引脚用可能和其他引脚共用)的方式来告知可以读取了,比如,低电平意味着转换结束,可以读取,2、使用每个寄存器的位来告知可以读取。

软件上,也有不同的读取策略。

a、使用中断的方式,如果是特定引脚有一个脉冲形式的,就可以使用,通常这种是一个通道的情况下比较常见。有中断,就读取ADC值

b、使用查询的方式,这个方式通常用于多路ADC转换的方式,因为,多路转换需要等待某一路信号已经平稳才行,因此,通常是先切换模拟开关,再开启转换,最后读取ADC的数值,因此,不能使用中断的方式。

当然最好是ADC转换速度快点的,10ms以内比较合理,这样,cpu可以等待的时间比较短。有的ADC芯片还有这个特点,就是低电平了,你必须读取,否则会失去本次读取的机会,这样做的目的是报数数据的完整性,因为你晚读数据,有可能ADC却正在转换数据。

 

 

以上是关于如何解决GD32F103在重新上电AD采样时偶尔有6个码的跳动的主要内容,如果未能解决你的问题,请参考以下文章

GD32F103学习笔记——在GD32F103移植STM32F103代码

搭建一个GD32F103的环境

GD32F103学习笔记——ADC接口使用

请教STM32F103RBT6的A/D转换问题

STM32F103 ADC采样 +1.3“ IIC SH1106动态曲线描点显示示例

STM32f103 ad采集数据时,通过计算,有负值,怎么输出到液晶显示器上