ADC
概述
ADC 将外部模拟电压转换为数字采样值,可用于电压监测和控制反馈。G32S107 的 ADC 具有 12 位分辨率,支持扫描多个输入通道、重复采样及 CPU / DMA 数据读取。
性能概览
常温、每通道连续 10 次采样时,ADC0 在 2.500 V 和 2.900 V 输入点的平均值绝对误差为 13~15 mV;已测组的峰峰值最高为 10 mV。
ADC 时钟 29.629629 MHz、不插入通道延时时,4 次转换从启动到完成的实测耗时为 2.333~2.500 μs。
采样精度与稳定性
ADC0 的 2.500 V、2.900 V 输入点未达到平均值绝对误差 ≤10 mV 的测试目标;多个输入点也出现超过 5 mV 的峰峰值。
除单独标注的通道子集外,下表为各组 CH0~CH7 的结果范围。平均值绝对误差为 10 次采样均值与输入电压之差的绝对值;峰峰值为同一通道 10 次采样的最大值与最小值之差。结果按 mV 汇总,范围两端为不同通道的最小、最大结果。
| 模块 | 输入电压(V) | 平均值绝对误差(mV) | 峰峰值(mV) |
|---|---|---|---|
| ADC0 | 2.500 | 13~14 | 1~6 |
| ADC0 | 2.900 | 14~15 | 3~7 |
| ADC0 | 3.240 | 0 | 0 |
| ADC1 | 0 | 0 | 0 |
| ADC1 | 0.292 | 8~9 | 4~6 |
| ADC1 | 0.300 | 2~3 | 3~6 |
| ADC1 | 0.802 | 6~7 | 2~7 |
| ADC1 | 1.655 CH0、CH1、CH3~CH7 | 0~2 | 4~6 |
| ADC1 | 2.500 | 2~6 | 3~6 |
| ADC1 | 2.901 | 1~3 | 2~6 |
| ADC1 | 3.238 | 1~2 | 0~3 |
0 mV 仅表示这 10 次采样在 mV 汇总精度下的结果。已测输入点不能作为整个 0~3.3 V 量程的连续精度保证,最高实测输入为 3.240 V。
输入电压标注差异:ADC0 的 1.655 V / 1.600 V 组、ADC1 的另一 0.802 V / 0.800 V 组平均值精度未确认,峰峰值分别为 2~6 mV、1~10 mV。ADC1 中点组仅 CH2 的输入标为 1.650 V,平均值误差与该输入不符,暂不确认其平均值精度;该通道峰峰值为 2 mV。
转换完成时间
不插入通道延时的 SEQ0 完成 4 次转换需 2.333~2.500 μs。SEQ1 / SEQ2 设置 DLY_CNT=128 后,4 次、8 次转换的实测耗时分别为 19.500~19.666 μs、38.833~39.000 μs。
计时窗口从 ADC 启动到转换完成,包含启动、转换、配置延时及轮询 / 完成检测开销。扫描模式依次采样 CH0~CH3 或 CH0~CH7;重复模式对 CH0 连续转换 4 次或 8 次。
| 序列 | 模式 | 转换次数 | DLY_CNT | ADC0(μs) | ADC1(μs) |
|---|---|---|---|---|---|
| SEQ0 | 扫描 | 4 | 0 | 2.333 | 2.500 |
| SEQ0 | 重复 | 4 | 0 | 2.333 | 2.333 |
| SEQ1 | 扫描 | 4 | 128 | 19.666 | 19.666 |
| SEQ1 | 扫描 | 8 | 128 | 38.833 | 39.000 |
| SEQ1 | 重复 | 4 | 128 | 19.500 | 19.666 |
| SEQ1 | 重复 | 8 | 128 | 39.000 | 39.000 |
| SEQ2 | 扫描 | 4 | 128 | 19.500 | 19.666 |
| SEQ2 | 扫描 | 8 | 128 | 38.833 | 39.000 |
| SEQ2 | 重复 | 4 | 128 | 19.666 | 19.666 |
| SEQ2 | 重复 | 8 | 128 | 39.000 | 39.000 |
ADC 与延时时钟均为 29.629629 MHz,DLY_CNT=128 对应每次转换前约 4.32 μs 延时。按每次转换 15 个 ADC 时钟计算的理论时间约为 0.506 μs;该值不包含上述启动与检测开销,不能直接作为端到端实测吞吐。
CPU / DMA 数据读取
程序运行在 PSRAM 时,SEQ1 的 4 次转换及数据读取总耗时为 3.000~3.500 μs;8 次转换及数据读取总耗时为 5.000~5.833 μs。
下表均从序列启动开始计时。CPU 模式在数据寄存器读取并复制完成时结束;DMA 模式在 DMA_FIN 到达时结束,转换和搬运存在重叠。数据为小批量端到端耗时,不代表持续 DMA 吞吐。
| SEQ1 模式 | 转换次数 | ADC0 CPU(μs) | ADC0 DMA(μs) | ADC1 CPU(μs) | ADC1 DMA(μs) |
|---|---|---|---|---|---|
| 扫描 | 4 | 3.166 | 3.166 | 3.500 | 3.166 |
| 扫描 | 8 | 5.000 | 5.833 | 5.166 | 5.833 |
| 重复 | 4 | 3.000 | 3.166 | 3.000 | 3.166 |
| 重复 | 8 | 5.000 | 5.833 | 5.166 | 5.833 |
测试条件
| 项目 | 条件 |
|---|---|
| 芯片与通道 | G32S107;ADC0、ADC1;精度测试每组覆盖 CH0~CH7,不能据此认定两模块并发性能。 |
| 精度采样配置 | 外部参考电压,量程配置 0~3.3 V;配置目标为 30 MHz ADC 时钟、2 MSPS 采样率;每通道连续采样 10 次,不剔除异常值,仅做算术平均,不额外进行软件滤波或补偿。 |
| 精度环境与覆盖 | 已有数据为常温测试,未给出实际室温、实测参考电压或跨芯片统计;−40 °C、60 °C、80 °C 未取得对应精度数据。 |
| 速度计时配置 | APLL 800 MHz,ADC 实际工作时钟 29.629629 MHz;使用 systick 底层 mtime 记录启动至完成耗时。 |
| 数据读取配置 | 程序运行于 PSRAM;CPU 800 MHz,PDMA0 所在 AHB 总线 250 MHz;数据读取测试未给出 DLY_CNT,不能与 DLY_CNT=128 的转换测试直接比较。 |
文档入口:查看 ADC 用户手册 · 查看 ADC SDK 文档。