【开箱】
敏矽微 ME32G070 开发板使用 ME32G070RBT6 芯片
基于 ARM Cortex M0 内核,主频 72M,Flash 128K,RAM 12K
片上资源已经足够满足很多应用
美中不足的是缺少 USB,SDIO,RGB,DVP,ETH 等接口,但是 M0 系列芯片定位入门,基本都没有这些外设
这款开发板包装精致,设置也很合理

【板载资源介绍】
板载 用户KEYx2、USB转串口x1、WS2812全彩LED灯x8
【开发工具和环境】
支持 Keil、IAR 开发工具
使用 Keil 需要安装 pack 包,然后使用敏矽微官方提供的 Library 就可以进行开发了
官方也提供了很多示例工程供参考,觉得麻烦可以直接拷贝一个工程修改下就能开发需要的功能了
由于是 ARM 内核,可以使用 J-LINK、DAP-LINK、ST-LINK 等众多调试工具
【点灯】
官方提供了点灯例程,路径在 \led pb10,直接编译就可以使用了
硬件连接如下:

值得注意的是,跟 STM32 等芯片不同,敏矽微单片机 GPIO 配置引脚方式有很大差异,官方代码如下:

配置引脚输出:PB->DIR_b.DIR10 = 0x1;
配置引脚输入:PB->DIR_b.DIR10 = 0x0;
配置引脚取反:PB->NOT_b.NOT10 = 0x1;
配置引脚高电平:PB->SET_b.SET10 = 0x1;
配置引脚低电平:PB->CLR_b.CLR10 = 0x1;
【点亮OLED显示屏】
敏矽微 ME32G070 支持硬件 I2C,这里偷个懒,不想使用繁琐的跳线,直接在开发板上随意插入 OLED 显示屏的引脚,如下:

直接插上 OLED 显示屏即可

由于 PB6、PB4 不是 I2C 引脚,这里使用 IO 模拟 I2C 通信,PC10、PB8 设置为高电平和低电平输出,给 OLED 屏供电
驱动代码如下:
void OLED_SSD1306_Init(void)
{
u8 i;
OLED_SSD1306_IIC_Init();
for (i=0; i<sizeof(OLED_SSD1306_CONFIG_TABLE); i++)
{
OLED_SSD1306_W_CMD(OLED_SSD1306_CONFIG_TABLE[i]);
}
}
void OLED_SSD1306_CLEAR(u8 color)
{
u8 i;
for(i=0; i<8; i++)
{
OLED_SSD1306_SetXY(0, i);
OLED_SSD1306_FillnB(color, 128);
}
}
void OLED_SSD1306_Draw(void* buf, u8 x, u8 page, u8 w, u8 h)
{
u8 i, *img;
img = buf;
for(i=0; i<(h>>3); i++)
{
OLED_SSD1306_SetXY(x, (u8)(page+i));
OLED_SSD1306_WritenB(0x40, img, w);
img+=w;
}
}
【动态OLED显示屏】
驱动 OLED 只是应用的第一步,很多场景下,需要显示屏有不同的动态效果,例如显示动态波形,图像
这里开辟一块 10K 的缓存给 OLED 进行绘制使用,1K 也是够的,但是敏矽微 ME32G070 资源这么丰富,使劲狠狠浪费
设计一个内存分配代码来动态申请内存:

设计一个图像管理代码来管理图像信息:

设计一个画布操作代码,来绘制图形:

然后调用这些函数进行绘制:

效果视频如下: