联盛德W806-KIT开发板试用评测系列

之二:ADC 功能使用与测试

作者:大信<QQ8125036>

今天着手对W806开发板ADC功能做测试,都知道ADC在物联网应用场景中常需要用到的一个重要技术。W806手册说这款芯片支持片内ADC,介绍是这样的:

片内集成 4 路 16 比特 ADC,最高采样率 1KHz。ADC基于Sigma-Delta ADC 的采集模块,完成最多 4 路模拟信号的采集,采样率通过外部输入时钟控制,可采集输入电压,也可采集芯片温度,支持输入校准和温度补偿校准。

其管脚定义如下:

管脚   IO口名称   功能 上下拉能力

19     PA_1   ADC_1    UP/DOWN

20     PA_2   ADC_4    UP/DOWN

21     PA_3   ADC_3    UP/DOWN

22     PA_4   ADC_2    UP/DOWN

电路设计参考如下:

芯片 19~21 脚可以作为普通 ADC 使用,输入电压范围 0~2.4V。当高于 2.4V 时外部需做分压处理后才 可进入 ADC 接口。为提高精度,R1 和 R2 需使用高精度电阻。根据 Sensor 输出电压值选择合适的 R1,R2 电阻值分压。如图 3-3 所示。

图 1 ADC 分压电路设计参考

这在很多MCU里还是少见的,不禁心生喜欢,马上动手来测试一下,看看芯片集成的ADC功能性能如何。

从项目工程DEMO目录下,找到adc目录,在Sky-CDK的项目视图里加入该工程,工程代码如下:

#include <stdio.h>

#include "wm_hal.h"

void Error_Handler(void);

static void ADC_Init(void);

ADC_HandleTypeDef hadc;

int main(void)

{

int value;

SystemClock_Config(CPU_CLK_160M);

printf("enter main\r\n");

ADC_Init();

while (1) {

value = HAL_ADC_GET_INPUT_VOLTAGE(&hadc);

//hadc.offset=-1;

printf("value = %dmv\r\n", value);

HAL_Delay(500);

}

}

static void ADC_Init(void){

hadc.Instance = ADC;

hadc.Init.channel = ADC_CHANNEL_0;

hadc.Init.freq = 1000;

if (HAL_ADC_Init(&hadc) != HAL_OK)  {

Error_Handler();

}

}

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){

}

void Error_Handler(void){

while (1)

{}

}

void assert_failed(uint8_t *file, uint32_t line)

{

printf("Wrong parameters value: file %s on line %d\r\n", file, line);

}

代码总体非常简单明了。设置完芯片主屏后,直接初始化ADC,然后进入循环,读取ADC的输出数值,其中ADC的各函数句柄结构如下:

typedef struct __ADC_HandleTypeDef{

ADC_TypeDef                   *Instance;

ADC_InitTypeDef               Init;

HAL_LockTypeDef               Lock;

int                          offset;

}ADC_HandleTypeDef;

编译后,烧写fls文件到开发板里。然后板上连接如下图的连线,第一次将PA1直接接入地,此时ADC1输入电压应该为0.

图 2 ADC 测试接线图一

从串口收到实际的数据,如下:

图 3 ADC 测试PA1直接接地时输出的数值

可见数据基本上稳定在 -64mv,其中有个别数据出现偏差,不是因为ADC稳定性的问题,而是因为硬件接线,是把导线直接插而不是焊接在开发板的接口孔里,接触不稳定造成。

这里吐槽一下,既然提供开发板为何不附带送一下排针,排针不焊接可以理解,但是没有排针导致无法插入杜邦线使用,手边又没有排针,还不得不另外网购排针去。而购买排针的邮费又可以购买一块W806开发板了,晕!。

这个偏差测试几次后,它的读数基本是固定的值,那么就可以把它看成是初始的偏差,在后面的测量种进行修正即可,即测量的值减去这哥偏差。期间在几块W806都测试一下初始偏差值,发现不同的板子并不一样,初始偏差分别  -60mv ~ +50mv左右。

在测试完对地的初始偏差后,可以测量目标电压,这里拿一节新的5号电池做测试,电池正极接PA1,负极接板上的GND。此时可以从串口得到如下的数据:

图 4 ADC 测试PA1接5号电池时输出的数值

测试该电池直接读数为: 1576mv,根据前面的修正方法,减去初始偏差 -64mv.得到被测电压为:1576-(-64)=1640mv.

为做对比,使用三位半精度数字万用表电压档测试该5号电池,读数为1609mv。则可以算出,以此万用表为基准的误差率:

(1640-1609)/1609 x100% = 1.9%

图 5 使用万用表测量5号电池的数值

总结,本次简单的测试,初步的测试W806的ADC的电压测量效果,比较精确。因为没有精密调压电压,没有对个点的电压测量。但其它网友对其线性度进行过测量,并绘制了拟合线,从测量误差标准方差分析,其误差小于<5%。同时本次测试也没有对温漂进行测试,以及高频采样下的ADC的精度情况。但从一般的消费领域的应用场景来看,已经可以满足需求。

