ADC可以在软件选择的任何一个通道上完成AD转换,所有的模式转换都由一套连续的近似算法控制。 为满足精度要求,ADC模块使用片上计算功能来完成。当转换完成后,结果被存储在数据寄存器中, 若中断使能则产生中断。ADC有自动比较转换结果和比较寄存器值的能力,通过ACFE来使能,同时 可以对多次转换的结果取平均值,硬件取平均值功能通过AVFE来使能。
【这里其实就是提供了硬件滤波,想起看过的<<匠人手记>>,上面讲了很多滤波方法】
转换的初始化可由软件或硬件触发,此外,ADC还能配置成低功耗模式运行,长采样时间,连续转换, 硬件取平均值,对软件设定的比较值和转换结果进行自动比较。 【这么看,ADC的控制是很灵活的】
ADC模块还包括一个温度传感器,这是个好消息啊!温传的输出在ADC的一个模拟输入通道上。 关于此温传的使用,还得去看AN3031<<Temperature Sensor for the HCS08 Microcontroller Family>>
最后给出了详细的ADC初始化过程:
1.利用计算功能下的相关指令计算ADC需要的一些数据。 计算过程为(page884)
1.1 定义初始化一个16位的变量
1.2 把加计算的结果CLP0~CLP4和CLPS到这个变量
1.3 用这个变量除以2
1.4 把这个变量的高位置位
1.5 前2步可通过carry bit来实现高字节的高低位反转,再应用在低字节
1.6 存储加计算值到PG
1.7 重复以进行减计算
2.更新配置寄存器来选择时钟源和产生内部时钟及ADCK的分频比,配置寄存器也用来选择采样时间和 低功耗配置。
3.更新状态和控制寄存器(SC2)来选择转换的触发源(硬或软)和使能比较功能。
4.更新状态和控制寄存器(SC3)来选择是一次性转换还是连续转换,以及是否硬件取平均值。
5.更新状态和控制寄存器(SC1:SCn)来选择转换是单端的,还是差分的,以及中断使能控制还有输入 通道。
6.更新PGA来配置增益。
【总结1: ADC的初始化要用到计算功能,在page843上有"用户必须先于计算而进行正确地配置ADC",配置包括时钟源 的选择,低功耗配置,参考电压选择,采样时间等,设置CAL位后,计算开始,在计算结束时,若CALF没有 置位,说明计算成功。】
【总结2:用ADC的初始化流程是:
1.配置ADC,置位CAL,开始计算
2.用计算后的CLP0~CLP4,CLPS再进行计算以上1.1~1.7的过程,把结果存储到PG(Plus-side gain calibration register)。
3.再就是以上的2~6步。】
不知是否存在错误,请大家指正。。。 |