原创 PIC24HJ单片机自学笔记-ADC资料整理1

2014-1-16 06:29 2674 15 15 分类: MCU/ 嵌入式 文集: PIC24HJ单片机自学笔记

PIC24HJ128GP506带有一个18通道的ADC,有些芯片带有两个ADC模块,每一个模块都有一系列的SFR.

每个模块都可以工作在10位或者12位的模式,默认的10位有如下的特点:
  • SAR:逐步逼近
  • 高达1.1M的转换速度
  • 最多32通道输入
  • 外部参考电压输入
  • 4个输入引脚连续采样
  • 自动通道扫描
  • 可选转换触发源
  • 可选的缓冲填充模式
  • 支持DMA
  • 四种数据结果
  • 在睡眠和闲置模式继续工作
ADC模块有高达32个模拟的输入引脚,此外还有两个模拟的输入引脚用于外部参考电压的链接,这两个脚能够和其他的模拟输入引脚共用,具体的模拟输入引脚的数目和外部电源的配置需要参考具体的数据手册。
模拟输入复用到四个采样保持运放,CH0~CH3,一个,两个或者四个采样保持运放用来获取输入的数据,模拟输入多路器可以在两组在转换时候的模拟输入间进行切换,单极的差分转换可以通过设置一定的输入引脚来进行操作。
CH0可以使能一个模拟输入扫描模式,在控制寄存器中可以设置 。ADC模块连接到一个单字的缓冲中,但是多个转换结果可以使用DMA缓冲来存储,从缓存读取的时候,将继续填充一个16位的转换结果。
 
12位的ADC支持上面所有的特点,除了:
  • 12位ADC支持500KSPS的速度
  • 只有一个采样保持运放是用于12位ADC的配置,同时采样多通道是不支持的。
 
 
ADC的方框图如下:
 
20140116061754348.jpg
内部带4个采样/保持放大器,同时电源也可以有两种选择,具体看下面的内容。
 
寄存器:
一共有10个控制和状态寄存器:
  1. ADXCON1:
    • AD工作状态位,闲置模式设置,DMA缓冲模式,10/12位选择,数据输出格式,采样时钟源选择,同时采样四个通道选择位,是否自动设置采样使能后立刻开始下一个采集,采样使能 ,转换完成标志位。
  2. ADXCON2:转换电压配置位,输入扫描选择位,通道选择位,缓冲填充状态位,每几个采样产生一次DMA中断选择,缓存的填充模式,交替输入采样选择
  3. ADXCON3:转换时钟来源,采样时间和转换时钟选择
  4. ADXCON4:每个通道分配的DMA空间数
  5. ADXCHS123:通道123的输入源选择
  6. ADXCHS0:通道0的输入源选择
  7. AD1CCSH:输入扫描选择位
  8. ADXCCSL:
  9. AD1PCFGH:作为模拟还是数字输入脚配置
  10. ADXPCFGL:
AD的术语以及转换顺序:
 
20140116061835573.jpg
上面是一个采样的一个顺序,模拟的电压输入通过采样/保持放大器输入,10位的ADC可以配置为4S/H,而12位的只能选择1H/S,也就是CH0,S/H通道通过模拟输入多路器连接,而这个多路器的输入由上面的寄存器来控制,有两组模拟多路器可用,在转换的时候多路器也可以切换。
采样的时间是S/H模块链接到模拟输入引脚的时间,设置使能的时候开始,直到清SAMP的时候结束,或者在一个转换触发信号的时候结束。
转换时间是S/H转换到转换电压的时间,ADC在采样时间结束后与输入引脚断开,需要两个TAD的时间以及10个bit的转换时间,一共12TAD的时间来完成一个10位的转换,转换完成以后,加载到ADCXBUF0中,此时可以重新连接输入,CPU产生一个中断。
 
ADC允许在采样和转换的这个过程中有很多的操作,如果采用单个的采样转换顺序操作的话,是比较简单的,也可以同时使用几个采样保持运放,10位模式下,可以在一个采样转换周期内,采样两个采样保持运放来完成两次转换,也可以在一次采样转换周期内完成四次采样转换周期。
 
每次转换所用的通道数可以在CHPS进行设置,一次在采样转换周期内使用多个通道可以进行同时采样或者分开采样,同时采样可以使精确的保证所有的通道同时得到一个采集,而独立采样则是每次采样一个通道,多路采样的输入是没有联系的。
 
