今天各种事情比较多.......技术活时间略少,就搞了这一项~

52832的ADC和之前51822系列还是有蛮大差别的:
1、支持差分输入方式,测量结果为两输入端口电压差的转换的有符号数值,这个功能对于啥桥式传感器的数据采集真是太爽了,可以省一个电平平移放大电路
2、原始分辨率最高提升到12位,14位那个过采样方式实现的,使用限制很多,不能扫描,还不如自己软件解决要多少位有多少位。
3、新增“通道”概念,每个通道可以选定使用的+-信号源,转换是以通道为个体进行的,如果使能多个通道,则一次触发完成全部通道的扫描转换。
4、自带EasyDMA,可以直接把数据打到RAM内,但不能像STM32那样支持循环传输,复位指针只能靠手动
5、取消了外部电压参考输入,这个其实有点蛋疼,在测量端供电和MCU供电之间存在变动情况下可能会引入误差,对于低频信号,可以用软件进行补偿,但也还有点蛋疼
6、可以自主配置采样时间,端口负载电阻之类参数


先上调试通过的代码,这里实现了5个通道的转换,其中两个差分通道,三个单端通道,以手动方式触发,在线程中每100mS触发一次,数据保存在m_buffer_pool数组中。
 
这几点关注:
1、官方库挺不错了,提供了一个默认的端口配置的宏定义,很方便,然而实际上还是蛮多东西需要修改的,但这个方法挺可以借鉴

于是我也照着酱紫自己定义了两种我常用的端口配置的方式,代码可以少不少了。这里MCU我用供电是1.8V,所以1/3的增益就够完成全量程范围的数据的转换了。


2、添加SAADC相关库文件时候,这个文件记得也要添加,在./nrf_driver/hal/路径里面


3、配置好正式开始使用ADC模块时候这里需要注意下:
nrf_drv_saadc_buffer_convert()
这个函数实际是用来配置EasyDMA用的,也就是指定打到内存的位置和限制,但并不会开启转换。并且EasyDMA的指针是双buffer形式的,可以在前一个在使用的情况下直接更新。
不过这里的size这个参量的说明,Buffer size in words,看的有点晕吖,以字为单位的大小??每次转换结果都是半字大小,以字为单位,扫描通道数目必须是偶数啦?而且也不能代表转换次数的单位啊。如果是以字方式存放,那就是个废话,这里填的就应该是项数的2倍,但是例程里面填的又是5........懒得看源码了,反正我就直接填了个数组项数,每次传输完都会复位指针,也不至于溢出了。先就酱紫吧。
 
nrf_drv_saadc_sample_convert()
这个函数嘛,block方式的转换,反正我是不会用的,浪费CPU时间浪费电
 
nrf_drv_saadc_sample()
这个就是正经开启一次转换的函数了。转换完成后,会自动在中断程序里面调用初始化时候配置的回调函数,并且会得到相关中断的事件的信息。


ADC这块总的来讲还是提升蛮大,不过和我希望的还是有蛮大差距。最重要的,即使使用TIMER+PPI触发,结合EasyDMA来传输数据,依旧存在一个缺陷,不能循环方式缓存,导致最终还是需要CPU的参与来维持正常的转换,一定程度上会减少CPU睡眠时间比例和持续长度。而且,使用库函数似乎并没有办法关掉ADC的中断,初始化的event_handler必须提供,且每次转换完成都会产生中断,势必唤醒CPU。这样的话,就导致使CPU在ADC连续采集一段时间之后,再批处理数据不太好实现了。
对于此,一种方案就是自己绕过库函数自己造轮子,编写相关代码,也是可以实现得了的。另一种方式,如果采集频率高于CPU处理频率唯一目的是更好进行软件滤波减少误差,也可以通过提高外围硬件的滤波性能,取代软件滤波,原先批处理时候才进行采样转换,在同一个时间点多次采样减少这次时间点的误差,而软件滤波就完全由硬件代劳了。

