犹豫了好久,今天终于有勇气写自己的技术博客了,其实之前有写过应用笔记,包括STM32的Cortex-M3内核系列的笔记以及自己做车这么久的学习笔记等。不管怎么说,今天都是一个新的开始新的尝试,话不多说,还是先介绍一下自己对k60的ADC的应用心得吧。
1 k60的ADC模块主要特征:
1.1线性逐次逼近算法可以达到16位的采样精度。
1.2有4个差分和24个单端外部模拟输入通道。
1.3输出模式:有 16 位、13 位、11 位、9 位的差分模式,或者 16 位、12位、10位、8位的单端模式。 (16位精度采集陀螺仪但是如果时钟频率过高,误差会很大)
1.4差分模式以16位扩展的有符号补码形式输出, 单端模式以右对齐无符号输出。
1.5单端或者持续转换模式,采样时间和转换速率/电压可配置。转换完成/硬件计算采样平均值完成的标志和中断。
1.6输入时钟ADICLK可从四个时钟源选择(异步时钟(ADACK)、总线时钟、总线时钟二分频、ALTCLK(根据 MCU定义))。
1.7可选择的电压:外部电压或可选电压。 自校对模式。 (精度=参考电压/2的采样位数次方)
2 模块示意图
3 寄存器一共有25个,其中常规的状态控制寄存器3个、工作模式配置寄存器2个以及数据寄存器1个,这三类寄存器基本可以满足常规应用。
3.1ADCx_SC1n(x为0或1,n为A或B,复位0x1f)
COCO[7]:AD转化完成标志。写ADCx_SC1n或者读取ADCx_Rn寄存器都回清除该位。
AIEN[6]:AD转换完成中断使能。
DIFF[5]:输入模式选择。1为双端输入,