采样的开始时间可以通过SAMP进行控制,也可以通过设置成硬件来进行控制,也就是设置成自动采样模式,在这种模式下,采样保持运放在完成一次转换后,自动的于模拟输入进行重连。
 
转换的触发源结束一次采样,并且开启一次转换,触发源可以通过SSRC进行选择,可以用硬件作为触发源,也可以设置SAMP来作为触发源,有一个触发源触发一次转换,这样的触发无需要软件来配合进行转换。
 
一个或者多个采样转换周期可以产生一个中断,SMPI里面可以设置中断周期,可以从1到16进行选择,虽然每两次中断间有最多16次采样结果,但是最后一次结果保存在ADCBUF0中,中断服务程序中只能读取一个数据。
 
如果多个结果需要保存,可以使用DMA来保存结果,这样,SMPI则用于DMA中保存多少级数据,这个级数不能超出DMA的缓存总量。
 
ADC模块的配置:
  • 选择10位还是12位
  • 选择电压参考源
  • 选择模拟转换时钟
  • 选择端口作为模拟输入
  • 输入连接到通道的模式
  • 选择多少个采样通道
  • 选择采样如何发生
  • 选择手动或者自动采样
  • 选择触发源和采样时间
  • 选择转换结果以及缓冲器
  • 选择中断和DMA
  • 选择采样多少个以后放入DMA中
  • 选择数据格式
  • 配置中断
  • 配置DMA
  • 开启ADC模块
下面的内容将降到上面的每一个步骤。
 
选择电压源:
可以选择AVDD和AVSS或者VREF+和VREF-作为电源,在引脚数少的芯片中,外部电源和AN0和AN1公用了,比如PIC24HJ128GP506,外部电源还需要参考电气参数来进行设计。
 
选择AD转换的时钟:
AD转换在10位模式选需要12个TAD,在122位模式下需要14位时钟,可以选择TCY作为时钟,也可以选择RC时钟。一共有256种时钟可以设置,公式为TAD=TCY(ADCS+1).ADC最小的TAD必须大于75ns。
还有一种模式为RC模式,用在睡眠模式下,ADC继续使用RC进行采样。
 
选择采样的模拟输入:
所有的采样/保持放大器的同相和反相端都有一个多路器来选择采样的端口,然后ADXCHS0和ADXCHS123开决定每一次采样选择哪一个输入。此外,所选的输入也可以交替采样,相同的输入也可以选择多个采样保持通道来提高精度。
 
配置为模拟的引脚:
ADFCFGH和ADFCFGL可以配置引脚为模拟输入还是数字引脚。如果清零则为输入,在复位的时候就是输入的状态。如果设置为输入,则输入缓冲关掉,降低了功耗。端口设计为模拟输入必须设置TRIS位为1,如果设置为0,则端口为输出,复位后,所有的TRIS都是设置为1的。如果端口设置为1,则为数字端口,输入到模拟多路器将连接到AVSS.
 
CHANNEL0输入选择:
0通道是4个采样保持运放中使用最灵活的通道,可以选择高达16个模拟输入作为正相输入信号,而反相信号可以选择VREF-和AN1,同过CH0SA和CH0NA来设置。
可以设置MUX A和MUX B来进行交替采样,如果设置ALTS为0,则CH0SA和CH0NA的被采样,如果设置为1,则第一个转换周期采样MUX A的内容,在接下来的周期,采样MUX B的内容。
 
用CH0扫描多个通道:
CH0可以扫描来一个输入备选向量。可以通过CSCNA来进行设置,有ADXCSSH和ADXCSSL来申明要扫描的通道,如果设置为1,则加入扫描向量,扫描的方向是从低到高。
 
CH1,2,3输入选择
CH123可以采样模拟输入的一部分,具体的输入可以查看CH123正相和反相的设置。
 
为单个输入选择多个通道
单个输入可以配置1,2,4个通道,同样CH123也可以设置成交替的模式。
 
开启模块:ADON
 
采样周期控制说明
在10位模式下,ADC模块使用四个采样保持运放和一个AD转换,每一个采样转换的周期,可以执行1.2.4次采样。
 
同步采样的使能
许多应用需要同时采样多个信号,如下是采样转换的控制操作:
 
20140116061852999.jpg
 
怎样开启一次采样:
设置SAMP为1则开启一次采样,有多种方法来停止采样和完成一次转换,采样的重启需要继续将SAMP设置为1,如下图:
 
20140116061908527.jpg
如果是有多通道同时采样,则自动进行通道的采样和转换。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
15
关闭 站长推荐上一条 /1 下一条