一、引言
上周末收到沁恒官方寄过来的CH585M-R1开发板,今天来分享一下,完成开箱以及环境搭建,并进行点灯入门操作。
CH585是集成BLE无线通讯和高速USB及NFC的RISC-V MCU/SoC。片上集成了2Mbps低功耗蓝牙BLE通讯模块、USB全速控制器及收发器、USB高速控制器及收发器(480Mbps)、NFC近场通信无线接口、段式LCD驱动模块、LED点阵屏接口、2个SPI、4个串口、14路ADC、触摸按键检测模块等丰富的外设资源。CH585评估板配有以下资源:
①. 开关 S1 :供电开关,用于切断或连接外部5V供电或USB供电。
②. 按键 RESET :复位按键,用于外部手动复位(注意需要开启芯片手动复位功能)。
③. 按键 DOWNLOAD :下载按键,在 ISP 下载时使用。
④. 两个USB 接口:主芯片的USB 通讯接口:一个高速USB;一个全速USB,具有Host 和Device功能。
⑤. 插排P2/P3:包括芯片功能、电源、LED灯负载操作引脚。
⑥. NFC和BLE天线:负责无线信号的传输。
二、资料分享
关于该板的SDK包,我们可以通过沁恒官网获取,用户跳转:https://www.wch.cn/products/CH585.html获取CH585的开发资料。当然包括数据手册,以及官网提供的IDE:MounRiver Studio(MRS)。软件包CH585EVT.ZIP中的PUB目录下也包含了该开发板的原理图。
*附件:CH585DS1.PDF
*附件:CH585SCH.pdf
*附件:CH585评估板说明书.pdf
*附件:蓝牙芯片的电路及PCB设计的重要注意事项.pdf
三、实物开箱
开发板采用防静电袋包装,板子天线射频部分电路占板空间比较大,整块板子采用PCB天线,布局设置合理。



板子尺寸59mm x 105mm, 背面没有设计其它小元器件,PCB走线清晰,过孔连线非常规范、合理。
四、环境搭建
首先是安装“MounRiver Studio”开发工具,最好是最新版本的,笔者使用的是v1.92版。其界面构造与Eclipse相似,用起来也比较顺手;其次需要准备好“CH585EVT.ZIP”资料包,并解压到一个无中文字符的简短路径下;最后需要准备ISP下载工具,用户可通过链接:WCHISPTool_Setup.exe获取。同样也建议更新到最新版本,笔者这里采用的是v3.70。
准备好上述工作后,进入到“\EVT\EXAM\LED”目录下,直接双击打开“LED.wvproj”文件,然后点击编译图标,即完成工程编译。
五、代码编写
根据PUB文件夹下的“CH585SCH”原理图可知,板上的LED0、LED1的管脚分布,这里笔者自备了一块RGB灯板,与板上的逻辑电平刚好相反,板上的LED0、LED1是低电平有效,而RGB灯板的逻辑是高电平有效。

这里用到PA0、PA1、PA2、PA3、PA5即对应LED0~LED4,在LED工程中的main.c中编写如下:
#include "CH58x_common.h"
#include "ch58x_drv_ledc.h"
void RGB_Led_Contol(uint8_t color)
{
switch(color)
{
case 0:
GPIOA_SetBits(GPIO_Pin_2);
GPIOA_ResetBits(GPIO_Pin_3);
GPIOA_ResetBits(GPIO_Pin_5);
break;
case 1:
GPIOA_ResetBits(GPIO_Pin_2);
GPIOA_SetBits(GPIO_Pin_3);
GPIOA_ResetBits(GPIO_Pin_5);
break;
case 2:
GPIOA_ResetBits(GPIO_Pin_2);
GPIOA_ResetBits(GPIO_Pin_3);
GPIOA_SetBits(GPIO_Pin_5);
break;
case 3:
GPIOA_SetBits(GPIO_Pin_2);
GPIOA_SetBits(GPIO_Pin_3);
GPIOA_SetBits(GPIO_Pin_5);
break;
default:
GPIOA_ResetBits(GPIO_Pin_2);
GPIOA_ResetBits(GPIO_Pin_3);
GPIOA_ResetBits(GPIO_Pin_5);
break;
}
}
int main()
{
HSECFG_Capacitance(HSECap_18p);
SetSysClock(CLK_SOURCE_HSE_PLL_62_4MHz);
GPIOA_ModeCfg( GPIO_Pin_0, GPIO_ModeOut_PP_5mA );
GPIOA_ModeCfg( GPIO_Pin_1, GPIO_ModeOut_PP_5mA );
GPIOA_ModeCfg( GPIO_Pin_2, GPIO_ModeOut_PP_5mA );
GPIOA_ModeCfg( GPIO_Pin_3, GPIO_ModeOut_PP_5mA );
GPIOA_ModeCfg( GPIO_Pin_5 , GPIO_ModeOut_PP_5mA );
while(1)
{
GPIOA_ResetBits(GPIO_Pin_0);
GPIOA_SetBits(GPIO_Pin_1);
DelayMs(100);
GPIOA_SetBits(GPIO_Pin_0);
GPIOA_ResetBits(GPIO_Pin_1);
DelayMs(100);
GPIOA_ResetBits(GPIO_Pin_0);
GPIOA_SetBits(GPIO_Pin_1);
DelayMs(100);
GPIOA_SetBits(GPIO_Pin_0);
GPIOA_SetBits(GPIO_Pin_1);
RGB_Led_Contol(0);
DelayMs(300);
RGB_Led_Contol(1);
DelayMs(300);
RGB_Led_Contol(2);
DelayMs(300);
RGB_Led_Contol(3);
DelayMs(300);
}
}
MounRiver Studio中编译ok,即在LED工程文件夹下的“obj”文件夹下生成编译后的“LED.hex”文件。

六、硬件连接
硬件接口实物连线如下图所示:

板上的LED0、LED1是悬空在板上的,需要自行使用杜邦线将P2排针上的LED0与PA0、LED1与PA1相连接。再者需要采用ISP下载hex文件,因此需要将PB22管脚与GND短接(在没有上电前短接后,再上电,此时ISP功能才能正常识别到下载接口)。

按照《CH585评估板说明书.pdf》操作,自动搜索到下载接口,加载编译后生成的hex文件,点击“下载”即可完成程序更新。

七、点灯效果
程序更新完后,板子自动断开ISP下载工具,更新后的闪灯效果正如程序中所设定的。