| 
				打卡等级:以坛为家III打卡总天数:657最近打卡:2025-10-31 08:27:32   荣誉版主 
 
	积分4469 
 | 
 
 发表于 2024-7-28 11:30:25
|
显示全部楼层 
| 今日抽空,写上几句: 
 看到很多SPI/IIC驱动oled视频,但是基本通篇都在讲oled相关函数,没有一个讲到oled和spi的关联的,
 若讲oled和spi的关联,其实也是在讲oled相关函数。
 
 本贴的实验是基于七针OLED显示屏,其实就是在讲与SPI相关的驱动函数。
 
 
 
 OLED(12864)显示屏,市面上常见有七针和四针两种,无论是哪种,总要有接口让上位机(单片机MCU)能够去控制驱动它的。
 这接口就体现了它是用怎样的通讯协议了:
 四针接口是:GND VCC SCL SDA,
 除了GND地线、VCC电源线,就是SCL时钟线和SDA数据线,两根线通讯,显然是用IIC通讯协议的。
 而本实验所用的屏是七针接口:
 //   1.GND ------- 地线
 //   2.VCC ------- 电源 3.3-5V
 //   3.SCK -- P2.5 时钟端
 //   4.SDA -- P2.3 数据端 (MOSI)
 //   5.RES -- P2.4 复位端
 //   6.DC  -- P3.4 数据/命令切换
 //   7.CS  -- P1.1 片选端
 除了GND地线、VCC电源线、SCL时钟线、和SDA数据线,还有DC(数据/命令)线,CS片选线, RES复位线。
 这让人想到的是:它不是一般的IIC接口了,那么是什么接口呢?
 
 
 屏内部的主控芯片是SSD1306,其实SSD1306本身是可支持串、并口通讯,包括IIC和SPI等多种接口模式的。
 我们所看到的屏是经过厂家二次开发,增加了转接板的显示屏模块,同时也就局限了它的接口类型。
 看它对外的接口引脚不多,显然它不会是并行通讯接口了,那只能是串口通讯接口了。
 再对照标准SPI通讯协议接口:
 (1)MOSI – 主器件数据输出,从器件数据输入
 (2)MISO – 主器件数据输入,从器件数据输出
 (3)SCLK – 时钟信号,由主器件产生
 (4)NSS  – 从器件使能信号,也有标注为CS(片选)
 与此七针屏模块接口大部分对应覆盖,基本上可认为是SPI的接口屏了。
 无论是什么接口,总是要让上位机(单片机MCU)能够去控制驱动它的。
 那么首先,最重要的就是要了解屏模块的通讯时序了。
 任何屏模块的手册,总要给出接口通讯的时序图的。
 从显示屏的立场说,无论用什么样的上位机(单片机MCU),只要接口通讯时序符合屏模块的时序要求,都可以控制显示。
 
 
 那么:
 可否认为不管是硬件spi模块和软件spi,都不需要有特别的代码去初始化它?
 应该是:不管是硬件spi模块和软件spi,都需要用符合屏模块时序要求的特殊的代码去初始化它。
 
 直接定义几个io口后就能直接进行oled相关操作了?
 是的。这是仅指软件模拟SPI方式。
 
 而且这io口也可以随便定义?
 是的,只要能控制IO端口电平输出输入的,就可以随便定义。这是指软件模拟SPI方式。
 硬件SPI方式不可以随便定义,需要查看MCU手册,其中规定了可切换使用的IO端口。
 
 用哪几个io驱动屏幕都可以?
 是的,只要能控制IO端口电平输出输入的,都可以。这是指软件模拟SPI方式。
 硬件SPI方式不可以随便用,需要查看MCU手册,其中规定了可切换使用的IO端口。
 
 可是看手册还是有专门的spi引脚。
 这个“手册”应该是指单片机MCU的手册吧? 而不是指OLED屏的手册。
 这就与MCU的资源有关了,当然STC32G12K128很强大,是具有专门的SPI引脚的。
 也就是说,STC32G12K128具有硬件SPI接口功能。你可以选用它,也可以不用它。
 
 这spi资源和要驱动的oled屏幕到底有什么联系?
 笼统地说,可以说没有必然关系,也可以说有关系,就是这么个关系。
 硬件SPI资源是对与SPI设备而言的,不是独对OLED屏的,它可以对接具有SPI接口的存储器,也可以对接具有SPI接口的显示屏。
 如果OLED屏模块具有SPI接口,就可以用硬件SPI方式控制它显示,如果OLED屏模块没有SPI接口,就无法用硬件SPI方式控制它显示。
 再回到具体本帖实验来说,这OLED屏模块是具有SPI接口的,这STC32G也具有SPI资源的,
 那么,就是有可能实现用硬件SPI方式来控制OLED屏的显示了。
 当然也可以不用它! 为了便于移植,可直接用软件模拟SPI方式,不用查MCU手册资料,牺牲一点速度,如果可以接受的话。
 
 
 在所有的代码里都看不出来有联系!
 应该能看出来的,尤其是在写命令、写数据字节的函数中,这些代码正是在执行符合OLED屏时序图所要求的操作。
 
 简直看的一头雾水,能否帮忙解答一下,谢谢!
 希望能拨开迷雾见青天。不用谢的,互相学习交流,是一件快乐的事,很乐意。
 
 
 关于硬件SPI与软件模拟SPI各有特点,本帖楼上都已有谈论,可以再阅读一下。
 
 
 匆匆笔复,也许辞不达意,多包涵,仅供参考了。
 
 
 
 
 | 
 |