文章目录
- 沁恒MCU介绍
- 概述
- 系统框图
- 概述
- 涂鸦IOT平台开发流程
- 创建产品
- 硬件调试
- MounRiver_Studio创建工程并移植SDK
- MRS创建MCU工程
- 移植程序
- 实物展示
沁恒MCU介绍
概述
CH32V103系列是以RISC-V3A处理器为核心的32位通用微控制器,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。
系统框图
概述
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 程序开发。
创建产品
点击创建产品
涂鸦三明治 Wi-Fi MCU 通信板(WBR3)是方便开发者快速实现各种智能硬件产品原型的一款开发板。您可通过 涂鸦三明治 Wi-Fi MCU 通信板(WBR3),搭配其他功能电路模组或电路板,实现对应的功能。
这里我以照明类目中的光源为例。产品方案选择自定义方案,点击 “光源” 框后,通讯协议选择 WiFi,产品名称根据自己需求填写。
这些基本的配置跟着流程走就好了。
硬件调试
这里的PID很重要在后面的移植中会用到,然后云端对接方式选择涂鸦标准模组MCU SDK开发。
点击下载将MCU SDK下载到电脑上等会儿移植到MCU中使用。其他几个用于单个模块调试的也可以下载下来,方便调试。
MounRiver_Studio创建工程并移植SDK
MRS创建MCU工程
点击file->new->MounRiver Project然后写好项目名、文件路径、芯片型号和工程模板(也可以不用模板)电finish工程就创建好了。
将刚刚在涂鸦平台下载的MCU SDK复制进来,并在MRS里添加路径。
这里先点左上角那四个方形的按钮。
到这里项目工程就创建好了,下面开始编写程序。
移植程序
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循环内添加相应函数,里边的内容可以根据自己需要修改。
串口发送函数像这样添加在这里,两行必须都写,不然没有效果。
开启一个定时器中断(注意添加硬件压栈)在里面添加相应函数。
还有一些根据官方库里的提示操作就可以,这样基本就完成了,最后再用涂鸦云测App进行自动配网就可以使用了,然后还有几个重要的函数也说一下。
这个函数是对下发数据的处理。
这个函数是进行数据上报的。
实物展示
沁恒MCU+涂鸦模组的完美结合。
涂鸦官网自定义的面板,实现远程控制。