较好的基于 SPI 驱动的 OLED 入门文章
参考文章:
1.基于STM32+0.96寸OLED - - 7脚SPI接线显示+代码解析
链接:https://blog.csdn.net/qq_59527512/article/details/139471311
推荐理由:很好地讲解了 OLED 的基础知识——7脚OLED模块的引脚和 5 种接线方式(DS0/1/2)
我们的OLED屏幕选择的是SSD1306Z的芯片,是一个128*64大小的屏幕,屏幕的大小区分如图所示,X轴的范围是0-127,单位是列,Y轴的范围是0-63,单位是行,但是Y轴实际是按页区来分类的,实际上我们使用的范围是0-7,如图所示:
接线方式选择有五种:
I2C、6800、8080、4线SPI、3线SPI,通过BS0、BS1、BS2引脚接不同的电平来选择控制方式
如果选择4线SPI接线方式(实际上是7针,但是有三个可以不用),我们这三个引脚就要全部接地
2. OLED-SPI协议: 作者:J2124
链接:https://www.bilibili.com/read/cv27964885/ 出处:bilibili
推荐理由:很好地讲述了 OLED 4线 SPI 和3线 SPI 的区别,以及软件中的取模方式
SSD1306支持多种模式的协议,OLED模块已经在内部接好了,市面上常见的4脚是I2C协议,6引脚是4线SPI模块(片选引脚接地了),7引脚也是4线SPI协议。
4线spi如下图
3线spi如下图,3线spi采用三根线进行数据传输:scl,sda和cs,传输数据的时候,那如何知道传输的命令还是数据呢?
4线spi采用dc引脚控制传输的是命令(0)还是数据(1);3线spi通过sda引脚控制,在发送数据之前,先在sda上发送一个控制位,然后后发送数据。
从上图中可以看出,触发数据发送(向oled写入数据)的是上升沿,我们需要在低电平的时候准备数据,然后高电平发送出去。从图中SDIN(D1)可以看出,先要将DC引脚拉高(高电平)或者拉低(低电平),从数据手册中可以知道高电平是表示写入数据,低电平是表示写入命令。从符号也可以看出来D表示数据(DATA),C表示命令(Command),C#:有#表示低电平有效。
取模方式: