打印

Δ-ΣADC模块 --操作模式

[复制链接]
774|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
engao|  楼主 | 2016-3-30 10:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
设置者可以配置ADC,使其工作在下面的四种模式
之一:
单采样;
快速滤波器;
连续/快速平均。
       通过往控制寄存器写启动位或者发送开始转换信号(Start Of Conversion,SOC),来启动ADC转换器。
        当转换结束后,设置一个状态位,并且转换结束信号(End of Conversion, EOC)为高电平,这个信号一直保持到CPU或DMA读取转换值为止。
沙发
engao|  楼主 | 2016-3-30 10:04 | 只看该作者
单采样
       在触发器作用下,执行单次采样。在这种模式下,ADC在待机模式下等待SOC信号有效。当SOC有效,ADC执行一次采样转换,并捕获结果。为了检测EOC,系统可以轮询一个控制寄存器或者配置外部的EOC信号来产生一个中断或者调用DMA请求。
        当传输完成后,ADC进入待机状态。直到下一个SOC事件。

使用特权

评论回复
板凳
ah9b87| | 2016-3-30 10:07 | 只看该作者
连续采样
       在连续模式下,通道复位,然后连续运行直到停止。当输入信号不需要切换,并且需要多个采样值时,就可以采用这种模式。

使用特权

评论回复
地板
ah9b87| | 2016-3-30 10:08 | 只看该作者
快速滤波器
      快速滤波器模式连续的捕获数据,在每个采样间,通道复位。一个采样结束,另一个采样立即开始,使用轮询,中断或DMA来传输结果。当输入在多个通道间进行切换,并且在每个采样间需要一个滤波器进行复位时,就可以采用这种模式。

使用特权

评论回复
5
ah9b87| | 2016-3-30 10:11 | 只看该作者
快速FIR(平均)
        这种模式和快速滤波器类似,但在两个转换间不复位调制器。当要求抽取率因子大于128时,可以使用。这种模式使用后续的处理器sinc1滤波器执行额外的抽取,以得到大于16位的分辨率。

使用特权

评论回复
6
ah9b87| | 2016-3-30 10:12 | 只看该作者
SOC信号用于启动ADC。一个数字时钟或者UDB的输出能用于驱动这个输入信号。此外,采样周期必须大于转换周期。在系统中,如果需要ADC和其他硬件同步,则需要使用SOC信号。这个信号是可选的,如果ADC运行在连续模式下,则不需要这个信号。

使用特权

评论回复
7
ah9b87| | 2016-3-30 10:13 | 只看该作者
当每次转换完后,EOC信号为高。这个信号可用于触发一个中断或者DMA请求。

使用特权

评论回复
8
bboo| | 2016-3-30 10:22 | 只看该作者
       Δ-Σ ADC的分辨率限制在8-20位。分辨率越高,采样率越低。当修改分辨率时,时钟会相应的改变来保证一个合理的采样率

使用特权

评论回复
9
bboo| | 2016-3-30 10:23 | 只看该作者
Δ-Σ ADC有固有的不稳定性,导致其在操作范围的上限和下限会产生非线性。为了避免产生这种现象,输入在调制器的前端被衰减10%。后端处理器使用1.11倍的增益来补偿这种衰减。最终的结果比要求的范围扩大了10%。比如:
如果选择输入范围±1.024V,实际的输入范围是±1.126V。有用的输入保持在±1.024V,但是除非输入超过±1.126V ,否则ADC不会饱和。

使用特权

评论回复
10
zhiyy| | 2016-3-30 10:24 | 只看该作者
从ADC的数字数出也会超过范围10%,如果ADC配置为10位操作,通常一个10位的差分的ADC输出范围-512到
511,对应-1.024到+1.022。
由于这个额外的10%的范围,数字输出直到计数±563前不会饱和(而不是-512到511)。

使用特权

评论回复
11
zhiyy| | 2016-3-30 10:26 | 只看该作者
除非分辨率设为8位或16位时,一般不需要关心的问题。当分辨率设置为8位时,必须要注意不能使计数值从其最大的正值/负值卷回到所对应的一个负值或者负值。防止产生这个问题使用API函数,使得返回一个比设定分
辨率大的一个值。

使用特权

评论回复
12
dianz| | 2016-3-30 10:26 | 只看该作者
分辨率设为16位,其最大的正值和负值会超过32767~-32768的范围,所以使用ADC_GetResult32()函数,而不是使用ADC_GetResult16()函数。

使用特权

评论回复
13
dianz| | 2016-3-30 10:27 | 只看该作者
对分辨率为8时,其最大的正值和负值会超过127~-128,所以使用ADC_GetResult16()函数。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

400

帖子

0

粉丝