NRF芯片下的ADC采集

ADC为Analog-to-Digital Converter 的缩写,指模/数转换器或者模数转换器。是指将连续变化

的模拟信号转换为离散的数字信号的器件。对应真实世界的模拟信号,例如温度、压力、声音或者
图像等,需要转换成cpu可以识别、存储、传输的数字形式,模/数转换器可以实现这个功能
。在

nrf52840中的ADC为一个逐次逼近(successive-approximation)模拟数字转换器,所有nrf52840

中的内部ADC称为:SAADC。其具体的属性如下所示:

nRF52840 的 SAADC 具有以下主要特点:
分辨率 :12 位(0 ~ 4095),可通过过采样获得更高有效位数。
输入通道

最多 8 个单端输入引脚(AIN0 ~ AIN7)

最多 4 个差分输入对(如 AIN0-AIN1、AIN2-AIN3 等)
参考电压

内部参考电压:0.6 V(默认)

外部参考电压:VDD/3.6(可配置为 VDD/4 等,具体见数据手册)
可编程增益 :1/6、1/5、1/4、1/3、1/2、1、2、4、6 倍

采样率:最高 200 kSPS(单次转换模式)

转换时间:典型值 2.5 µs(包括采样和转换阶段)

采样保持时间:可编程,用于适应不同源阻抗的信号

EasyDMA 支持:自动将转换结果存入内存,无需 CPU 干预

硬件过采样:可配置为 2×、4×、8×、16×、32×、64×、128×、256× 过采样,提升有效分辨率

SAADC 可工作于单次采样模式(每次调用启动一次转换)或连续扫描模式(通过定时器或 PPI 自动触发)。本文介绍的代码使用单次采样模式,适合低频采集场景(如每隔 300 ms 采集一次)。

一、ADC 采样通用公式

二、代码示例

以下代码展示了 nRF52840 的 SAADC 单次采样流程,每隔 300 ms 采集一次光敏电阻(AIN2 引脚的电压值) ,并通过日志输出。

三、与STM32区别

1. nRF52840:引脚固定,专用于 ADC

对于 nRF52840,SAADC 的模拟输入引脚是固定的,你不能把任意 GPIO 当 ADC 用。

2. STM32:灵活映射,功能复用

相比之下,STM32 的设计要灵活得多。

  • 通过复用功能映射 :ADC 的通道号与 GPIO 引脚不是一一绑定的,而是通过芯片的复用功能 来映射。比如,ADC1_IN0 通道可能被映射到 PA0,但也可能同时出现在其他引脚上(具体取决于型号和封装)。

  • 可重映射(部分型号) :在一些 STM32 型号中,甚至支持重映射功能,允许你把某个 ADC 通道从一个引脚"挪"到另一个指定的引脚上,这为 PCB 布线提供了极大的便利。

四、使用PPI实现低功耗采样

SDADC双缓冲PPI通道采样

ADC 初始化配置

采样触发机制(PPI + 定时器)

ADC 回调与数据处理

主循环中调用 nrf_pwr_mgmt_run() 使系统进入低功耗状态(例如 System ON 模式),仅当定时器事件、ADC 转换完成等中断发生时才会唤醒。

由于采样由硬件自动触发,CPU 大部分时间处于休眠状态,非常适合电池供电的低功耗传感器应用

相关推荐
Flamingˢ9 小时前
ZYNQ + OV5640 视频系统开发(四):HDMI 显示链路
嵌入式硬件·fpga开发·硬件架构·音视频
LCMICRO-1331084774610 小时前
国产长芯微LDC5141完全P2P替代DAC80501,数模转换器 (DAC)
单片机·嵌入式硬件·fpga开发·硬件工程·dsp开发·数模转换器 dac
普中科技11 小时前
【普中 51-Ai8051 开发攻略】-- 第 9 章 按键控制实验
单片机·嵌入式硬件·开发板·keil·按键·普中科技·ai8051u
曼亿点12 小时前
STM32HAL驱动L298N电机驱动模块(PWM调速+双电机控制)保姆级教程
stm32·单片机·嵌入式硬件
筱谙12 小时前
BES 芯片跨核通讯与共享内存设计原理
嵌入式硬件·音频·蓝牙
思为无线NiceRF12 小时前
高空线路安装智能安全帽全双工组网对讲系统(含优先级管控)应用方案
嵌入式硬件·物联网
独小乐14 小时前
012.整体框架适配SDRAM|千篇笔记实现嵌入式全栈/裸机篇
c语言·汇编·笔记·单片机·嵌入式硬件·arm·gnu
不吃鱼的羊14 小时前
ADC扫描组Scan Group
单片机
LCMICRO-1331084774615 小时前
长芯微LPC556D1完全P2P替代DAC8830,是引脚兼容的16位数模转换器,该系列产品为单通道、低功耗、缓冲电压输出型DAC
stm32·单片机·嵌入式硬件·fpga开发·硬件工程·电压输出型dac
forAllforMe15 小时前
如何用定时器PWM产生SPWM?--电机驱动控制
嵌入式硬件