联盛德W806-KIT开发板试用评测系列之二:ADC 功能使用与测试相关推荐

  1. 联盛德W806最小系统开发板第一次上手准备工作

    W806 芯片 是一款安全 IoT MCU 芯片.芯片集成 32 位 CPU 处理器,内置 UART.GPIO.SPI.SDIO.I2C.I2S.PSRAM.7816.ADC.LCD.TouchSen ...

  2. 【联盛德W806上手笔记】一、开发环境和烧录程序

    目录 简介 芯片外观 MCU 特性 安全特性 低功耗模式 芯片结构 管脚定义 极限参数 开发环境 SDK的获取 从官网获取 从Q群获取 iosetting大佬 维护的wm-sdk-w806 打开工程 ...

  3. 【联盛德W806上手笔记】七、I2C

    目录 WM_SDK_W806_v0.6.0的库函数 函数 参数 宏 应用示例 初始化 使用 测试 I2C 控制器 功能概述 主要特性 功能描述 传输速率选择 中断及启动停止可控 快速输出及检测信号 寄 ...

  4. TB-02 Kit开发板及TB系列BLE蓝牙模块固件及天猫精灵三元组串口烧录工具操作方法说明及固件市场介绍(基于泰凌微TLSR8258芯片)

    摘要 这篇文章介绍如何通过烧录工具给TB系列蓝牙模块烧录固件及天猫精灵三元组,以及如何通过烧录工具的固件市场下载最新的固件及固件操作说明文档. 获取烧录工具 安信可团队针对TB系列蓝牙模块专门开发了烧 ...

  5. 联盛德W806入门教程-CDK安装教程及代码下烧录

    笔者使用的系统板如下图所示: 首先安装代码编译软件CDK: 硬件:⚫ W805/W806 开发板 ⚫ USB 转串口线 软件: Windows 端编译工具:CDK 安装包 链接:[https://pa ...

  6. 联盛德W806,W801刷固件步骤

    本文针对无基础玩家参考,如有不对的欢迎指正 1)需要准备物料 1.开发板801或806 2.CH340驱动 (USB转串口驱动) 3.烧入工具(官方首页-芯片-W800-开发工具- 4.PC端固件烧录 ...

  7. 【联盛德W806上手笔记】三、MCU系统与时钟结构

    目录 总线结构 AHB-1 总线 AHB-2 总线 时钟与复位 主要特性 时钟结构 功能描述 时钟门控 时钟自适应关断 功能复位 时钟分频 寄存器描述 寄存器列表 软件时钟门控使能寄存器 软件时钟掩码 ...

  8. 【联盛德W806上手笔记】五、TIM定时器

    目录 定时器 库函数 函数 参数 宏 Demo中的测试程序 main.c wm_hal_msp.c wm_it.c 实验现象 Windows 10 20H2 HLK-W806-V1.0-KIT WM_ ...

  9. 【联盛德W806上手笔记】二、GPIO

    目录 GPIO 控制器 库函数 函数 参数 宏 极限翻转速度 寄存器操作 库函数操作 测试 main.c wm_it.c Windows 10 20H2 HLK-W806-V1.0-KIT WM_SD ...

最新文章

  1. ubuntu 挂载 exfat 格式 U盘 mount:unknown filesystem type ‘exfat‘
  2. 2015年6月9日_诗词学习
  3. 安装 Go 第三方包 go-sqlite3
  4. 战神笔记本电脑自带access吗_书评:6本二次元小说,每一本都很有想象力,你都读过吗?...
  5. python 24位图转 8位_Python爬取PPT模板小工具下载-Python爬取PPT模板小工具免费版下载v1.0...
  6. Visual Studio中的第一个Django-Python应用程序
  7. STM8单片机读取18B20温度传感器
  8. 物联网给快递业带来新变革
  9. 如何使用ES6模块export,export default和import
  10. Julia: array =tuple, 与 ...
  11. 【原】oracle11g 客户端安装检测失败问题
  12. 卸载 Oracle 19c
  13. txt数据文件的读写操作
  14. Oracle中用sys用户登录
  15. ORACLE按照拼音,部首,笔画排序
  16. Unity:使用Catmull-Rom曲线创建道路模型
  17. 餐饮连锁公司IT信息化解决方案一
  18. 【资源共享】DaVinci Developer DaVinci Configurator Pro 加密狗复制
  19. 对标阿里p6 - 看看自己什么水平!
  20. 开篇语-如何学习新能源汽车技术

热门文章

  1. 曲阜水利学校计算机96级聚会,曲阜水利学校50年校庆
  2. ChatGPT进阶——如何辅助设计E-R图、流程图和时序图等
  3. 微商城支付开发(二)
  4. 百位红人助阵,如涵这场影响力盛典点亮夜钱塘
  5. IP和局域网 简单了解
  6. 大疆社招测开面经(一年经验,已通过)
  7. QT: 为自己的QT程序添加一个登录界面
  8. java工单管理系统_企业工单管理系统--使用mybatis
  9. 谈谈人的视觉特性与电视的关系
  10. 【java算法】排序算法大合集