ADC硬件由n表示
通道由m表示
数据寄存器和虚拟通道的数量由索引“j”标识,例如,数据寄存器j为ADCFnDRj
扫描组用字母“x”表示(x = 0到4)。
A/D定时器的数量由字母“y”表示(y = 3,4)。
ADCF基址列在下表中。
ADCF寄存器地址是作为相对于单个基址的偏移量给出的。
下表列出了ADCF的时钟供应。
一般ADC时钟为40M
注:只有当CLK_LSB = 8mhz - 40mhz时,才能保证电特性。
错误中断是下列中断的逻辑和。
下表列出了ADCF复位源。ADCF通过这些复位条件进行初始化
ADCF的外部输入/输出信号如下表所示
每个ADCF有虚拟通道,如表27.44所示。为每个虚拟通道设置要进行A/D转换的模拟通道和其他伴随信息。通过对每个扫描组中的起始虚拟通道指针和结束虚拟通道指针所指示的虚拟通道依次进行处理,可以对任意顺序的任意模拟通道进行A/D转换的扫描
ADCF具有以下特性。
?先进的A/D转换器
分辨率:12位
A/D转换方法:逐次逼近法
转换速度:1.0μs
?支持五个扫描组
每个ADCF有5个扫描组。扫描设置可以独立地为每个扫描组。
?两种扫描模式
每个ADCF有两种扫描模式。
多周期扫描模式:指定扫描次数。
连续扫描模式:无限制地重复执行扫描。
?区间功能
ADCF可以通过使用扫描组3和4中配备的A/D定时器在任何周期中启动扫描组。这将启用插入间隔的扫描
?A/ d转换增值功能
ADCF对一个通道顺序执行两次或四次A/D转换,并将相加结果存储在数据寄存器中。可以为每个虚拟通道设置添加计数。
利用这一结果可以得到移动平均滤波器的效果。然而,此功能并不总是确保A/D转换精度得到提高。
?扩展的物理通道
每个ADCF可以通过使用外部模拟多路复用器扩展物理信道。(可用通道为an0006和AN1I00。)
?虚拟通道概念
虚拟通道数大于物理通道数。
每个虚拟通道可以自由分配给每个物理转换通道
?数据寄存器
提供了与虚拟通道相对应的数据寄存器
?为每个扫描组启动触发器
硬件触发器和软件触发器可以启动每个扫描组的处理。只有扫描组3和4可以通过A/D定时器触发开始处理
?异步/同步挂起和恢复功能
对扫描组的处理可以中断正在进行的对另一个扫描组的处理。优先事项如下:
SG0 < SG1 < SG2 < SG3 < SG4 (SG: Scan group)
SG4优先级最高
如果一个高优先级SG的请求正在处理中,而一个低优先级SG正在处理中,那么在正在进行的虚拟通道处理停止后,低优先级SG将挂起(同步挂起)或在正在进行的虚拟通道处理后立即停止(异步挂起),然后执行高优先级SG的处理。高优先级SG处理完毕后,低优先级SG暂停的虚拟通道处理恢复
也可以设置为:当高优先级SG中断SG0处理时,发生异步挂起;当高优先级SG中断非SG0的低优先级SG时,发生同步挂起。
?支持扫描结束中断和DMA传输
每个扫描组可以产生一个中断请求到INTC,并激活DMAC,每次处理由虚拟通道指针结束或虚拟通道结束所指示的虚拟通道。
?模拟转换电压可设置
A0VREFH引脚和A1VREFH引脚可用于设置模拟转换的电压范围。
?丰富的安全功能
ADCF具有丰富的安全功能,包括A/D转换电路诊断功能、引脚级诊断功能、断线检测、模拟选择正常检查、数据寄存器上限/下限检查、数据寄存器奇偶校验、数据寄存器覆盖检查、数据寄存器读取和清除功能
每个物理通道m是指一个外部A/D转换器输入ANnIm。
从应用软件的角度来看,虚拟通道就是A/D转换器通道。
虚拟通道数j大于物理通道数m。
每个虚拟通道j可以通过其虚拟通道寄存器ADCFnVCRj的GCTRL[4:0]位分配给每个物理通道
任意数量的连续虚拟通道可以组合为五个扫描组之一SGx, x = 0到4。
参数定义扫描组的虚拟通道集
?扫描组x启动虚拟通道指针ADCFnSGVCSPx.VCSP[5:0]
?扫描组x结束虚拟通道指针ADCFnSGVCEPx.VCEP[5:0]
虚拟通道的转换结果存储在ADCFnDRj寄存器中。
每个32位ADCFnDRj寄存器存储两个连续的虚拟通道j和(j+1)的结果。
转换结果也存储在数据补充信息寄存器ADCFnDIRj (j = 0 ~ 35)中。这个寄存器包含一些关于转换的附加信息。
?扫描组x虚拟通道:j = 4 ~ 9
?虚拟到物理通道分配:
在扫描组x的转换开始触发后,第一个虚拟通道ADCFnVCR4,即分配的物理通道ANnI01进行转换,并将结果存储在ADCFnDR4.DR4[15:0]中。
下一个转换结果为ADCFnDR4.DR5[15:0]。
内部扫描指针是递增的,并移动到下一个虚拟通道。
ADCF0ADSYNSTCR是一个8位的只写寄存器,控制ADCF0和ADCF1的每个扫描组同时开始A/D转换。寄存器位总是读为0。
ADSTART:启动ADCF0和ADCF1扫描组的A/D转换。
ADCFn SGx启动条件:
对于ADCFn的SGx,当SGACT为0,ADSTARTE为1时,将1写入ADSTART
对于ADSTARTE已设置为1的扫描组(ADCF0和ADCF1),同时开始A/D转换。
ADCF0ADTSYNSTCR是一个8位的只写寄存器,控制ADCF0和ADCF1的每个A/D定时器计数操作的同时开始。寄存器位总是读为0。
ADTSTART:启动ADCF0和ADCF1的A/D计时器的计数操作。
ADCFn的SGx启动条件:
对于ADCFn的A/D定时器x,当ADTACT为0并且ADTSTARTE为1时,1被写入ADTSTART。
对于ADTST已设置为1的(ADCF0和ADCF1的)A/D计时器,同时启动计数操作。
注:x=3,4
ADCFnVCRj是一个32位可读/可写寄存器,用于每个虚拟通道
PUE, PDE:Pull-Up/Down resistor
00:关闭上拉电阻和下拉电阻
01:使能下拉电阻。电阻在采样时间内使能。
10:使能上拉电阻。电阻在采样时间内使能。
11:禁止设置。
CNVCLS[2:0]:转换类型
0H:正常A/D转换
3 h:诊断
4H:加法模式的普通A/D转换
5H:与MPX的正常A/D转换
6H:带加法模式MPX的普通A/D转换
除上述情况外:禁止设置
ADIE:使能虚拟通道结束中断
0: SGx中虚拟通道j的虚拟通道末端不输出ADInx
1: ADInx是SGx中虚拟通道j的虚拟通道端输出
ADCFnSGCRx中的ADIE与ADCFnVCRj中的ADIE是独立的。
GCTRL[4:0]:一般控制
将GCTRL[4:0]中不使用的位写为0。
CNVCLS[2:0]=0时,GCTRL[4:0]表示对应的物理通道
CNVCLS[2:0]=3时,GCTRL[4:0]表示诊断电压
CNVCLS[2:0]=4时,GCTRL[4:0]表示对应的物理通道,ADDNT指定的计数适用于添加的数量
CNVCLS[2:0]=5时,GCTRL[4:0]表示设置MPX通道。
指定要传输到外部模拟多路复用器的MPX值。
中断请求(INTADCFnMPX)或DMA请求由GCTRL[4:0]输出,在虚拟通道开始时转移到ADCFnMPXCURR。
在DMAC中断或启动后,通过将ADCFnMPXCURR传输到I/O端口的PyDR或PyMDR,可以将MPX值传输到外部模拟多路复用器。
CNVCLS[2:0]=6时,GCTRL[4:0]表示设置MPX通道。ADDNT指定的计数适用于添加的数量
该寄存器为32位只读寄存器,用于存储对应的A/D转换结果
转换结果ADCFnVCR (j + 1)存储在高16位,ADCFnVCRj的转换结果存储在低16位。
ADCFnDRj格式取决于ADCFnADCR2的DFMT设置和ADDNT设置(when CNVCLS[2:0] = 4H, 6H).
当读取ADCFnDRj或ADCFnDIRj且RDCLRE为1时,将ADCFnDRj清除为0000H。
DFMT=0时表示小数,符号位S一直为0
DFMT=1时表示整数,符号位S一直为0
当CNVCLS[2:0] = 4H, 6H时,ADDNT中的格式设置有效。
如果CNVCLS[2:0]不是4H, 6H,格式为“convert once”。
ADCFnDIRj是一个32位只读寄存器,用于存储ADCFnDRj的补充信息和A/D转换值。为每个虚拟信道提供ADCFnDIRj。当读取ADCFnDRj或ADCFnDIRj而RDCLRE设置为1时,ADCFnDIRj被清除为0000 0000H。无论RDCLRE设置如何,当读取ADCFnDRj或ADCFnDIRj时,WFLG被清除。此寄存器必须始终作为32位数据读取。ADCFnDRj是从16个低位中读取的
WFLG:写标志
1:设置条件
A/D转换值存储在ADCFnDRj中
0:清除条件
读取ADCFnDRj或ADCFnDIRj。
PRTY:奇偶校验
ADCFnDRj的奇偶校验位(偶校验)。
ID[4:0]:包含转换通道的物理通道信息。
ADCFnADHALTR是一个8位的只写寄存器,用于停止ADC。寄存器位总是读为0。
HALT:所有扫描组和AD定时器停止并初始化,ADC变为空闲状态,写1进入halt状态
ADCFnADCR1是一个用于ADC公共控制的8位可读/可写寄存器。
SUSMTD [1:0]:暂停的方法
当高优先级扫描组中断低优先级扫描组时,这些位选择挂起方法
同步挂起:如果高优先级SG的请求存在,而低优先级SG正在处理,则在正在进行的虚拟通道处理完成后,暂停低优先级SG的处理,然后执行高优先级SG的处理。高优先级SG处理完毕后,恢复低优先级SG暂停的虚拟通道处理。
异步挂起:如果在处理较低优先级的SG时存在来自较高优先级SG的请求,则正在进行的虚拟信道处理将立即挂起,然后执行针对较高优先级的SG的处理。在完成针对较高优先级SG的处理之后,恢复针对较低优先级SG的暂停的虚拟信道处理。
0H:同步挂起
1H:当高优先级SG中断SG0时,异步挂起
当高优先级SG中断低优先级SG(SG0)除外时,同步挂起
2H:异步挂起
3H:禁止设置
ADCFnMPXCURCR是一个控制ADCFnMPXCURR格式的寄存器
MSKCFMT0:MSKC格式规范
ADCFnMPXCURR的MSKC[3:0]格式
0: MSKC[3:0] = 0000
1: MSKC[3:0] = 1111
ADCFnMPXCURR是一个32位只读寄存器,用于存储外部模拟多路复用器的MPX值。
MSKC[3:0]:根据上面的MSKCFMT0配置
MPXCUR[3:0]:当前MPX值
当ADCFnVCRj中CNVCLS[2:0]设置为5H或6H的虚拟通道启动时,ADCFnVCRj中的GCTRL[3:0]被转换为MPXCUR[3:0]
ADCFnMPXOWR是一个寄存器,它指定要插入外部模拟多路复用器的等待时间。
MPXOW:MPX可选等待
这些位指定在ADCFnVCRj中CNVCLS[2:0]为5H或6H的虚拟通道启动后,在A/D转换开始之前插入的等待时间。
ADCFnADCR2是一个用于ADCF公共控制的8位可读/可写寄存器。
DFMT:数据格式
0: Signed定点格式
1:表示有符号整数格式
ADDNT:添加计数选择
0:加两次
1:加4次
该寄存器仅在CNVCLS[2:0]为4H, 6H时有效。
ADCFnADENDP0是一个8位的可读/可写寄存器,它选择一个虚拟通道输出A/D转换时序到ADENDn
ENDP[5:0]:A/D转换监视器虚拟通道指针
当由ADCFnADENDP0选择的虚拟通道启动时,高电平从ADEND引脚输出。当ADCFnADENDP0选择的虚拟通道结束时,输出低电平
ADCFnSFTCR是一个用于安全控制的8位可读/可写寄存器。
RDCLRE:读取和清除使能
0:未通过读取ADCFnDRj或ADCFnDIRj,清除ADCFnDRj和ADCFnDIRj
1:通过读取ADCFnDRj或ADCFnDIRj,清除ADCFnDRj和ADCFnDIRj
ULEIE:上限/下限错误中断使能
0:禁用
1:启用
OWEIE:Overwrite错误中断使能
0:禁用
1:启用
PEIE:奇偶校验错误中断启用
0:禁用
1:启用
IDEIE:ID错误中断使能
0:禁用
1:启用
ADCFnTDCR是一个控制引脚电平诊断的8位可读/可写寄存器。
TDE:引脚电平诊断使能
0:关闭引脚电平诊断。
1:使能引脚电平诊断。
当TDE设置为1时,所有模拟引脚与输入缓冲区断开连接。
当TDE设置为0时,所有模拟引脚都连接到输入缓冲区。
当TDE设为1时,电压固定在TDLV[1:0]规定的电平上。
在这种状态下执行A/D转换并检查A/D转换值可以诊断从模拟引脚到ADCF的路径
TDLV[1:0]:引脚电平诊断
0H:偶数物理通道组向AnVSS放电,奇数物理通道组向AnVCC充电。
1H:偶数物理通道组向AnVCC充电,奇数物理通道组向AnVSS放电。
2H:偶数物理通道组向AnVSS放电,奇数物理通道组向1/2*AnVCC充电。
3H:偶数物理通道组充电到1/2*AnVCC,奇数物理通道组放电到AnVSS。
ADCFnULLMTBR0-2为32位可读/可写寄存器,用于设置A/D转换值的上下限。通过ADCFnLLMSRx中的ULS[1:0]指定ADCFnULLMBR0到2中的任何一个
ULMTB[15:0]:上限表
这些位指定A/D转换值的上限值。当满足以下条件时,设置ULE(上限/下限错误)。
ULMTB[15:0] < A/D转换值
无论ADCFnDRj的格式如何,ULMTB[15:0]格式都是带签名的定点格式。如果ADCFnDRj格式选择有符号整数格式,则将ADCFnDRj格式替换为有符号定点格式,然后比较值。注意,ULMTB[15]和ULMTB[0]总是固定为0。
LLMTB[15:0]:下限表
这些位指定A/D转换值的下限。当满足以下条件时,设置ULE(上限/下限错误)。
LLMTB[15:0] > A/D转换值
LLMTB[15:0]格式是带签名的定点格式,与ADCFnDRj格式无关。如果ADCFnDRj格式选择有符号整数格式,则将ADCFnDRj格式替换为有符号定点格式,然后比较值。注意LLMTB[15]和LLMTB[0]总是固定为0。
ADCFnECR是一个控制错误清除的8位只写寄存器。寄存器位总是读为0.
ULEC:上限/下限错误清除,写1清除
OWEC:Overwrite错误清除,写1清除
PEC:奇偶校验错误清除,写1清除
IDEC:ID错误清除,写1清除
ADCFnULER是一个8位只读寄存器,表示上限/下限错误
ULE:超上限或超下限
ULECAP[5:0]:上限/下限错误捕获
捕获发生上限/下限错误时的虚拟通道。
ADCFnOWER是一个8位的只读寄存器,表示覆盖错误
OWE:Overwrite错误标志
OWECAP[5:0]:错误时对应的虚拟通道
ADCFnPER是一个表示奇偶校验错误的8位只读寄存器。
PE:校验错误
PECAP[5:0]:校验错误时对应的虚拟通道
ADCFnIDER是一个8位的只读寄存器,表示ID错误。
IDE:ID错误标志
IDECAP[5:0]:ID错误时对应的虚拟通道
ADCFnSGSTCRx是一个8位的只写寄存器,控制扫描组x的开始。寄存器位总是读取为0。
启动扫描组x的条件:当SGACT = 0时,将值1写入SGST
ADCFnADTSTCRy是一个8位的只写寄存器,控制AD定时器y的开始。寄存器位总是读取为0。
启动A/D定时器y的条件:当ADTACT = 0时,将值1写入ADTST
ADCFnADTENDCRy是一个8位的只写寄存器,控制AD定时器y的结束。寄存器位总是读取为0。
完成A/D定时器y的条件:当ADTACT = 1时,将值1写入ADTEND
ADCFnSGCRx是一个控制扫描组x的8位可读/可写寄存器。
ADSTARTE:扫描组同步启动启用
0:禁用ADSTART。
1:使能ADSTART。
SCANMD:扫描模式
0:表示多周期扫描模式
1:连续扫描模式
在多周期扫描模式下,扫描可以按照ADCFnSGMCYCRx指定的次数重复进行
在连续扫描模式下,重复扫描没有次数限制。
ADIE:扫描结束中断启用
0:扫描SGx结束时不输出ADInx。
1:在扫描SGx结束时输出ADInx。
TRGMD[0]:触发模式
0H:关闭SGx的触发输入。
1H:选择SGx_TRG硬件触发器作为SGx的触发器输入。
当x=3,4时
ADTSTARTE:AD定时器同步启动使能
0:禁用ADSTART。
1:使能ADSTART
TRGMD[1:0]:触发模式
0H:关闭SGx的触发输入。
未使能AD定时器x的触发输入。
1H:选择SGx_TRG硬件触发器作为SGx的触发器输入。
未使能AD定时器x的触发输入。
2H:选择AD定时器触发器x作为SGx的触发输入。
未使能AD定时器x的触发输入。
3H:选择AD定时器触发器x作为SGx的触发输入。
选择SGx_TRG硬件触发器作为AD定时器x的触发器输入。
ADCFnSGVCSPx是一个8位的可读/可写寄存器,它指定了一个虚拟通道的开始指针。
VCSP[5:0]:启动虚拟通道指针
这些位选择要开始扫描的虚拟通道。
当SGx启动时,执行从ADCFnSGVCSPx到ADCFnSGVCEPx的虚拟通道处理。
ADCFnSGVCEPx是一个8位的可读/可写寄存器,它指定了一个虚拟通道的结束指针。
VCEP[5:0]:结束虚拟通道指针
这些位选择扫描要结束的虚拟通道。
当SGx启动时,执行从ADCFnSGVCSPx到ADCFnSGVCEPx的虚拟通道处理。
ADCFnSGMCYCRx是一个8位的可读/可写寄存器,用于指定多周期扫描模式下的扫描次数。
MCYC[7:0]:这些位指定在多周期扫描模式下的扫描次数
扫描次数= MCYC[7:0] + 1
ADCFnSGSRx是一个8位的只读寄存器,表示扫描组x的状态。
SGACT:扫描组状态
0: SGx暂挂没有转换。
1:有一个转换在SGx待处理。
如果该位为1,则SGx的状态为以下任意一种:
?触发器请求被搁置
?转换正在进行中
?由于发生更高优先级的转换,转换被搁置
当x=3,4时
ADTACT:A/D定时器状态
0: A/D定时器x处于空闲状态。
1: A/D定时器x运行
ADCFnADTIPRy是一个32位可读/可写寄存器,用于设置A /D定时器y的初始相位。
ADTIP[20:0]:A/D定时器初始相位
这些位设置A/D定时器y的初始相位。
(1) A/D定时器y启动后,ADCFnADTIPRy被加载到A/D定时器y,定时器倒计时。
(2) A/D定时器y变为0后,输出A/D定时器触发器y一个周期;ADCFnADTPRRy被加载到A/D定时器y,定时器再次倒数。
之后重复过程(2)
ADCFnADTPRRy是一个32位可读/可写寄存器,用于设置A /D定时器y的周期
ADTPR[20:0]:A/D定时器周期
ADCFnULLMSRx是一个控制扫描组x的8位可读/可写寄存器。
ULS:上限/下限表选择
0H:不检查上限和下限。
1H:在ADCFnULLMTBR0中检查上限和下限。
2H:在ADCFnULLMTBR1中检查上限和下限。
3H:在ADCFnULLMTBR2中检查上限和下限。
在ADCFnDRj中存储A/D转换值时,使用ULS[1:0]选择的上限/下限表检查上限和下限。
下图是使用普通A/D转换模式(CNVCLS[2:0]h = 0)对多周期扫描模式下的扫描组0进行2周期扫描转换4个虚拟通道的操作示例。
图27.5是使用正常A/D转换模式(CNVCLS[2:0] = 0H)转换连续扫描模式下扫描组0的四个虚拟通道的操作示例。
图27.6显示了在加法模式下使用普通A/D转换(CLVCLS[2:0] = 4H)为扫描组0转换4个虚拟通道的操作示例。
下面展示了使用MPX模式(CNVCLS[2:0] = 5H)的正常A/D转换或使用MPX模式的加法模式(CNVCLS[2:0] = 6H)的正常A/D转换的外部模拟复用器的操作示例。
图27.8显示了一个高优先级时同步挂起和恢复操作的示例
SG中断低优先级的SG。
SG0还在执行过程中SG2触发,则SG0的此通道先执行完,然后执行SG2,再接着执行SG0的后面的通道
图27.9显示了一个更高优先级时异步挂起和恢复操作的示例
SG中断低优先级的SG。
SG0的通道1还在执行过程中SG2触发,则SG0停止转换,切换到SG2转换,完成后重新执行SG0对应的通道转换
A/D定时器计数基于内部ADC时钟ADCFCLK。
ADCF具有以下诊断功能。
?PIN电平诊断功能
?SAR-ADC诊断功能
?开路和断路检测
下表显示了不同内部时钟频率下的ADC转换时间。有关更多细节,请参阅时钟章节。
ADCF具有嵌入式采样保持电路。当ADCFnSGCRx的SGST位设置为1且扫描组开始延迟时间(tD)过去后,ADC执行采样,然后开始顺序比较转换处理。
扫描组处理时间tSG包括扫描组开始延迟时间tD (Scan group processing time)、采样时间tSPL (sampling time)、顺序比较转换处理时间tSAR (sequential compare conversion processing time)和扫描组结束延迟时间tED (Scan group end delay time)。
Table27.43, Scan Group Processing Time,显示扫描组处理时间
在多周期扫描模式下,当i =虚拟通道数,j =多周期数时,扫描组处理时间tSG (scan group processing time)的计算公式如下:
tSG = tD + (tSPL + tSAR) × i × j + tED
连续扫描模式下的第一周期扫描:tD + (tSPL + tSAR) × i
连续扫描模式下的第二次及后续扫描:(tSPL + tSAR) × i
对于每个扫描组x,提供一个触发输入SGx_TRG,启动相应扫描组通道的转换
扫描组转换触发信号SGx_TRG可以由几个来源产生:
?扫描组SG0至SG4
外部触发信号adtrn。
有关连接触发信号的详细信息,请参见Section 26, Peripheral Interconnect(PIC).
?扫描组SG3 ~ SG4
SG3、SG4可通过A/D定时器启动
AD时间可以通过PIC的触发信号启动
外部触发信号ADCFnTRGx通过数字噪声滤波器来消除噪声和信号故障。
ADCF的A/D转换启动触发器包括硬件触发器、软件触发器和A/D定时器触发器。扫描组x (x = 0 ~ 4)支持ADSTART和SGST指定的软件触发(SG0到SG4), SGx_TRG (x = 0到4)的硬件触发器,以及A/D定时器触发器(SG3和SG4)。
P1H-C只有32路ADC通道