LCD12864和SPI的那些事

LCD模块结构

组成:LCM(玻璃)、背光、PCB板,且LCM是核心。

引脚:LCD模块的引脚分为两类:接口通信(控制)引脚(6800、8080、SPI等)+功能性控制引脚。

我们来查看一款LCD模块支持哪些接口

比如这一款,支持4线SPI、IIC串口、6800或8080并口

关于LCD模块接口

简单来看一看这些接口:

  • SPI是四线串口,串口:串行接口,意味着少量引脚实现串行通信。

  • 6800总线即moto总线,8080总线即Inter总线,二者皆为并行接口,实现并行通信。

    并行就意味着对于单片机留出的引脚里必须有8个引脚是和LCD12864通信的数据口
    原理图上直观的体现为:


    6800和8080二者的详细详细区别去这里看:
    https://wenku.baidu.com/view/a8c98600cc1755270722083e.html

四线SPI

不管是0.96寸的oled12864还是lcd12864,SPI通信是家常便饭

SPI(Serial Peripheral Interface - 同步外设接口),用于短距离通信(主要是嵌入式系统中)的同步串行通信接口规范

多个SPI设备可以通过全双工的模式同单一的Master以主、从结构进行通信。(一个SPI主机、多个SPI从机通信)

本文主要记录单主机、单从机且单相通信(MCU->OLED/LCD)

SPI引脚

SPI总线定义了4个逻辑信号:

  • SCLK: 串行时钟(由设备输出).
  • MOSI: 主输出、从输入(由设备输出).
  • MISO: 主输入、从输出(由设备输出).
  • SS: 从设备选中(低有效, 由设备输出).

即一个SPI设备,当我是主机,我需要有3个管脚是用来发送信号,1个管脚接受信号;当我是从机时,需要3个引脚来接受信号,仅1个引脚来输出信号。

进一步来说。对于单向通信(MCU->OLED/LCD)的这样的设备(单主机、单/多从机,多主机不讨论)来说,SPI通信只需要3根线,即省去了MISO

SPI端口管脚的名字也有其它的叫法,不同的芯片公司叫法不同,比如:

  • 串行输出: SCLK : SCK, CLK.
  • 主输出 –> 从输入: MOSI : SIMO, SDI(对于“从”设备), DI, DIN, SI, MTST.(Matster、Slaver)
  • 主输入 ←- 从输出: MISO : SOMI, SDO (对于“从”设备), DO, DOUT, SO, MRSR.
  • 从选择: SS : nCS, CS, CSB, CSN, EN, nSS, STE, SYNC.

LCD/OLED引脚

这里的引脚以SPI串口和模块本身的一些引脚做简单介绍

4线还是3线?甚至2线?

由上一节可知,在LCD/OLED上来看SPI接口引脚(3根线)的话(前提是你得支持),比如这一款LCD的数据手册,既支持串口也支持并口的LCD(LCD厂家复用了引脚)

从上面的图来看,你会意识到红色的框框才是真正意义上的“SPI通信与控制线”,蓝色的圆圈的“数据/命令选择引脚”本质上是针对OLED/LCD本身设计的,用来确定往OLED/LCD本身的寄存器里写的是数据还是指令,细细品你会发现厂商真的机智,还极大地便利了开发者。(我是这样想的)

同样的,再看一款OLED

到这里,你因该明白所谓的四线SPI在LCD/OLED引脚上指的并不是时钟线、数据线、片选线和数据/命令控制线,别把自己弄糊涂了。

在这三线之中,等级最低的就是片选线,对于简单的开发,甚至完全需要MCU进行控制,直接硬件设计时就对引脚拉低,这下MCU又空出了一个引脚,真的是快乐。

具体的引脚

引脚的名字真的是百花齐放

  • SPI三引脚(上文已记述):SCK(SCL,CLK,D0),SDA(D1),CS(找不到CS引脚不要奇怪)

  • 数据/命令控制引脚

LCD/OLED都有一个数据/命令寄存器控制引脚:DC、RS、A0,但你该明白他们都是同一种引脚。

  • 复位引脚(低-高-低完成启动,启动后才工作,也就是初始化)RES:仔细品,CS和RES还是有点像的,但CS可以省,RES不可以省,这一点你会明白的。(初始化和暂停工作的区别,初始化是开机(关机重启),暂停工作时屏保,你可以经常屏保然后继续工作,但重启开机你试试)
    • 其他的引脚(比如LCD有而OLED没有的背光引脚,其他通信引脚)

用SPI驱动OLED程序实现

略,有机会补充

【下次编辑点】