GD32VW553-IOT 使用 iic 的 OLED 屏幕
分享作者:user202505087040
评测品牌:萤火工场
评测型号:GD32VW553-IOT
发布时间:2025-07-25 13:08:42
1
前言
GD32VW553-IOT 通过 iic 协议驱动的 OLED 屏幕
开源口碑分享内容

一、GD32简介

GD32VW553-IOT搭载兆易创新(GigaDevice)的GD32VW553系列MCU,型号GD32VW553KMQ7/QFN40封装。

采用RISC-V内核,主频高达160MHz,支持DSP硬件加速和双精度浮点单元(FPU)。

集成了Wi-Fi 6(IEEE 802.11ax)和 蓝牙5.2(BLE) 双模无线模块。具有4MB片上Flash和320KB SRAM。

支持硬件加密(AES/DES/TRNG)、公钥加密(PKCAU)及WPA3安全协议。

工作电压1.8V–3.6V,支持-40°C至105°C宽温范围。

有1个USART、2个UART、2个I2C、1个SPI、1个QSPI。有9通道12位ADC。还有2个16位通用定时器、2个32位通用定时器、1个16位高级定时器、1个基础定时器,以及RTC实时时钟。


二、引脚图

GD32VW553-IOT不足之处所以没有引脚丝印,找引脚比较麻烦。

GD32VW553-IOT引脚图如下:


三、开发环境搭建 & 新建工程 & 下载程序

可以看一下这篇测评分享: https://www.iceasy.com/review/1947966297914925058


四、相关代码


出处声明:移植自江科大stm32的0.96寸oled屏幕驱动oled-v2.0

/*
* oled.h

*/

#ifndef INC_OLED_H_
#define INC_OLED_H_

#include "gd32vw55x.h"


#define SSD1306_WIDTH 128
#define SSD1306_HEIGHT 64
#define SSD1306_I2C_ADDR 0x78 // SSD1306 I2C 地址

// **I2C 软件引脚定义**
#define OLED_I2C_SCL_PORT GPIOA
#define OLED_I2C_SCL_PIN GPIO_PIN_0
#define OLED_I2C_SDA_PORT GPIOA
#define OLED_I2C_SDA_PIN GPIO_PIN_1

// **GPIO 控制宏**
#define I2C_SCL_HIGH() gpio_bit_set(OLED_I2C_SCL_PORT, OLED_I2C_SCL_PIN)
#define I2C_SCL_LOW() gpio_bit_reset(OLED_I2C_SCL_PORT, OLED_I2C_SCL_PIN)
#define I2C_SDA_HIGH() gpio_bit_set(OLED_I2C_SDA_PORT, OLED_I2C_SDA_PIN)
#define I2C_SDA_LOW() gpio_bit_reset(OLED_I2C_SDA_PORT, OLED_I2C_SDA_PIN)
#define I2C_SDA_READ() gpio_input_bit_get(OLED_I2C_SDA_PORT, OLED_I2C_SDA_PIN)

// **初始化**
void ssd1306_init(void);
void ssd1306_clear(void);
void ssd1306_display_on(void);
void ssd1306_display_off(void);
void ssd1306_update_screen(void);

// **绘图**
void ssd1306_draw_pixel(uint8_t x, uint8_t y, uint8_t color);
void ssd1306_draw_char(uint8_t x, uint8_t y, char ch);
void ssd1306_draw_string(uint8_t x, uint8_t y, const char* str);


#endif /* INC_OLED_H_ */
void OLED_W_SCL(uint8_t BitValue)

{

/*根据BitValue的值,将SCL置高电平或者低电平*/



gpio_write_bit(GPIOB, GPIO_PIN_3, BitValue);


}



void OLED_W_SDA(uint8_t BitValue)

{

/*根据BitValue的值,将SDA置高电平或者低电平*/


gpio_write_bit(GPIOB, GPIO_PIN_4, BitValue);


}



void OLED_GPIO_Init(void)

{

uint32_t i, j;


/*在初始化前,加入适量延时,待OLED供电稳定*/

for (i = 0; i < 1000; i ++)

{

for (j = 0; j < 1000; j ++);

}

/*将SCL和SDA引脚初始化为开漏模式*/

rcu_periph_clock_enable(RCU_GPIOB);

gpio_mode_set(GPIOB, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_3|GPIO_PIN_4);

gpio_output_options_set(GPIOB, GPIO_OTYPE_OD, GPIO_OSPEED_MAX, GPIO_PIN_3|GPIO_PIN_4);

/*释放SCL和SDA*/

OLED_W_SCL(1);

OLED_W_SDA(1);

}


全部评论
暂无评论
0/144