联盛德W806-KIT开发板试用评测系列之一:开发环境搭建篇

                                                                                                           大信 QQ:8125036       

        刷抖音时,偶然蹦出了联盛德W806物联开发板这个广告。最近正在研究有关物联网传感与数据采集方面的问题,于是顺手买了几片开发板,看看这个开发板怎么样。

      看开发板介绍,W806是联盛德基于平头哥XT核推出的安全IoT MCU芯片是基于国产平头哥的“玄铁”核心开发,芯片集成 32 位 CPU 处理器,内置 UART、GPIO、SPI、SDIO、I2C、I2S、PSRAM、7816、ADC、LCD、Touch Sensor 等数字接口;支持 TEE 安全引擎,支持多种硬件加解密算法,内置 DSP、浮点运算单元与安全引擎,支持代码安全权限设置,内置 1MB Flash 存储器,支持固件加密存储、固件签名、安全调试、安全升级等多项安全措施,保证产品安全特性。高达240Mhz主频这也让人特别振奋。这些功能与性能将在智能电子、智能家居、智能玩具、工业物联场景中提供强有力的支持。

      物流很快第三天板子就到手。板子做的很精致,1毫米厚的板子,平滑的板边缘,亮紫色和镀金的过孔透露着高档品质,同时收到售后支持的加好友,在售后支持指导下加入了联盛德官方的开发群里,开始了W806开发测试工作。群里有开发板的电路资料,开发手册,SDK说明,接口说明灯,非常丰富。还有一群大牛人。

      W806开发使用的是平头哥的CDK开发工具,支持windows, linux下的开发环境。按开发说明分别安装 CDK 开发IDE,Upgrade_Tools下载工具,和一个USB的驱动。三步就完成了整个开发环境的安装,也不进行配置或设置什么的

CDK集成开发环境

      联盛德开放了这个板子的全部源码和移植上的开源RTOS操作系统,并且对所有设备都准备了例程,这为快速上手提供便利。第一次打开工程找工程文件费了不少时间,最后找到工程文件在 \WM_SDK_W806 \tools\W806\projects\SDK_Project\project\CDK_WS\W806_SDK 下,不知为何藏这么深。

         按硬件开发惯例第一个硬件的“Hello,World”就是测试点亮板上带的三颗LED灯,也是学习该开发板的GPIO操作方法,把demo目录下gpio例程,加入到app目录下,加入的时候问是否copy文件时,选择否即可。然后直接点编译,约4~5秒编译完成。

GPIO操作点亮LED的代码

       编译完成后,到项目根目录下把bin目录下的fls文件通过Upgrade_Tools下载到板子上。下载方法时,下载时点Upgrade_Tools软件的下载按钮后,再按一下板子上的reset键,才开始下载。下载完成后,再按一下reset键即开始运行。

Upgrade_Tools下载fls文件到板子上

运行点亮了LED灯

        可以看出CDK的开发是C语言,函数的操作跟STM32很相似,相信STM32开发的小伙伴上手会很快。

      总结,第一次上手W806开发板,基本很轻松顺畅。之前有说windwos下编译慢的问题,还想是否要创建linux开发环境,经过实际测试来看,windows选择完全编译一次项目功能也就4~5秒,当然后续随着工程内容增多,肯定编译时间会变长,但相比开发写代码的时间,这个基本可以忽略不计,推荐windows下开发完全满足需求,况且考虑以后增加其它调试器安装驱动方便,也推荐windwos下开发即可。

      整个开发过程正如官方广告所说1520开发效率,1天掌握开发环境,5天建立产品原型开发,20天完成产品初步开发。W806的开发还是比较容易的。

     也说一下过程中发现的问题,希望官方以后能够改进下:CDK开发界面没有中文,虽然考虑国际友人的使用,毕竟先照顾自家人是不是,中国空间站都用中文了,我们更应该首选用中文。开发的攻略教程网上比较少,这点也和这块开发板新出有关,以后估计会越来越多。开发资料有些混乱开发资料里很多W800系列的资料和W806放在一起,虽然是同一个核,但对于开发者也照成额外的困惑。

本人的windwos环境供开发者参考:

硬件:CPU Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz   2.20 GHz

内存:16G

硬盘:1T

操作系统:Win10, Virtual Studio 2019

版权声明:本文为CSDN博主「lutherluov」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lutherluov/article/details/121316014

联盛德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的精度情况。但从一般的消费领域的应用场景来看,已经可以满足需求。

版权声明:本文为CSDN博主「lutherluov」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lutherluov/article/details/121463746

生成海报
点赞 0

lutherluov

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

基于8051单片机实现电子时钟+数字秒表设计

概述 电子时钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显 示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许

基于Arduino的显示测量环境数据设计

题目: 基于Arduino的显示测量环境数据设计 目录 基于Arduino的显示测量环境数据设计... 3 第一章 课题任务... 4 1.1课题任务... 4 1.2任务分工... 4 1.3设计条件... 4 第

4pin oled字模,oled图片编码生成方法

在制作手工的时候,选用了一款4pin 的OLED单色显示屏,在取字模的时候遇到一些问题,特此做一下记录,对于也遇到这方面问题的朋友,也可以提供一些思路。 所选用的4pin