文章目录

  • 沁恒MCU介绍
  • 概述
  • 系统框图
  • 概述
  • 涂鸦IOT平台开发流程
  • 创建产品
  • 硬件调试
  • MounRiver_Studio创建工程并移植SDK
  • MRS创建MCU工程
  • 移植程序
  • 实物展示



沁恒MCU介绍

概述

CH32V103系列是以RISC-V3A处理器为核心的32位通用微控制器,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。

系统框图

沁恒mesh程序_mcu

概述

RISC-V3A处理器,最高80MHz系统主频;
支持单周期乘法和硬件除法;
20KB SRAM,64KB CodeFlash;
供电范围:2.7V ~ 5.5V,GPIO同步供电电压;
多种低功耗模式:睡眠/停止/待机;
上电/断电复位(POR/PDR);
可编程电压监测器(PVD);
7通道DMA控制器;
16路TouchKey通道监测;
16路12位ADC转换通道;
7个定时器;
1个USB2.0主机/设备接口(全速和低速);
2个IIC接口(支持SMBus/PMBus);
3个USART接口;
2个SPI接口(支持Master和Slave模式);
51个I/O口,所有的I/O口都可以映射到16个外部中断;
CRC计算单元,96位芯片唯一ID;
串行单线调试(SWD)接口;
封装形式:LQFP64M、LQFP48、QFN48。

涂鸦IOT平台开发流程

MCU SDK 是用户在涂鸦 IoT 开发平台定义的产品功能,然后自动生成的 MCU 代码。目前主要支持的MCU有STM32、51单片机、Arduino。为了减少用户使用涂鸦模组的开发时间,MCU SDK 已经自带通讯及协议解析架构。将 MCU SDK 添加至自己的工程并配置相关信息后,既可以快速的完成 MCU 程序开发。

创建产品

点击创建产品

沁恒mesh程序_IT_02

涂鸦三明治 Wi-Fi MCU 通信板(WBR3)是方便开发者快速实现各种智能硬件产品原型的一款开发板。您可通过 涂鸦三明治 Wi-Fi MCU 通信板(WBR3),搭配其他功能电路模组或电路板,实现对应的功能。

这里我以照明类目中的光源为例。产品方案选择自定义方案,点击 “光源” 框后,通讯协议选择 WiFi,产品名称根据自己需求填写。

沁恒mesh程序_mcu_03


沁恒mesh程序_stm32_04


这些基本的配置跟着流程走就好了。

硬件调试

沁恒mesh程序_stm32_05


这里的PID很重要在后面的移植中会用到,然后云端对接方式选择涂鸦标准模组MCU SDK开发。

沁恒mesh程序_IT_06


点击下载将MCU SDK下载到电脑上等会儿移植到MCU中使用。其他几个用于单个模块调试的也可以下载下来,方便调试。

MounRiver_Studio创建工程并移植SDK

MRS创建MCU工程

沁恒mesh程序_IT_07

点击file->new->MounRiver Project然后写好项目名、文件路径、芯片型号和工程模板(也可以不用模板)电finish工程就创建好了。

将刚刚在涂鸦平台下载的MCU SDK复制进来,并在MRS里添加路径。

沁恒mesh程序_IT_08


这里先点左上角那四个方形的按钮。

沁恒mesh程序_stm32_09

到这里项目工程就创建好了,下面开始编写程序。

移植程序

WBR3模组是通过串口通信的,先写一下串口有关的程序,这里我用的串口1。

void USART_Printf_Init(uint32_t baudrate)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  USART_InitTypeDef USART_InitStructure;
  NVIC_InitTypeDef NVIC_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
    USART_InitStructure.USART_BaudRate = baudrate;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_1;
  USART_InitStructure.USART_Parity = USART_Parity_No;
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStructure.USART_Mode = USART_Mode_Tx|USART_Mode_Rx;
  NVIC_Init(&NVIC_InitStruct);
  NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
  USART_Init(USART1, &USART_InitStructure);
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
  USART_Cmd(USART1, ENABLE);
  }
  __attribute__((interrupt("WCH-Interrupt-fast")))
void USART1_IRQHandler(void)
{
    if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
    {
        USART_ClearITPendingBit(USART1, USART_IT_RXNE);
    }
}

在初始化部分和while循环内添加相应函数,里边的内容可以根据自己需要修改。

沁恒mesh程序_IT_10


串口发送函数像这样添加在这里,两行必须都写,不然没有效果。

沁恒mesh程序_物联网_11


开启一个定时器中断(注意添加硬件压栈)在里面添加相应函数。

沁恒mesh程序_mcu_12


还有一些根据官方库里的提示操作就可以,这样基本就完成了,最后再用涂鸦云测App进行自动配网就可以使用了,然后还有几个重要的函数也说一下。

沁恒mesh程序_沁恒mesh程序_13


这个函数是对下发数据的处理。

沁恒mesh程序_IT_14


这个函数是进行数据上报的。

实物展示

沁恒mesh程序_IT_15


沁恒MCU+涂鸦模组的完美结合。

沁恒mesh程序_IT_16


涂鸦官网自定义的面板,实现远程控制。