nRF52832开发日志--SAADC调试的更多相关文章

  1. Arcgis Runtime 100.3开发实例源代码调试日志

    Arcgis Runtime 100.3开发实例源代码调试日志 路径: "D:\arcgis runtime1003\arcgis-runtime-samples-dotnet-master ...

  2. NET-SNMP开发——日志输出

    NET-SNMP开发——日志输出 net-snmp的日志输出功能是很强大的,与日志输出相关函数声明在net-snmp-5.7.3\include\net-snmp\library\snmp_loggi ...

  3. Java核心技术卷一基础知识-第11章-异常、断言、日志和调试-读书笔记

    第11章 异常.断言.日志和调试 本章内容: * 处理错误 * 捕获异常 * 使用异常机制的技巧 * 使用断言 * 日志 * 调试技巧 * GUI程序排错技巧 * 使用调试器 11.1 处理错误 如果 ...

  4. Chino 操作系统开发日志 (1) - 为 IoT 而生

    引言 很多人都听说过 IoT (物联网)这个词,越来越多的人在装修时开始选择智能家居,很多人也购买智能音箱做智能家居控制,想必未来一定是 AI + 物联网的时代. 一种技术要发展并走向成熟必须要降低门 ...

  5. legend3---9、项目的日志以及调试信息数据量非常大

    legend3---9.项目的日志以及调试信息数据量非常大 一.总结 一句话总结: legend2我开发调试,最近竟然发现日志等的信息有1.5G,数据量实在太大 1.juqery如何找后代? chil ...

  6. [原创][开源] SunnyUI.Net 开发日志:ListBox 增加跟随鼠标滑过高亮

    QQ群里,寸目说,ListBox鼠标移动时,当前行需要焦点,我想了想,不难实现啊 不就是在鼠标移动时重绘Item嘛,何况选中的Item已经改了颜色了. 见UIListBox代码: protected ...

  7. 通过Dapr实现一个简单的基于.net的微服务电商系统(十四)——开发环境容器调试小技巧

    之前有很多同学提到如何做容器调试,特别是k8s环境下的容器调试,今天就讲讲我是如何调试的.大家都知道在vs自带的创建项目模板里勾选docker即可通过F5启动docker容器调试.但是对于启动在k8s ...

  8. 突破瓶颈,对比学习:Eclipse开发环境与VS开发环境的调试对比

    曾经看了不少Java和Android的相关知识,不过光看不练易失忆,所以,还是写点文字,除了加强下记忆,也证明我曾经学过~~~ 突破瓶颈,对比学习: 学习一门语言,开发环境很重,对于VS的方形线条开发 ...

  9. 《Invert》开发日志05:终止

    今天终于看了久闻大名的<独立游戏大电影>,然后我就做了一个坑爹的决定:终止“Invert”项目的开发.没错,在还没正式开工之前,我就决定停掉这个项目,而且是永久终止.做这个决定并不是因为觉 ...

随机推荐

  1. Hyper-V 与Broadcom网卡兼容问题

    最近在测虚拟机时,碰到一个网卡和Hyper-V不兼容问题,现在共享给大家参考,希望对大家有帮忙. 故障描述: Dell R720 Windows 2012操作系统下的Hyper-V环境后,虚拟机网络速 ...

  2. PDO和消息队列的一点个人理解

    什么是消息队列,百度百科说,···消息队列····是在消息的传输过程中保存消息的容器. 看着网上林林总总的文章,都说是为了应对高并发,处理数据量超级大的一种数据容器,也可以说是利用各种方式,先把数据存 ...

  3. stream数据流

    首先必须先要了解Buffer,Buffer是js和c++的结合体,类数组,通常与Stream一起用: 1. (1).Buffer是个类,因此可以构建成对象 (2).buf具有数组的性质 字符串转换成二 ...

  4. java中一些定时器的使用

    一:简单说明 ScheduleExecutorService接口中有四个重要的方法,其中scheduleAtFixedRate和scheduleWithFixedDelay在实现定时程序时比较方便. ...

  5. UDP server & client

    Server: import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; ...

  6. 简化C语言文法

    程序 → 外部声明|程序 外部声明 外部声明 → 定义函数|定义 函数定义 → 类型标识符 声明部分语句 类型标识符 → 空类型|字符型|整型|浮点型 声明部分语句 → 指针 直接声明|直接声明 指针 ...

  7. Easy Tag Write(1)

    package skyseraph.easytagwrite; import skyseraph.android.util.CustomDialog; import skyseraph.android ...

  8. 编辑word文档过程中输入法无法正常使用

    编辑word文档过程中输入法无法正常使用怎么办??有的朋友在使用Word 2010过程中,遇到了这样的问题.每次打开word文档,程序就自动变成英文输入法,中文输入法就退出了,特别是搜狗输入法.即使在 ...

  9. nginx跨域配置

    假设前端页面的地址为: 192.168.1.1/arcgis40/index.html 页面物理路径为: X:\nginx-1.9.15\html\arcgis40 那么请求服务时,当ajax代码如下 ...

  10. Web 播放声音 — AMR(Audio) 篇

    本文主要介绍 AMR(Aduio) 播放 AMR 格式 Base64码 音频. 1.必备资料 github AMR 开源库 :https://github.com/jpemartins/amr.js用 ...