锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

SPI 接口OLED 使用5V 信号驱动可能需要电平转换

时间:2023-09-15 02:07:02 cs1206低阻值电阻

这类OLED 一般使用模块I2C 此时,信号电平由5驱动V 好像也没什么问题,但是SPI 接口的OLED 使用5V 通常,信号电可能根本不工作。

模块电路

以这种SPI 接口模块例:

在这里插入图片描述

一般是叫做4 线SPI 加上接口VCCGND 和复位信号,一共就是7 如果模块内置了针RC 延迟电路,复位信号不能连接。SPI 只用了标准的三条线SCLK(SCK)MOSI(SDA),因为OLED 芯片不支持读取数据,只能输出,MISO 不接。在标准中SPI 接口以外,OLED 添加了一个芯片DCX 或者DC 信号,使用信号SPI 在传输数据时,选择传输数据或指令,以及1602 屏幕的RS 信号是一种功能。再加上片选信号CS,就是所谓的4 线SPI。

模块的电路原理图几乎是这样的:

四根可见SPI 无论是直接连接到芯片的数据线,SSD1306 芯片数据手册或模块手册没有提到这些数据引脚是否有5V 耐受能力。手册中只提到常规输入电压不超过电源电压,电源电压为3.3V,所以按理说应该没有5V 如果有耐受性,比如nrf24 芯片,它的手册会直接写出来,毕竟也是一个功能。

使用5V 电平驱动问题

供电电压是3.3V 不用提。使用5V 电平的I2C 驱动没有问题,因为I2C 开漏驱动,上拉能力弱,类似如下:

下拉能力强,上拉时5V 经过4.7k 上拉电阻,电流稍大一点就会降低,所以到模块的电压会降低。而SPI 接口不同。如果使用单片机硬件SPI 接口、信号输出引脚模式可能是推拉输出,高电平输出能力强,直接连接芯片的结果是5V 直接送到OLED 芯片引脚。实测结果是Arduino 用5V SPI 驱动OLED 模块时,模块3.3V 电源轨上升到接近3.9V,屏幕没有反应,显然是引脚上的5V 如下图所示:

许多芯片都有类似于这种结构的引脚保护电路当引脚输入电压高于电源电压时,上二极管导钳位置为5V 输入通过二极管和三极管.3V 电源接通。由于电源电压过高,屏幕无法工作,实测结果是OLED 模块电荷泵似乎有问题,电容器上没有升压。当然,在这种情况下OLED 芯片出了问题很正常。幸运的是,它没有燃烧。

电平转换

情况就是这样。这些信号引脚必须进行电平转换,这也很简单。因为它们是纯输出信号,直接用电阻分压就足够了。为了简化电路,我使用了两个电阻排列,只有四条线:

RN2 上输入5V 信号时,RN1 输出电压为3.333…V。因为分压需要两个电阻,比较麻烦,不用电阻分压也可以去除RN1,直接SPI 在引脚上串联限流电阻,限制其驱动能力,如果电阻值合适,也应凑合使用。

另外,我在面板上做了一个大的排试试,没问题。

除硬件方案外,还可以软化。考虑一下I2C 驱动没有问题的原因是单片机硬件SPI 推拉输出模式强制接口,驱动能力太强。因此可以使用软件SPI,接口模式设置为弱上拉模式,或任何上拉驱动能力较弱的模式,因此5V 信号输出到OLED 芯片被拉低,对3.3V 电源轨影响不大,OLED 模块能正常工作。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章