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

2014-1-16 06:29 1537 16 16 分类: MCU/ 嵌入式 文集: PIC24HJ单片机自学笔记
怎样停止一次采样和开启转换
  • 触发源将终止采样同时开启一个转换,触发源在SSRC中选择。
  • 如果SSRC为000,则软件停止采样,此时清SAMP则开始转换,
  • 也可以设置一个软件自动采样和清零SAMP来开始转换
  • 锁住转换触发源,如果设置为SSRC=111,则触发源为AD时钟控制,这个时候可以设置成最快的转换速度。
  • 事件触发转换,有两个事件可以触发,一个是外部中断触发,一个是GP定时器比较触发。
    • 当设置成SSRC=001时,INT0作为触发源
    • 如果设置成SSRC=010,一个32位的定时器匹配后将触犯,详情可以看定时器的说明。
    • 内部或者外部时间的同步操作。
    • 部分同时采样和分开采样的波形图,可以查看手册中的介绍。
控制采样转换的操作
应用软件可以设置SAMP和DONE来控制AD操作,同时,转换结束后,产生一个中断。如果需要,应用软件也可以放弃AD的操作。

监视采样转换的状态
SAMP和DONE监视采样和转换的状态,当SAMP为0,指示采样完成,DONE自动设置为1,指示转换结束。如果SAMP和DONE都为0,ADC为非激活状态,在一些操作模式中,SAMP也可以来引发和终止采样。

产生AD中断
SMPI可以设置中断产生的周期,才N此采样转换周期后触发一次中断,中断的产生是按照采样的次数,而不是转换的次数。
这里有需要注意的是,如果通道扫描使能,则SMPI值必须比扫描的通道小1,如果是交替采样使能,SMPI必须设置为1.
如果DMA使能,SMPI必须清零,通道扫描和交替采样除外。具体的设置需要,在转换结果缓冲的内容有介绍。
如果SIMSAM定义为分开采样,不管通道数量,ADC采样一次,转换一次,保存一次。DMAXCNT正好反映了采样和转换的次数。
如果SIMSAM设置为同时采样,每次采样的通道数,才是最终写入到缓冲的结果,这个时候要注意DMAXCNT要设置成所需要的缓冲数,SMPI此时不能关掉中断,需要在ADXIE才能关掉中断。

放弃一次采样
在手动采样模式下设置SAMP会终止一次采样,如果设置成SSRC=000,则同时开始一次转换。在自动采样模式下,清SAMP不能终止一次采样转换周期,但是在后面的转换不会自动重启。

放弃一次转换
在转换的时候清ADON放弃一次当前的转换,ADC的结果寄存器将不会更新,ADC1BUF0保持上次转换的结果。

转换结果缓冲说明
ADC模块包括一个单字,只读,双端寄存器ADCXBUF0用来保存转换结果。如果在触发一次中断前,有多个数据要保存,则需要用到DMA数据接收器。当ADC中断标志设置为1时候采用一次DMA的传输。如果不使用DMA,则每次转换的结果都需要被应用程序读走。
ADDMABM为DMA缓存建立模式位,定义如下:
20140116062418242.jpg
如果为0:这种模式是一个先收集起来,然后分发到一个用户定义的缓冲区,每个通道需要多大的一个区间,在下面定义:
20140116062434170.jpg
这种模式下的DMA BUFFER如下:
另外一种模式,无需开辟一些无用的空间,采样数据按照这种结构保存:
20140116062514523.jpg
转换序列的图例:
单通道多次采样的例子:图中,AN0单通道采样16次,数据保存到DMA缓存,16次采样完成后产生一次中断,然后继续重复。CHPS定义只有CH0有效,ALTS为0,MUX A 有效,CH0SA位和CH0NA连接AN0和VREF-,其他的输入未使用:
20140116062531134.jpg
控制位的配置如下:
20140116062604272.jpg20140116062638268.jpg
20140116062655430.jpg

下面的例子和图示可以在手册中找到配置的顺序,在实际使用的时候需要详细了解。
  • 16通道扫描采样转换保存
  • 三个通道频繁采样,4个通道扫描采样。这种情况下,需要频繁采样的放在CH123三个通道,需要扫描采样的放在CH0,这样,四个通道同时采样,如下:
20140116062711244.jpg
  • MUX A和MUX B交替采样
  • 使用同时采样功能采样8通道
  • 采样分开采样的功能采样8通道

AD采样的要求
下面以10位模式为例,如下图
20140116062729614.jpg
图中,采样的总时间是内部的运放设置时间和保持电容充电的时间。在实际使用的过程中,充电电容必须充电到外部引脚的电压值,外部导线的阻抗RS,内部导线的电阻,开关的阻抗,都会影响到电容的充电速度,也就是说,采样时间必须能够充满内部的保持电容,这种情况下,RS必须小于200欧姆,并且,采样功能必须优先于转换开启,同时内部电容的放电必须优先于采样的操作。

读ADC结果缓冲的值
结果有两种字符格式,在FORM中设置,以10位为例,数据格式如下:
20140116062915628.jpg
20140116062743206.jpg
10位的RAM,还有6位填0,或者有符号的格式里面,填D09

传递函数
模拟到数字的传递函数很简单可以得到,如10 0000 000码对应的就是2048*(VREFH-VREFL)/4096。

精度和误差:详看相关应用文档

建议:
ESD:内部有两个二极管,如果采样的电压太高,二极管正向偏置将损坏引脚。
滤波:滤波必须保证电阻对采样时间的需求,以及不能有漏电流。

例程:手册中还有介绍DMA和普通中断来操作ADC的例程。

操作在睡眠和闲置模式下:
没有利用RC作为时钟源时:ADC关断,如果在转换时候进入睡眠模式,转换丢失直到启用内部RC,寄存器的值在进入睡眠模式后,保持不变。
采用RC时钟源:睡眠模式后采用RC作为时钟源,将不会产生数字噪声。
闲置模式同其他的外设模块。

复位的影响:
复位将清空所有的寄存器,同时会丢掉在转换的数据。带模拟输入功能的引脚配置为模拟输入,TRIS设置为1.缓冲中的值也没有被初始化。

相关文档:
ADC可以用于模拟量的显示以及电机控制上,具体请参考官网文件,加深对ADC的理解:
20140116062811499.jpg





















PARTNER CONTENT

文章评论0条评论)

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