- 打卡等级:以坛为家II
- 打卡总天数:493
- 最近打卡:2025-05-01 08:31:58
荣誉版主
- 积分
- 3476
|
发表于 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各有特点,本帖楼上都已有谈论,可以再阅读一下。
匆匆笔复,也许辞不达意,多包涵,仅供参考了。
|
|