W801 ADC功能,基于CDK Demo以及Arduino平台测试

news2024/11/26 11:41:38

W801 ADC功能,基于CDK Demo以及Arduino平台测试


  • 🌼W801开发板(HLK-W801 详细资料见:https://h.hlktech.com/Mobile/download/fdetail/170.html
    在这里插入图片描述

📓W801 ADC简介

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

  • 🌿ADC引脚映射关系
#define A0	PA1
#define A1	PA4
#define A2	PA3
#define A4	PA2
  • 📐电压测量范围:10mV ~ 2.3V(特别注意!!!
    • 📜参考《W801芯片设计指导书V3.1.pdf》中 ADC 电路设计说明:
  • 📋芯片 19~21 脚可以作为普通 ADC 使用,输入电压范围 10mV ~2.3V。当高于 2.3V 时外部需做分压处理后才可进入 ADC 接口。为提高精度,R1 和 R2 需使用高精度电阻。根据 Sensor 输出电压值选择合适的R1,R2 电阻值分压。如图:
    在这里插入图片描述

📝基于CDK平台的ADC Demo

  • 📍W801 SDK Demo资料下载地址:https://h.hlktech.com/Mobile/download/fdetail/170.html
    在这里插入图片描述
    在这里插入图片描述
  • 📖ADC Demo内容,在源代码基础上添加了ADC4个采样通道。
/***************************************************************************** 
* 
* File Name : wm_adc_demo.c 
* 
* Description: adc demo function 
* 
* Copyright (c) 2014 Winner Micro Electronic Design Co., Ltd. 
* All rights reserved. 
* 
* Author : dave
* 
* Date : 2014-8-18
*****************************************************************************/ 
#include "wm_include.h"
#include "wm_adc.h"
#include "wm_gpio_afsel.h"


#if DEMO_ADC

int adc_input_voltage_demo()
{
	u8 chan =0;
	int voltage =0;
for(;chan<4;chan++)//全部读一遍各个ADC通道的值
{
	if (chan <= 1)
	{
    	wm_adc_config(chan);
	}
	else if (chan == 8 )
	{
    	wm_adc_config(0);		
    	wm_adc_config(1);				
	}
    voltage = adc_get_inputVolt(chan);
	if (voltage < 0)
	{
		voltage = 0 - voltage;
		printf("chan:%d, -%d(mV) or -%d.%03d(V)\r\n", chan, voltage, voltage/1000, voltage%1000);
	}
	else
	{
		printf("chan:%d, %d(mV) or %d.%03d(V)\r\n", chan, voltage, voltage/1000, voltage%1000);	
	}
}  
    return 0;
}


int adc_chip_temperature_demo(void)
{
    char temperature[8] = {0};
    int temp;
    
    temp = adc_temp();
	if (temp < 0)
	{
		temp = 0 - temp;
    	sprintf(temperature, "-%d.%03d", temp/1000, temp%1000);
	}
	else
	{
    	sprintf(temperature, "%d.%03d", temp/1000, temp%1000);	
	}
    printf("tem: %s\r\n", temperature);
    
    return 0;
}


int adc_power_voltage_demo(void)
{
	int voltage =0;

    voltage = adc_get_interVolt();
	printf("Power voltage:%d(mV) or %d.%03d(V)\r\n",voltage, voltage/1000, voltage%1000);	
    
    return 0;
}

#endif


  • 🌿烧录程序后,打开串口监视器:显示ADC Demo测试菜单
    在这里插入图片描述
  • 🌿最好还是不要使用烧录软件集成的串口调试功能进行测试,发命令没有起到作用。
  • 🌿通道电压测试。(测试命令:t-adcvolt
    在这里插入图片描述
  • 芯片温度测试。(测试命令:t-adctemp
    在这里插入图片描述

✨这个温度有点高,手指轻轻触压在芯片上,确实有点烫手,又没有带散热片的。

  • 🌿ADC电压电压测量。(测试命令:t-adcpower
    在这里插入图片描述

📗Arduino 平台代码

📌基于board707/w80x_arduino固件平台:https://kgithub.com/board707/w80x_arduino

/*
   W801 ADC引脚映射关系:
   #define A0 PA1
  #define A1  PA4
  #define A2  PA3
  #define A4  PA2
W801:4x ADC(16 位,1KHz 采样率)

*/

#include "Arduino.h"

#define led PB5
static volatile bool led_flag = 0;
float volt = 0;
double value;

void setup()
{
  Serial.begin(115200);
  Serial.printf("ADC Demo\r\n");
  pinMode(led, OUTPUT);//W801 :LED_BUILTIN_1 - LED_BUILTIN_7
  pinMode(A2, ANALOG_INPUT);//PA3引脚
}


void loop()
{

  value = analogRead(A2);
 volt = 2.3 * value / 2337; //MAX电压:2.3V --> MAX:2337,
  Serial.printf("ADC value: [%.2f]->Volt:%.2fV \r\n", value, volt); 
  digitalWrite(led, led_flag);
  led_flag = !led_flag;
  delay (1000);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/780621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为eNSP:ospf的配置

一、拓扑图 二、路由器的配置 1、路由器依据规划配置接口IP AR1: <Huawei>system-view [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 10.10.10.1 24 [Huawei-GigabitEthernet0/0/0]qu AR2: <Huawei>system-view [Huawei]int g0/0/0 [Huawei-Gi…

sql:是否在时间段内

判断给定时间是否在区间内&#xff0c;由于结束时间可能为空&#xff0c;若为空表示长期&#xff1b;希望在 end_date 可以延长180天作为最终的 end_date -- okAND ((ic.price_end_date is null and ic.price_start_date < 2022-01-22) or (ic.price_end_date is not null …

C++ GDAL找出多时相遥感影像缺失的日期并自动生成新的全零图像作为替补

本文介绍基于C 语言的GDAL库&#xff0c;基于一个存储大量遥感影像的文件夹&#xff0c;依据每一景遥感影像的文件名中表示日期的那个字段&#xff0c;找出这些遥感影像中缺失的成像日期&#xff0c;并新生成多个像元值全部为0的栅格文件&#xff0c;作为这些缺失日期当日的遥感…

PHP8知识详解:PHP语言优势

PHP起源于自由软件&#xff0c;并且得到了不断的迭代更新&#xff0c;在web开发领域独领风骚&#xff0c;得到了广大使用者的喜爱&#xff0c;PHP作为一款优秀的脚本语言&#xff0c;具有以下优势&#xff1a; 1、源码开源&#xff1a;所有的PHP源代码&#xff0c;你都能从PHP官…

HTTP 什么样的响应才会被缓存

下面来讨论什么样的响应会被缓存&#xff0c;以及使用好已经缓存好的条件是什么。 缓存分为两步&#xff0c;首先将响应缓存下来&#xff0c;第二步将要发起一个请求的时候检查当前缓存是否可以使用缓存了的响应。 (1) 请求方法可以被缓存理解&#xff08;不只于 GET 方法&…

【游戏行业部】反外挂技术的革新:如何有效应对 FPS 外挂的威胁

FPS 游戏外挂现状和泛滥原因 在线多人的 FPS 游戏是实时性要求最高的游戏类型之一。在这种游戏中&#xff0c;玩家的一瞬间判断和反应能力会直接决定胜负。然而&#xff0c;网络延迟和实时加载的问题经常会导致游戏卡顿&#xff0c;这会极大地影响玩家的游戏体验。为了解决这个…

Java-WebSocket

请点击下面工程名称&#xff0c;跳转到代码的仓库页面&#xff0c;将工程 下载下来 Demo Code 里有详细的注释 TestWebSocket

解读Lawyer LLaMA,延申专业领域大模型微调:数据集构建,模型训练

解读Lawyer LLaMA&#xff0c;延申自己领域大模型微调&#xff1a;数据集构建&#xff0c;模型训练 项目地址link 自己领域的大模型微调&#xff0c;实现思路大都和这篇文章是一样的&#xff0c;有的是基于LLaMA,或者有的是基于Chinese-LLaMA,或者是其他开源的大模型&#xf…

对话网心科技李浩| 携“边缘云+AI”之势,深入拓展算力业务场景落地

// 以ChatGPT为代表的人工智能的应用正加快改变人们的生活和工作方式&#xff0c;各种AI的应用引发了新一轮的音视频内容的生产力革命。而伴随着海量的音视频内容的生成&#xff0c;大量的内容会在边侧创建和存储&#xff0c;并在边端完成计算和分发。网心科技持续专注边缘云…

【论文阅读】2020ECCV-DFDNet

Blind Face Restoration via Deep Multi-scale Component Dictionaries 中文&#xff1a;基于深度多尺度分量字典的盲人脸复原 paper&#xff1a; code&#xff1a;https://github.com/csxmli2016/DFDNet 摘要&#xff1a; 近年来&#xff0c;基于参考的人脸恢复方法因其在真…

windows系统修改mysql8配置文件,关闭ssl验证

如何寻找配置文件 我的电脑&#xff0c;右键&#xff0c;管理&#xff0c;服务 找到MySQL8 右键&#xff0c;属性 找到配置文件位置 通常情况下的默认路径是&#xff1a; C:\ProgramData\MySQL\MySQL Server 8.0\my.ini 如何关闭SSL验证 打开 my.ini 配置内容如下&#x…

JAVA基础-集合的工具类Collections

目录 引言 一&#xff0c;Collections工具类的操作方法方法 1&#xff0c;排序操作 2&#xff0c;替换 和 查找操作 二&#xff0c;Collections工具类的使用 2.1&#xff0c;排序操作 2.1.1&#xff0c;集合的逆序 2.1.2&#xff0c;集合的随机排序 2.1.3&#xff0c;集…

第一百一十三天学习记录:C++提高:类模板(黑马教学视频)

类模板 类模板语法 类模板作用&#xff1a; 建立一个通用类&#xff0c;类中的成员 数据类型可以不具体定制&#xff0c;用一个虚拟的类型来代表。 语法&#xff1a; template<typename T> 类解释&#xff1a; template … 声明创建模板 typename … 表面其后面的符号…

SpringCloud nacos 集成 gateway ,实现动态路由

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

LeetCode刷题笔记 - 859. 亲密字符串

LeetCode刷题笔记 - 859. 亲密字符串 运行结果 题目注意点 bool buddyStrings(char* s, char* goal) {char d 0;char gd 0;int pair 0;int epair 0;char map[256] {0};if (strlen(s) ! strlen(goal)) {return false;}while (*s ! \0) {if (*s ! *goal) {if (d 0) {d *s;…

《Kali渗透基础》09. 漏洞利用、后渗透

kali渗透 1&#xff1a;漏洞基本介绍1.1&#xff1a;漏洞从哪里来1.2&#xff1a;缓冲区溢出1.3&#xff1a;如何发现漏洞 2&#xff1a;漏洞利用2.1&#xff1a;EXP 选择与修改2.2&#xff1a;避免有害的 EXP 3&#xff1a;后渗透阶段3.1&#xff1a;Linux 上传文件3.2&#x…

前后端分离windows本地nginx解决跨域

下载 http://nginx.org/en/download.html 命令 启动Nginx&#xff1a; nginx.exe start 快速停止或关闭Nginx&#xff1a; nginx.exe -s stop 正常停止或关闭Nginx&#xff1a; nginx.exe -s quit 配置文件修改重装载命令&#xff1a; nginx.exe -s reload 强制停用…

六边形架构

六边形架构 微服务系统架构微服务定义微服务系统设计 传统分层架构六边形架构参考资料 微服务系统架构 需求描述做什么的问题&#xff0c;架构描述怎么做的问题(描述组成系统的各部件及其之间的关系) 微服务定义 下面的定义来自周志明老师的 凤凰架构 微服务是一种通过多个小型…

2023牛客暑期多校第一场部分题解

索引 BCDHJKLM B 官方题解说是乱搞题&#xff0c;而我队友实际上也确实乱搞过去了&#xff08; 就是先随便取两个点&#xff0c;有了两个点之后第三个点肯定选离这两个点构成的直线最远的那个&#xff0c;要不然没法包含整个凸多边形。这个过程可以用个三分。 但是确定了第三…

前端(八)——深入探索前端框架中的Diff算法:优化视图更新与性能提升

&#x1f60a;博主&#xff1a;小猫娃来啦 &#x1f60a;文章核心&#xff1a;深入探索前端框架中的Diff算法&#xff1a;优化视图更新与性能提升 文章目录 前端框架中的Diff算法概述vue和react框架的diff算法React的diff算法&#xff1a;Vue的diff算法&#xff1a; Diff算法在…