W806 基于Arduino开发的GPIO操作示例,勇于尝新

一、写在前面

w806为联盛德公司推出一款基于平头哥(XT-E804)架构的MCU。
这里自己随便入手一个W806芯片的开发板,淘宝现如今有很多在售的,笔者找了个最便宜的入手的。现如今W806已支持Arduino开发,总还是有人愿意为了简化放了方便而努力的。来体验一下吧!!! (觉得废话的直接跳到 二、环境准备)

1. W806芯片参数:

封装QFN56, 6mm x 6mm, pin间距0.35mm

2. MCU 特性:
  • 集成 32 位 XT804 处理器,工作频率 240MHz,内置 DSP、浮点运算单元与安全引擎
  • 内置 1MB Flash,288KB RAM
  • 集成 PSRAM 接口,支持最高 64MB 外置 PSRAM 存储器
  • 集成 6 路 UART 高速接口
  • 集成 4 路 16 比特 ADC,最高采样率 1KHz
  • 集成 1 个高速 SPI 接口(从接口),支持最高 50MHz
  • 集成一个主/从 SPI 接口
  • 集成 1 个 SDIO_HOST 接口,支持 SDIO2.0、SDHC、MMC4.2
  • 集成 1 个 SDIO_DEVICE,支持 SDIO2.0,最高吞吐率 200Mbps
  • 集成 1 个 I2C 控制器
  • 集成 GPIO 控制器,最多支持 44 个 GPIO
  • 集成 5 路 PWM 接口
  • 集成 1 路 Duplex I2S 控制器
  • 集成 LCD 控制器,支持 4x32 接口
  • 集成 1 个 7816 接口
  • 集成 15 个 Touch Sensor
3. 供电:
  • 3.3V 单电源供电
  • 支持工作、睡眠、待机、关机工作模式
  • 待机功耗小于 10uA

二、环境准备,添加支持包

没有Arduino环境的安装Arduino IDE,浏览器自行下载(或文末提供链接)无论是新版还是旧版均可,无所谓。最重要的是添加W80X的支持包,这里是我在GitHub上找到的一个开源项目,基于Hi-Link(海凌科)开发生产的开发板由此nulllab空想实验室团队 维护。个人标识对他们的支持哈,希望能够一直维护下去。
好了进入正题,进入Arduino IDE操作如下:

  1. 菜单栏:文件 -> 首选项’

  2. 在附加开发板管理器网址输入如下网址:
    https://cdn.jsdelivr.net/gh/Hi-LinkDuino/w80x_arduino/package_w80x_proxy_index.json
    如果这个不行请使用这个链接地址:
    https://cdn.jsdelivr.net/gh/Hi-LinkDuino/w80x_arduino/package_w80x_index.json
    在这里插入图片描述

  3. 菜单栏:工具->开发板->开发板管理 搜索 w80x_duino ,选择最新版本安装(如果搜索不到,请安装arduino IDE1.8.15以上)
    在这里插入图片描述

  4. 安装后就可以在这里看到了即代表w80x_duino开发环境搭建完成

三、打开永恒的LED测试

同样是在工具->选择好对应的开发板,然后在文件-> 示例中找到对应的示例打开demo即可。
在这里插入图片描述
由于老版本的Arduino没有输入提示且无法查看头文件等笔者安装了ArduinoIDE 2.0版本 ,故再查看库函数及宏定义时发现GPIO操作与STM32库函数比较相似,且以HAL库方式来处理,故轻松上手并在此处加了个串口打印,调用状态翻转函数实现闪灯。

/***************************************************
 *  W806_LED GPIO初始化
 *************************************************/
void GPIO_Init(void) {
  // GPIO_InitTypeDef GPIO_InitStruct = { 0 };    //例程里的写法,以下写法也可以的类似STM32
  GPIO_InitTypeDef GPIO_InitStruct;
  GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2, GPIO_PIN_SET);
}

void setup() {
  // put your setup code here, to run once:
  printf("Led Demo \r\n");
  GPIO_Init();
}

void loop() {
  // put your main code here, to run repeatedly:
  printf("LED_Tog...\r\n");
  HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);  //LED0状态翻转
  HAL_Delay(500);
}

烧录程序时需要注意自己的开发板是否支持一键烧录,也就是说使用串口芯片是否有该电路设计,笔者使用的板子其串口芯片为CH340N,并不支持一键烧录电路,故需要在下载程序前 按住BOOT键的同时按下复位键,然后再将按键松开使芯片进入下载模式。

四、总结

通过示例程序来看,该团队基于Arduino的W806开发支持,其底层如CDK一致,在函数封装上保持一个调调,学过HAL库开发STM32的朋友也非常容易上手。在这里插入图片描述

如图为Arduino W806支持文件中的一些头文件,和CDK中对比其文件内容 也是一致的。
下面是通过Arduino IDE 2.0查看到的程序入口代码:

#include <stdio.h>
#include <arduino.h>
#include "wm_hal.h"

void Error_Handler(void);

int main(void)
{
#if (F_CPU == 240000000)
    uint32_t f_cpu_dir = (uint32_t)CPU_CLK_240M;
#elif (F_CPU == 80000000)
    uint32_t f_cpu_dir = (uint32_t)CPU_CLK_80M;
#elif (F_CUP == 4000000)
    uint32_t f_cpu_dir = (uint32_t)CPU_CLK_40M;
#elif (F_CUP == 2000000)
    uint32_t f_cpu_dir = (uint32_t)CPU_CLK_2M;
#else
    uint32_t f_cpu_dir = CPU_CLK_160M;
#endif

    SystemClock_Config(f_cpu_dir);
    init();
    setup();

    for (;;) {
        loop();
    }
    return 0;
}

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

其实不论用什么IDE都只是工具,只不过有的工具用起来顺手方便,有的工具即使功能强大但不够便捷舒适,经此区别而已。

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Guard_Byte

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值