笔记:NRF52832 调试SAADC

参考:https://blog.csdn.net/jdsnpgxj/article/details/80295208

https://www.cnblogs.com/Manual-Linux/p/9380267.html

SAADC就是52832中的ADC模块,用来采集模拟电压,具有12位分辨率,0-VDD全范围输入,8个通道可以组成差分输入,最高200ksps等特性,性能实测不是很好,不是精密测量可以用。

具体参数可以查看数据手册,下面来说一下如何使用。

SAADC的工作过程:

1、配置好你需要使用的每个通道。这里的通道不局限于那8个物理输入引脚,我没测试是不是可以有无限多个通道。每个通道的增益、参考源、输入引脚都可以单独设置!这边设置了3个通道,配置为单端输入,然后想改增益什么的话可以自己修改:

三个通道配置
笔记:NRF52832 调试SAADC_第1张图片
可单独修改每个通道,自己写一个结构体

2、配置SAADC并初始化。在sdk_config.h中打开并设置好SAADC,并记得添加.c文件:

笔记:NRF52832 调试SAADC_第2张图片

然后初始化SAADC并初始化前面所有的通道:

笔记:NRF52832 调试SAADC_第3张图片

3、配置双缓冲区域,这个比较有意思,采样是按你上面初始化了的通道顺序循环的,这里我建议设置成前面通道数的倍数,不然你分不清是哪个通道的数据。比如这里我有3个通道,缓冲区域大小为6,那么每采集两组以后才会触发回调函数,采集之中CPU是不会工作的,而双缓冲的设置还保证了连续性。

4、使用一个Timer来触发每一次采集。先设置好一个m_timer,这里用的Timer0,如果在BLE应用中可以改成别的防止占用。

然后初始化Timer并设置好时间。这里的时间是每次采集的时间,设置是300ms。

笔记:NRF52832 调试SAADC_第4张图片

你可能感兴趣的:(笔记:NRF52832 调试SAADC)