[研电赛技术支持] 求助,关于GD32F330的Embeded Builder IDE的I2C驱动OLED屏幕问题

[复制链接]
 楼主| 势能跃迁 发表于 2025-5-21 03:33 | 显示全部楼层 |阅读模式
我的OLED型号是SSD1306,我一开始使用STM32的软件I2C移植过来,发现屏幕点不亮,于是打算手写一个硬件I2C,我引脚初始化如下图: 23653682cb3f503e58.png 9959682cb4cc83713.png 在生成的代码中,我在用户函数部分中添加了两段代码:
60052682cb897435f9.png
作用是使能i2c0和ack,我参考的是stm32的OLED函数
56735682cc52691fd3.png
我新建了一个函数封装起来,我调用hal_i2c_master_transmit_poll(i2c_dev, tx_buffer, 2, 500);往OLED的引脚(PB6 PB7对应)地址(0xA0)写数据0x55,我已经重映射printf到串口1
5416682cd70583d1c.png
就这么多,然后在main函数调用,用AIn1烧录
80232682cd790b0ca8.png

43208682cd755b4391.png

然而我复位了几次,串口输出全是 -5和-2,即超时和上锁
35280682cd827090b0.png 61982682cd884ee2f3.png
所以我想问问,GD32F330有没有SSD1306的OLED的hal库的驱动呢?或者我应该怎么配置i2c函数?

37033682cd67616949.png
53411682cd82819a8a.png
 楼主| 势能跃迁 发表于 2025-5-21 06:13 | 显示全部楼层

我用STM32写了一个类似的程序,指定地址后,i2c状态位是可以通信的

bd22c57ed50b618ac06f927c0d665be8.png

而我用gd的逻辑写了一个,发现返回-5,即超时,是我哪里没有理解对嘛

f095e57dbc400e17efd1eeed436b9c70.png

image.png

您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

2

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部