关于SPI_OLED
SPI通信主要有2线、3线、4线等,标准四线包括:SSEL(片选,也叫做SCS)、SCLK(时钟,也叫做SCK)、MOSI(主机输出从机输入MasterOutput SlaveInput)和MISO(主机输入从机输出)。
在SPI通信模式的OLED上,有七根线,分别是:GND、VCC、D0、D1、RES、DC、CS,这四根线分别为:
PIN | Description |
---|---|
GND | 地 |
VCC | 电源(3.3V) |
D0 | CLK时钟线 |
D1 | MOSI数据线 |
RES | 复位(可以直接接到MCU的RESET或者直接接高) |
DC | 数据/命令 |
CS | 片选(如果只有一片的情况下可以直接拉低或者悬空) |
需要注意的是其中没有MISO,因为屏幕一般不需要去读取数据,而是直接显示,同时也确定了SPI通信不需要等待应答。
关于IIC和SPI刷新率
在使用IIC通信的OLED时,显示进度条发现需要150ms左右,而使用SPI通信的OLED显示进度条只需要70ms左右,SPI通信差不多是IIC通信的两倍速度。
关于硬件SPI和软件SPI刷新率
硬件即使用微控制器内部的硬件外设来实现SPI通信,而软件SPI即通过CPU控制引脚输出高低电平模拟SPI时序通信,区别:
硬件SPI:
- 高效性:使用了专门的SPI硬件模块,数据传输更快延迟更低
- 占用CPU资源少:不需要CPU干涉
- 简单的接口调用:标准库中提供了SPI的相关API函数
- 可靠性:具有更好的信号完整性和抗干扰能力
软件SPI:
- 灵活性:可以使用任意GPIO引脚,不会被硬件SPI固定的GPIO所局限
- 可配置性:可以通过软件自由设置SPI总线的频率和时序,适配不同设备的需求
- 资源占用高:需要CPU干涉,可能会导致CPU负担加重
- 实现复杂:需要编写SPI时序函数
经过测试,同样是刷新进度条,软件SPI需要70ms左右,而硬件SPI则达到了惊人的10us左右!直接快了70000/10=7000倍,而且这还是在没有加DMA的情况下,所以目前够用就不考虑在加DMA了。