[XMG助力国产生态]
@XMGroupe.
本文介绍MC3172驱动SSD1306 OLED。
此驱动移植于STM32下的IIC驱动,对STM32工程中SSD1306OLED代码进行一些简单修改,完成OLED驱动。
修改内容:
1.更改IIC IO的初始化和控制函数;
void OLED_Gpio(void)
{
#ifdef OLED_ELOG
log_i("OLED Gpio Initing");
#endif
INTDEV_SET_CLK_RST(OLED_IOport,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV4));
GPIO_SET_OUTPUT_EN_VALUE(OLED_IOport,(OLED_Sclk|OLED_Sdin),GPIO_SET_ENABLE);
GPIO_SET_OUTPUT_PIN_TO_1(OLED_IOport,(OLED_Sclk|OLED_Sdin));
#ifdef OLED_ELOG
log_i("OLED Gpio Init OK");
#endif
}
#define OLED_IOport GPIOA_BASE_ADDR
#define OLED_Sclk GPIO_PIN14
#define OLED_Sdin GPIO_PIN15
#define OLED_SCLK_Clr() GPIO_SET_OUTPUT_PIN_TO_0(OLED_IOport,OLED_Sclk);
#define OLED_SCLK_Set() GPIO_SET_OUTPUT_PIN_TO_1(OLED_IOport,OLED_Sclk);
#define OLED_SDIN_Clr() GPIO_SET_OUTPUT_PIN_TO_0(OLED_IOport,OLED_Sdin);
#define OLED_SDIN_Set() GPIO_SET_OUTPUT_PIN_TO_1(OLED_IOport,OLED_Sdin);
2.根据MC3172的IO速度优化IIC的时许;
3.加入EasyLogger调试输出代码,其使能宏定义在oled.h文件中。
#define OLED_ELOG
驱动流程:
1.将OLED驱动文件(包括oled.c+oled.h+oledfont.h)加入到工程中;
2.在oled.h中修改对应的IO口
*注:此处默认为一组IO口,即CLK和SDA都是PAx,若采用两个不同组的IO,需要修改oled.h中的IO控制函数和oled.c中的初始化函数。
#define OLED_IOport GPIOA_BASE_ADDR
#define OLED_Sclk GPIO_PIN14
#define OLED_Sdin GPIO_PIN15
3.在线程中添加初始化代码
OLED_Init();
*程序只实现了一些基本的显示函数,其他显示功能与常规单片机一致,可以直接添加稍作修改后使用。
最终效果
离线
大佬真是高产啊
离线
最近闲散时间多,赶紧发一发
离线
2.4寸 12864 oled ssd1309驱动的可以用这个改出来吗?
离线
2.4寸 12864 oled ssd1309驱动的可以用这个改出来吗?
可以的
离线
优秀!晚点也去测试一下!
离线