参考: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个通道,配置为单端输入,然后想改增益什么的话可以自己修改:
三个通道配置 可单独修改每个通道,自己写一个结构体2、配置SAADC并初始化。在sdk_config.h中打开并设置好SAADC,并记得添加.c文件:
然后初始化SAADC并初始化前面所有的通道:
3、配置双缓冲区域,这个比较有意思,采样是按你上面初始化了的通道顺序循环的,这里我建议设置成前面通道数的倍数,不然你分不清是哪个通道的数据。比如这里我有3个通道,缓冲区域大小为6,那么每采集两组以后才会触发回调函数,采集之中CPU是不会工作的,而双缓冲的设置还保证了连续性。
4、使用一个Timer来触发每一次采集。先设置好一个m_timer,这里用的Timer0,如果在BLE应用中可以改成别的防止占用。
然后初始化Timer并设置好时间。这里的时间是每次采集的时间,设置是300ms。
网友评论