详究2812 的内置ADC
2016-01-12 来源:eefocus
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。在这种情况下,为了避免重写数据,必须确保在下一个转换序列开始前,读取结果寄存器。
- STM32C0开发(1)----SPI 驱动WS2812灯珠
- STM32F103C8T6驱动WS2812b灯条
- STM32F103C8T6使用SPI接口驱动WS2812b灯条
- 如何用安信可Ai-M61系列控制WS2812实现小夜灯?
- 使用STM32CubeMx驱动WS2812B实现幻彩灯
- 基于PC104嵌入式微机和TMS320F2812实现机器人人机界面的设计
- [单片机框架] [onewire] 利用单线协议来点亮WS2812X 模拟IO 兼容带OS
- [单片机框架] [app_led] [WS2812x] 利用软定时器实现WS2812x闪烁和呼吸等灯光模式
- WS2812灯珠(二)-- STM32 SPI+DMA方式驱动
- WS2812灯珠(一)-- STM32 普通IO方式驱动