STM32移植u8g2库(HAL库)(硬件SPI)(sh1106_128x64)

STM32移植u8g2库(HAL库)(硬件SPI)(sh1106_128x64)

MCU型号为STM32F103RCT6,OLED屏为中景园电子1.3寸屏,驱动芯片为sh1106,分辨率为128x64,MDK版本为V5.34。

在移植过程中主要参考了以下三篇文章,对作者的分享表示感谢。

第一个

第二个

第三个

首先移植的基础是已经通过cubeMX生成了HAL库版本的硬件SPI和GPIO初始化等需要的代码,具体生成的过程不赘述。

下载u8g2库

github地址

在这里即可下载最新版的库文件。下载好之后需要将src文件夹复制到自己的工程中去。

在这里插入图片描述

比如我就放在这里。

在这里插入图片描述

之后需要在MDK中添加自己需要的文件,因为u8g2为了兼容性提供了许许多多的驱动芯片代码,而我们只需要把自己需要的添加进工程就好了。现有的驱动IC为sh1106,因此就只需要找到这个芯片和分辨率的初始化代码添加就好了。但是SH1106的初始化代码并没有单独列出来,被放在了1306的文件中。

u8x8文件添加了针对1306的文件,而u8g2文件基本都添加了。以下是添加文件的截图,实际上机验证过可以运行的,可以给读者一个参考。

在这里插入图片描述

然后我们需要在自己的代码中添加两个头文件

#include "u8g2.h"
#include "u8x8.h"

然后就需要去找自己需要的初始化函数了,可以去u8g2.h文件中找。这些文件都是在u8g2_d_setup.c中定义的。

在这里插入图片描述

下边声明了大量的初始化函数,找到自己需要的

在这里插入图片描述

至于几个相似的函数可以参考其他文章中的说法:

  • u8g2_Setup_sh1106_128x64_noname_1

  • u8g2_Setup_sh1106_128x64_noname_2

  • u8g2_Setup_sh1106_128x64_noname_f

    使用的缓存大小不一样,f是等大的缓存,如128*64就是1024Byte。那2就是一半

我用哪个都可以正常显示。

因为我们在导入文件的时候是有选择性导入的,而在u8g2_d_setup.c中有很多各种IC的函数,会因为缺少文件而报错,因此需要把没用的函数全注释掉,只剩下选择好的函数。

参考其他文章还需要注释u8g2_d_memory.c文件中的无关函数,但是我不注释也是可以的。

移植的关键是自己编写接下来的几个函数。

如果用软件iic就需要用下面相应的iic初始化函数。但是用硬件的话就需要自己写一个函数来发送数据。

uint8_t u8x8_byte_4wire_hw_spi(u8x8_t 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值