GD32VW553-IOT 使用 iic 的 OLED 屏幕
分享作者:user202505087040
评测品牌:萤火工场
评测型号:GD32VW553-IOT
发布时间:2025-07-25 13:08:42
3 1
前言
开源口碑分享内容
一、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