4. MCX ADC模块原理与配置
MCX系列MCU内部集成的逐次逼近型ADC(SAR ADC)是混合信号测量链路的第一站。理解它的工作机制,不只是知道“逐次逼近”四个字,而是要能回答三个工程问题:一次转换到底经历了哪些阶段、采样率与分辨率如何互相牵制、以及多通道扫描时结果如何被正确取走。本节围绕这三点展开,并给出可直接参考的配置思路。
逐次逼近的工作机制
SAR ADC的核心是一个电容式DAC阵列、一个比较器和一套逐次逼近寄存器逻辑。一次完整转换分为采样与转换两个阶段。采样阶段,采样开关闭合,输入信号对采样电容充电,电容上的电压跟随输入;采样开关断开瞬间,输入电压被“冻结”在电容阵列上,这个时刻的电压就是本次转换的输入值。转换阶段,SAR逻辑从最高有效位(MSB)开始,逐位把电容阵列切换到参考电压或地,产生一个试探性的DAC输出电压,与保持的输入电压比较:若DAC输出小于输入,该位保留为1;否则清零。如此从MSB到LSB重复N次,N位结果就确定了。
这个过程决定了两个关键特性。第一,转换需要N个时钟周期(对N位分辨率),因此分辨率越高,单次转换越慢。第二,采样阶段需要足够的建立时间,让采样电容充电到目标精度,这由外部源阻抗和采样开关电阻共同决定。若源阻抗过大,采样电容来不及充满,就会出现增益误差或非线性,表现为高阻抗信号源下读数偏低且随通道变化。
采样率与分辨率的权衡
MCX ADC支持多种分辨率(常见为8/10/12/16位,具体依型号)。分辨率与采样率是一对矛盾:总转换时间 = 采样时间 + N个转换时钟。以12位、转换时钟20 MHz为例,转换阶段约12×50 ns = 600 ns;若采样时间设为400 ns,则单次转换约1 μs,对应约1 MS/s。若切到16位,转换阶段变为16×50 ns = 800 ns,单次约1.2 μs,采样率降到约830 kS/s。若同时还要扫描多个通道,每通道都要重复采样与转换,总吞吐率进一步被通道数除。
工程上应先确定“精度需求”再反推采样率。测量缓慢变化的温度、电池电压,12位甚至16位、几十kS/s足够;测量音频或电机电流波形,可能需要12位、数百kS/s以上,此时应缩短采样时间并降低源阻抗,或使用外部运放缓冲。不要盲目追求最高分辨率,因为高分辨率下LSB很小,噪声和参考电压稳定性会成为瓶颈。
通道扫描模式
MCX ADC通常支持单通道单次、单通道连续、多通道扫描等模式。扫描模式下,ADC按预定义的通道序列依次采样转换,序列可配置为A、B两组或一个通道队列。每个通道可以独立设置采样时间,这对混合不同源阻抗的信号很有用:低阻抗通道用短采样,高阻抗通道用长采样。
扫描模式的关键是“结果与通道的对应关系”。每次转换完成后,结果被写入结果FIFO或按通道号存入结果寄存器。若使用FIFO,必须记录转换顺序,否则读出的数据无法对应物理通道。建议在扫描序列中固定通道顺序,并在软件中维护一个与序列一致的索引,读取时按索引还原通道号。
硬件触发与转换结果读取
在实时控制场景中,软件轮询启动转换会引入不确定的延迟。MCX ADC支持硬件触发,触发源可来自定时器溢出、PWM重载或比较器输出。配置时需选择触发源、触发边沿(上升沿/下降沿)以及是否使能触发。硬件触发的好处是采样时刻与PWM或定时器严格同步,适合电机电流采样、电源环路等对时序敏感的应用。
结果读取有两种典型方式。第一种是查询方式:启动转换后轮询转换完成标志(如COCO),然后读结果寄存器。这种方式简单,但会占用CPU。第二种是中断或DMA方式:转换完成产生中断,在中断服务程序中读取;或配置DMA在每次转换完成后自动搬运结果到内存缓冲区。多通道扫描时,DMA方式尤其高效,可以连续采集一批数据后再统一处理。
读取结果时要注意数据对齐。MCX ADC结果通常支持左对齐或右对齐,12位结果放在16位寄存器的低12位或高12位。若使用DMA搬运,需保证目标缓冲区元素宽度与对齐方式匹配,否则会出现数值错位。此外,若参考电压不是VDDA,结果换算公式为:Vin = (RESULT / 2N) × VREF。例如12位、VREF=3.3 V,读数0x800对应1.65 V。
综合来看,MCX ADC的配置本质是在精度、速度、通道数和CPU开销之间做平衡。先明确信号带宽与精度要求,再选择分辨率与采样时间,最后用硬件触发和DMA把CPU解放出来。掌握这套逻辑,后续的滤波、校准和测量算法才有可靠的数据基础。