2812 --- 内置ADC

 

AD的简单知识


  AD,就是将模拟量转变为数字量的过程,一般分为取样、保持、量化、编码这4步。
 
  由于模拟信号在时间上连续的,而数字信号在时间上离散的,所以转换时首先必须按 数字信号的节拍,对被转换的模拟信号采取样品。取样(Sample)的原理如图示。

开关受取样脉冲信号S(t)控制,S(t)=0时,开关断开,取样输出V1(t)=0;S(t)=1时,开关导通,V1(t)=V(t)。这样就把连续的模拟信号V(t)变成了一个个脉冲信号。
 
  采样定理:取样信号S(t)的频率fs大于或等于模拟信号f(t)的最高频率Fmax(其频带的上限频率)的2倍,则输入信号V(t)的主要特征都能够被保留下来,将来可以通过滤波处理,从V1(t)中恢复原来的信号V(t)。

 

  AD的采样频率和转换时间。

  AD的采样频率取决于启动AD的速度,启动AD转换的方法有很多,例如软件直接启动,或者利用EV的一些事件来启动,启动的频率才是AD采样的频率,例如每隔1ms启动1次,则AD采用频率为1K。而AD时钟和AD的转换时间有关,和AD采样频率是无关的。

 

2812内部ADC的特点

2812的ADC模块是一个12位分辨率的、具有流水线结构的模数转换器,具有16个通道。对于每个序列发生器,一旦转换结束,已选择采样的通道值就会被保存到各个通道的结果寄存器中去。总共有16个结果寄存器Result Reg0—Result Reg15,用于分别保存16个通道的转换结果。

                                         2812 ADC的功能

  1. 12位的ADC内核,内置2个采样保持器(S/H-A,S/H-B)。

  2. 采样模式可以为顺序采样(Sequential Sampling)或者是同步采样(Simultaneous Sampling)

  3. 模拟输入范围为0—3V(需要注意,输入不可超过3V,否则烧坏2812)一般输入最大值在3V的70%左右,为防止万一,一般先将要采样的信号经过运放处理(基准电压源偏置),

使输入电压范围在AD正常工作采样范围之内,在信号进DSP的AD口时,最好加一嵌位二极管。


  4. 快速转换时间运行在25MHZ,ADC时钟或者12.5MSPS(每秒完成12.5个百万次的采样。)

  5. 总共为16路输入通道,可编程多路选择输入。16路采样输入通道被分成了两组,每组8个,分别是ADCINA0……ADCINA7和ADCINB0……ADCINB7。

   A组对应于采样保持器S/H-A,B组对应于采样保持器S/H-B。

  6. 自动序列化,在单一事件段最大能够提供16个自动A/D转换。

  7. 序列发生器可以按两个独立的8状态序列发生器(SEQ1和SEQ2)来运行,也可以按一个16状态的序列发生器(SEQ)来运行。

  8. 共有16个转换结果寄存器来保存转换数值

  

 式中: ADCLO为AD转换的参考电平,在实际使用的过程中,通常将其与GND连接,因此此时ADCLO的值为0。
       4095=2^12-1,对应于满量程输入为3V时的转换结果

  9. 有多种触发方式来启动AD转换(SOC=start of conversion),包括:软件直接启动S/W,EVA的事件源,EVB的事件源和外部引脚启动。

 


  10. 序列发生器可以运行在启动/停止模式。

11. 采样-保持的采集时间窗口可以预先设定。(ADCTRL1的位ACQ_PS3—ACQ_PS0决定了采集窗口的大小,这一位控制了SOC脉冲的宽度,也就是一开始开关S(t)的导通时间。
   SOC脉冲的宽度是(ACQ_PS+1)*ADCLK。)

 

 

                                        ADC时钟

 

 

 Example. Clock Chain to the ADC

 

 

 

                   ADC工作模式

 

 顺序采样、同步采样 (AdcRegs.ADCTRL1.bit.SEQ_CASC位控制) --- 采样方式
 双序列发生器模式、级联模式(AdcRegs.ADCTRL3.bit.SMODE_SEL位控制)--- 序列放生器的模式

 也就是说在双序列发生器模式下可以采用顺序采样和同步采样,在级联模式下我们依然可以采用顺序采样和同步采样两种方式

 

 序列发生器的连续自动序列化模式和启动/停止模式

  一个序列的转换数是由MAXCONVn进行控制的,在启动一个转换序列进行转换时,AD模块将MAXCONVn的值装载进自动序列状态寄存器ADCASEQSR的序列计数器状态位SEQCNTR。
  当序列发生器从状态CONV00开始并顺序进行(CONV01,CONV02。。。。)时,SEQCNTR位从装入值开始递减,直到为0,结束一个序列的转换,完成转换数为(MAXCONVn+1)。 
  当ADCTRL1的CONT RUN位设为0时,AD的序列发生器运行在启动/停止模式,也就是说这种模式下,序列发生器在完成1个序列的转换之后将停止工作,在下一次转换启动开始之前,必须复位序列发生器,将转换器置为CONV00。

 复位的方法如下:

 AdcRegs.ADCTRL2.bit.RST_SEQ1=1;     //立即复位序列发生器为CONV00
 AdcRegs.ADCTRL2.bit.RST_SEQ2=1;     //立即复位序列发生器为CONV08

  当AD的控制寄存器1的CONT RUN位设为1时,AD的序列发生器运行在连续自动序列化模式,当序列转换结束时,转换序列自动重复开始,SOC触发时自动将MAXCONVn装入SEQCNTR,SEQ的状态变为CONV00。在这种情况下,为了避免重写数据,必须确保在下一个转换序列开始前,读取结果寄存器。


 

http://blog.21ic.com/user1/6012/archives/2010/66689.html

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值