第一次看到有自带有硬64线程的MCU,这比什么intel的多线程,多核心处理,不更实际一些来处理多任务吗,比FPGA开发起来也更加快速便捷啊.
板子到手以后,赶紧打开看看
image.png

image.png

开发板比较小巧简单,正面就是主芯片MC3172了,基于RISC-V RV32IMC 指令集,100%单周期指令,最高200MHz主频,3.37coremark/MHz,比Cortex-M0+的STM32G0系列的2.46CoreMark/Mhz要略高一些。但是M0+系列的主频就要低很多了。所以这颗RISC-V的芯片性能还是毋庸置疑的,背面有一颗CH554G单片机作为下载工具。背面还有一颗普冉的P25Q40H 低功耗SPI Flash以及一颗48Mhz的无源晶体.
随板还贴心附了小纸条,给了官网链接和QQ支持群,官网:http://www.gxchip.cn/,资料可以在官网下载,官网做的比较简单,整个官网只有MC3172的芯片,所以你也不用担心会下错资料,下载下来的都是正确的,官方推荐了一个基于eclipse修改而来的开发工具:MounRiver Studio来进行代码开发。
image.png


开发板原理图和PCB开源在立创EDA:传送门
Schematic_MC3172最小系统_2022-11-13.png

image.png

看原理图,SPIflash是给调试器单片机CH554G用的,最小系统板就只使用了电源、晶体、调试口以及一组串口PA0(RX)、PA1(TX),其余的IO都毫无保留的引出到了排针上,真·极简最小系统.
MC3172的资料主要托管在gitee上:https://gitee.com/gxchip,上面包含了四个仓库,涵盖了代码生成器、代码生成器、工程模板以及板载调试器CH554G的固件,我看了一下其他的几个都只是源码,还没有安装包release出来,我们这里主要下载工程模板程序就可以了。其他的工具包可以去官网的下载链接里下载。ps提个建议,后续的文件还是托管到git上比较好,直接在git上释放安装包,管理和下载都比较方便一点。
image.png


安装好开发环境以后,打开软件,选择文件/导入,
image.png

在常规选项中选择导入现有项目到工作空间中
image.png

选中后选择完成即可。
gitee上的例程没有放置下载工具在目录下,需要手动把官网例程里的工具拷贝进来,我是因为官网下载的文档乱码,所以使用了git版本的工程
首先打开工程目录,进到MC3172目录下,打开线程配置工具
image.png

我不清楚为什么我的工具,点击生成代码以后弹出窗口是没有信息的,但是应该不影响使用。
打开左侧的USER_CODE文件夹,就可以发现main.c入口文件
打开发现下面还有个例程文件,里面涵括了GPIO、串口、SPI、以及两种定时器的使用示例,多线程的优势在这里就体现出来了,你完全可以选择同时打开这几个例程而不会冲突。只需要把它放在不同的线程树下面就可以了,这里挑选最简单的GPIO和UART例程进行测试
首先取消第10行的包含注释
// #include "./GPIO_GPCOM_TIMER_Example.c"
使能例程函数文件
然后打开线程0和线程1函数下的GPIO函数和UART函数,
在官网的资料包中有一份极简开发指南的文档,里面有对GPIO各函数的讲解,
1.需要启动相关外设,设置外设的时钟频率以及特权组
2.打开GPIO的输入输出使能;
3.给具体的IO赋电平或者获取对应IO的电平值;
对串口的操作同样也需要首先进行对相关GPIO的操作,
1.打开时钟;
2.设置输入输出;
3.串口还需要设置COM口的通讯模式,
GPCOM_SET_COM_MODE(gpcom_sel,GPCOM_UART_MODE);这里串口选GPCOM_UART_MODE模式,
如果是SPI则是:
GPCOM_SET_COM_MODE(gpcom_sel,(GPCOM_SPI_MASTER_MODE3|GPCOM_TX_MSB_FIRST|GPCOM_RX_MSB_FIRST));
4.UART时钟频率、波特率的设置:
GPCOM_SET_COM_SPEED(gpcom_sel,12000000,115200);
5.串口的GPIO映射
GPCOM_SET_OVERRIDE_GPIO(gpcom_sel, ( GPCOM_P2_OVERRIDE_GPIO|GPCOM_P2_INPUT_ENABLE | GPCOM_P3_OVERRIDE_GPIO));

6.数据的处理发送和接收函数
rx_data_rp=GPCOM_GET_RX_WP(GPCOM3_BASE_ADDR);//这个宏用于读取当前 RX 的缓存 FIFO 写指针。
rx_data=GPCOM_GET_RX_DATA(GPCOM3_BASE_ADDR,rx_data_rp);//这个宏用于读取当前 RX 的缓存 FIFO 读指针 rx_data_rp 指向的数据。
GPCOM_TX_FIFO_FULL(GPCOM3_BASE_ADDR);//这个宏用于检查 TX 的发射缓存是否已满。
GPCOM_TX_FIFO_EMPTY(GPCOM_SEL);//这个宏用于检查 TX 的发射缓存是否已空。
GPCOM_PUSH_TX_DATA(GPCOM3_BASE_ADDR,tx_data);//这个宏用于把 tx_data 送入 TX 发射缓存(TX 的发射缓存一共有 8 层,可以一次性送 8 个字节,非常高效)。
了解了这些基础操作以后,就可以选择Ctrl+B或者屏幕上点击全部构建按钮进行编译
image.png

可以看出来编辑还是很顺利的.
因为单片机目前还不支持调试器,所以需要外部的下载工具进行固件的下载,外部下载工具在Release目录下,打开以后链接设备,并选择同名目录下生成的hex文件
MC3172.hex
image.png

点击查询可以看到找到了设备
点击烧录即可烧录固件
image.png

这是烧录成功的画面