ADC采样问答合集

📖 精选 📅 2026-09-04
#来源/立芯星球 #类型/问答合集 #技术/ADC #技术/DMA #技术/传感器标定

ADC采样问答合集

由本目录 9 篇 ADC 与传感器标定主题问答的答案精华按知识点重组而成,原帖全部保留,每节末尾标注出处。

1. 架构总纲:ADC/串口设备的前端与后端

从软件架构层面,ADC/串口这类设备的设计分为前端后端

  • 前端做数据分发,后端做解包;
  • 前端数据分发分为显式双 buffer 和隐式双 buffer;后端解包分为原地解包和异地解包
  • 前端靠近中断,往往具有系统最高优先级。

内核优化方向:中断延时优化、Sbus 总线优化、Icode 优化、中断向量表优化、减少中断嵌套;中断上半部优化(指针穿透、减少冗余判断);中断下半部优化(原地/异地解包、显式/隐式双 buffer、流 buffer)。

软件架构层面来说: ADC:(Jack)

2. 多路 ADC 的 ADC+DMA 并行思路

多路 ADC 并行操作:在 adc1 的中断回调函数里去启动下一个 adc(如 adc2),buffer 各自分开放存。DMA 不用特殊处理——只要绑定过对应的 ADC,DMA 会自动搬运、产生对应的 request。

多路adc实现adc+dma并(Jack)

3. DMA 循环模式、ADC 连续模式与 Scan 模式的配合

  • DMA 循环模式指能连续不断地接收 ADC 的 DMA request;如果不开启 ADC 的连续模式(转换完一次接着转换第二次,不需要再调用 adc start),那就没必要开 DMA 循环模式——两者要配套使用;
  • ADC 的 Scan 模式是指连续转换多个通道(IN1 扫完扫 IN2 再扫 IN3);
  • EOC 中断发生时产生 ADC 的 DMA request,通知 DMA 搬运转换完的数据;可以设置为每个通道转换完搬一次,或所有通道转换完一起搬。

老师请问开启dma的循环模式必须配合adc的连续模式使用(Jack)

4. 双 buffer 来不及切换怎么办

ADC+DMA 双 buffer 在线程切换时,buffer1 已满但还没来得及在 DMA 中断里通知线程,切换不过来导致数据出错怎么办?实战经验:测试阶段测出峰值,把 buffer 空间设置到足够大;嵌入式里基本不会在运行时去 malloc,那个风险非常大。

adc+dma,双buffer,我们在a线程进行切换的时候(Jack)

5. 实战坑:DMA Normal 模式重启后数据错位

ADC+DMA 用 Normal 模式、在中断里再次开启搬运,结果数据错位:原因是 DMA 搬完一次停下来,但 ADC 还没停,重新开启时 ADC 通道与搬运数组索引不对应。解决:重新开启 DMA 搬运之前先调 ADC_STOP

ADC应用经验: 今天被ADC(Jack)

6. 采样前端硬件:为什么要加电压跟随器

不能直接把分压信号接到采样模块:一般采样模块内部阻抗不够,采集时可能有电流流进采样模块,污染信号源。跟随器一方面起隔离作用,另一方面增强 ADC 原先的信号强度,使采集模块不影响原来的信号源。

我想问,采样ad为什么要加跟随器,不能直接分压加到采样模块(Jack)

7. 传感器标定:怎么确定测出来的值是对的

  • 标定的定义:生产线上有测试仪器,让传感器的值最终微调和测试仪器一致,这叫标定。

传感器测出来的值,是怎么确定正确的还是错误的?如何标定(Jack)

  • 量产高精度怎么标:是的,出厂都要校准——装配、生产公差、传感器批次差异都会带来系统误差。产线上每个传感器单独标定,标定数据在出厂时通过 JLink 下载算法写到外部 flash、EEPROM 或内部 flash 特定区域。

老师好哇,话说那个咱们温湿度传感器量产的时候要达到这么高的精度(Jack)

8. 未答之问与图答问答

来源笔记