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

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);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于W801单片机的智能手机充电器是一种能够更加智能化管理和保护手机充电的设计方案。这款充电器采用了W801单片机作为主控芯片,通过其强大的计算和控制能力,实现了多种功能和优化。 首先,基于W801单片机的充电器可以根据手机电池的容量和电压等信息,智能调节充电电流和电压。通过与手机之间的通信,充电器可以了解手机电池的具体状态,并根据需要进行快速充电或是低电流充电,以达到最佳充电效果,同时避免过度充电对手机电池的损害。 其次,充电器还具备安全保护功能。例如,基于W801单片机的充电器可以实现过充保护,当手机电池充满后自动停止充电,避免过度充电导致手机电池损坏。另外,充电器还可以监测电流和电压的异常情况,一旦发现异常即刻停止充电,确保手机充电安全。 此外,基于W801单片机的充电器还可以具备智能管理功能。它可以通过内置的计时器功能,记录手机充电时间和充电历史,帮助用户了解充电习惯和充电特点。同时,它还可以与用户的手机APP进行连接,实现远程控制和监测。用户可以通过手机APP查看充电器状态、调整充电参数等。 综上所述,基于W801单片机的智能手机充电器设计具备智能调节充电电流和电压、安全保护功能以及智能管理等特点,能够更好地满足用户对手机充电的需求,提供更加智能和安全的充电体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值