S12XS系列MCU的ATD模块共有27个寄存器,包括6个ATD转换控制寄存器,2个ATD转换状态寄存器,1个ATD比较使能寄存器,1个ATD比较方式寄存器,1个ATD转换输入使能寄存器和16个ATD转换结果寄存器(其中ATDCTL0~ATDCTL5和ATDSTAT0这7个寄存器为8位寄存器,其余寄存器都是16位寄存器)。
先给出一段例程
- voidATD_init(void)
- {
- ATD0CTL1=0x0f;//选择8位转换精度
- ATD0CTL2=0x40;//打开CCF快速清零位,关闭外部触发输入,关闭中断
- ATD0CTL3=0x08;//数据左对齐,non-fifo,转换序列长度为1
- ATD0CTL4=0xE3;//采样时间为24个ATD时钟周期,ATDCLK=8MB/8=1MHz
- }
下面对各个寄存器做一个介绍:
(1)ATD控制寄存器0
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | |
读 | 保留 | 0 | 0 | 0 | WRAP3 | WRAP2 | WRAP1 | WRAP0 |
写 | ||||||||
复位值 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
WRAP [ 3 : 0 ]:回旋通道选择位。这些选择位只有在ATDCTL5的MULT位为1的情况下,也就是多通道转换模式下,才是有效的。WRAP [ 3 : 0 ] = 0时,为保留值。WRAP [ 3 : 0 ]:= x(1<x<15)时,在多通道转换模式下,当完成对第x个模拟输入通道(ANx)的ATD转换后,下一个ATD转换通道将回绕到第0个通道AN0,而不是第N+1个通道。
(2)ATD控制寄存器1
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | |
读/写 | ETRIGSEL | SRES1 | SRES0 | SMP_DIS | ETRIGCH3 | ETRIGCH2 | ETRIGCH1 | ETRIGCH0 |
复位值 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 |
ETRIGSEL。外部触发源选择位。
SRES [ 1 : 0 ]:ATD转换精度选择位。
SRES1 | SRES0 | ATD转换精度 |
0 | 0 | 8位 |
0 | 1 | 10位 |
1 | 0 | 12位 |
1 | 1 | 保留 |
SMP_DIS:采样前放电控制位。1时对模拟信号采样前,释放ATD模块内部采样电容中的电荷。
ETRIGCH [ 3 : 0 ] :外部触发通道选择位。当ETRIGCH [ 3 : 0 ] 为x(0<x<15)时,选择第x个模拟输入通道ANx为外部触发信号。
(3)ATD控制寄存器2
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | |
读 | 0 | AFFC | ICLKSTP | ETRIGLE | ETRIGP | ETRIGE | ASCIE | ACMPIE |
写 | ||||||||
复位值 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
AFFC:ATD转换CCF快速清零位。
ICLKSTP:停止模式内部时钟使能位。1位在停止模式下,ATD模块可以继续使用模块内部时钟ICLK进行ATD转换。0位在停止模式下,ATD模块停止当前的转换,退出停止模式后,ATD转换自动重新开始。
ETRIGLE:外部触发电平/边沿控制位。
ETRIGP:外部触发极性控制位。
ETRGLE | ETRIGP | 外部触发条件 |
0 | 0 | 下降沿 |
0 | 1 | 上升沿 |
1 | 0 | 低电平 |
1 | 1 | 高电平 |
ETRIGE:外部触发信号使能位。
ASCIE:ATD转换序列结束中断使能位。1为使能ATD转换序列结束中断,也就是说,当SCF=1时,将引发中断;0时,为禁止ATRD转换序列结束中断。
ACMPIE:ATD比较中断使能位。
(4)ATD控制寄存器3
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 | |
读/写 | DJM | S8C | S4C | S2C | S1C | FIFO | FRZ1 | FRZ0 |
复位值 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
DJM:结果寄存器数据对齐位。1表示结果寄存器中的数据位右对齐,0表示结果寄存器中的数据结果为左对齐。
S8C,S4C,S2C,S1C:A/D转换序列长度定义位,这4位定义了一个A/D转换序列的长度,默认S4C为1,即默认转换序列的长度为4。
S8C | S4C | S2C | S1C | 转换序列长度 |
0 | 0 | 0 | 0 | 8 |
0 | 0 | 0 | 1 | 1 |
0 | 0 | 1 | 0 | 2 |
0 | 0 | 1 | 1 | 3 |
0 | 1 | 0 | 0 | 4 |
0 | 1 | 0 | 1 | 5 |
0 | 1 | 1 | 0 | 6 |
0 | 1 | 1 | 1 | 7 |
1 | x | x | x | 8 |
FIFO:结果寄存器先进先出模式位。1表示先进先出模式,转换结果依次放在连续的结果寄存器中,当使用完最后一个结果寄存器后,会重新回到第一个结果寄存器存放转换结果。可以根据完成标志位判断哪个寄存器中的结果数据有效。0表示非先进先出模式。A/D转换结果在寄存器中的存放位置和转换序列中的顺序相关联,简单的说,第一次转换的结果放在第一个结果寄存器中,第二次转换的结果放在第二个结果寄存器中,依次类推。
FRZ [ 1 : 0 ]:后台调试冻结使能位。当调试程序时,如果遇到断点,有时希望此时ATD模块停止。
FRZ1 | FRZ0 | 工作状态 |
0 | 0 | 继续转换 |
0 | 1 | 未定义 |
1 | 0 | 完成当前转换,然后暂停 |
1 | 1 | 立即暂停 |