本帖最后由 gtbestom 于 2024-12-18 15:01 编辑
【开箱】
极海 G32A1465 开发板使用 G32A1465UAT0MLL 芯片
基于 ARM Cortex M4F 内核,主频 112M,Flash 1M,RAM 128K
片上资源已经足够满足很多应用
美中不足的是缺少 USB,SDIO,RGB,DVP,ETH 等接口,但是作为一个车规控制芯片,这些场景很少使用
这款开发板包装精致,设置也很合理
【板载资源介绍】
板载 电位计x1、RGB三色灯x1、用户KEYx2、CAN收发器x1、LIN收发器x1、USB转串口x1
【开发工具和环境】
支持 Keil、IAR 开发工具
使用 Keil 需要安装 pack 包,然后使用极海官方提供的 Library 就可以进行开发了
官方也提供了很多示例工程供参考,觉得麻烦可以直接拷贝一个工程修改下就能开发需要的功能了
由于是 ARM 内核,可以使用 J-LINK、DAP-LINK、ST-LINK 等众多调试工具
【点灯】
官方提供了点灯例程,路径在 \G32A1xxx_SDK_V1.1\Examples\G32A1465\PINS\PINS_Led
直接编译就可以使用了,
硬件连接如下:
值得注意的是,跟 STM32 等芯片不同,极海单片机 GPIO 每组引脚不止 0~15,而是支持 0~17 个引脚
配置引脚方式也有很大差异,官方代码如下:
【点亮OLED显示屏】
极海 G32A1465 支持硬件 I2C,这里偷个懒,不想使用繁琐的跳线,直接在开发板上找到了适合直接接 OLED 显示屏的引脚,如下:
直接插上 OLED 显示屏即可
由于 PA12、PA13 不是 I2C 引脚,这里使用 IO 模拟 I2C 通信
需要注意的是,极海 G32A1465 模拟引脚不支持开漏输出,设置输出时是推挽输出,所以在 I2C 模拟通信中,需要切换 IO 输入输出状态
设置为输出 PINS_SetPinDir(GPIOA, 13, 1U);
设置为输入 PINS_SetPinDir(GPIOA, 13, 0U);
其他跟普通单片机 IO 口驱动没有区别
驱动代码如下:
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 也是够的,但是极海 G32A1465 资源这么丰富,使劲狠狠浪费
设计一个内存分配代码来动态申请内存:
设计一个图像管理代码来管理图像信息:
设计一个画布操作代码,来绘制图形:
然后调用这些函数进行绘制:
效果视频如下:
|