这类OLED 模块一般都用I2C 驱动,此时信号电平用5V 好像也没什么问题,但是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 输入会经过一个二极管和3.3V 电源接通。由于电源电压过高,屏幕不能工作,实测的结果是OLED 模块的电荷泵好像出了问题,电容上没有升压。当然这种情况下OLED 芯片出什么问题都很正常,好在并没有烧了。

电平转换

情况就是这么个情况,这几个信号引脚必须做一下电平转换,也很简单,因为是纯输出的信号,直接用电阻分压就够了,为了简化电路,我用的是两个排阻,刚好四根线:

RN2 上输入5V 信号时,RN1 的输出电压是3.333…V。因为分压要用两个排阻,比较麻烦,也可以不用电阻分压,去掉RN1,直接SPI 引脚上串联限流电阻,限制它的驱动能力,阻值合适的话应该也凑合能用。

另外做了个大号排阻在面板上试了一下,没有问题。

除了硬件方案,也可以来软的。考虑一下I2C 驱动没问题的原因,就是单片机硬件SPI 接口强制使用推挽输出模式,驱动能力太强了。所以可以用软件SPI,接口模式设置为弱上拉,或者随便什么上拉驱动能力很弱的模式,这样一来5V 信号输出到OLED 芯片时被拉低,对3.3V 电源轨影响不大,OLED 模块能正常工作。

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

  1. SPI 接口OLED 模块 - 兼容5V 和3.3V 电平

    PCB 布局参考了老王0.8元128x32OLED显示屏转接板,开源项目地址:老王0.8元128x32OLED. 老王家买的屏幕放了快一年了,终于还是决定整个单独的模块,之前一直打算集成到开发板上的, ...

  2. 基于STM32F103ZET6主控平台实现(SPI接口)OLED液晶屏驱动

    一个热爱代码的工程师,唯有凭借双手不断敲打,才可以快速提升实力! 本文谨以记录,日后相忘时再作复习,代码没有贵贱,既来之则安之. OLED液晶屏产品图和效果图 由上图我们知道:OLED液晶屏分别有GN ...

  3. NanoPi NEO Air使用十二:使用自带的fbtft驱动点亮SPI接口TFT屏幕,ST7789V

    上节自己编写spi驱动来点亮spi接口的小屏幕,其实Linux内核里已经提供spi接口小屏的设备驱动,即内核中已经自带了此类驱动,名字为fbtft.本节就来使用它. 引脚 240x240分辨率,1.3 ...

  4. 非标准语法;请使用 _一文读懂使用MCU SPI访问具有非标准SPI接口ADC的方法

    好文章当然要分享啦~如果您喜欢这篇文章,请联系后台添加白名单,欢迎转载哟~ 问题 能否用MCU访问非标准SPI接口? 答案 可以,但可能需要做一些额外的努力. 当前许多精密模数转换器(ADC)具有串行 ...

  5. 3.3V和5V双向电平转换电路

    " 当我们使用3.3V单片机(STM32系列)和5V的器件通信时(IIC设备),电平转换就势在必行了" 01 经典电平转换电路 1.1.这是一款经典的电平转换电路,该电路的核心是一 ...

  6. 3.3与5V 电平转换

    1.简介 现在大多数的MCU基本都是3.3V供电,而外围器件依旧存在一些5V供电的,两者之间的通信不可避免的需要电平之间的转换. 2.电路设计 这里介绍一个可以实现两个电平的相互转换的电路,网上相关的 ...

  7. STM32基于SPI接口的OLED数据显示

    文章目录 一.SPI简介 1.1 什么是SPI 1.2 SPI原理 1.3 SPI的连接方式 1.4 协议层 二.OLED 2.1 OLED原理 2.2 点阵编码原理与显示 三.OLED显示实验 3. ...

  8. STM32开发基于SPI接口的OLED数据显示

    文章目录 一.SPI简介 二.0.96inch SPI OLED 介绍 三.实验内容及结果 1. 任务要求 2. 准备工作 3. 演示如下 四.参考 一.SPI简介 SPI,是英语Serial Per ...

  9. NanoPi NEO Air使用十三:使用自带的fbtft驱动点亮SPI接口TFT屏幕,ST7789V,模块加载的方式

    上节使用fbtft来驱动SPI接口TFT屏幕,但是是编译进内核的方式. 本节再来测试下编译成模块的用法. 引脚 240x240分辨率,1.3寸,主控为ST7789VW. 与开发板的引脚连接确定如下: ...

  10. 个人项目 免费开源 基于STM32F103的oled示波器,频谱fft adc电压采集 spi接口0.96寸oled

    @基于stm32的adc检测波形 0.96oled显示(spi/iic)移植gui库(开源). 使用标准库开发,未使用dsp官方库. adc采集到电压并且在oled上显示. 支持0-3.3v电压采集显 ...

最新文章

  1. DEDE 字符串操作常见问题
  2. shell从oracle中获取变量,shell 如何读取环境变量的值
  3. 【今日CV 计算机视觉论文速览】Wed, 27 Mar 2019
  4. 【es】es 分布式一致性原理剖析(二)-Meta篇
  5. 职业生涯(一)——你就是自己想要成为的那个人!
  6. python 文本颜色设置
  7. shell卸载 simatic_西门子软件在WIN7操作系统中安装步骤和须知
  8. php json转数组示例,php json转数组的例子
  9. 【大数据处理技术】实验7(推荐林子雨老师的教程)
  10. IAR 中的 Fatal Error[Lc002]: could not open file 解决办法
  11. sensei鼠标测试软件,「硬核测试:游戏鼠标精准度」赛睿SENSEI 310
  12. 论文笔记High-Resolution Image Synthesis with Latent Diffusion Models
  13. java url地址不变_页面跳转后,浏览器地址栏地址保持不变
  14. Win10安装程序提示“不能打开要写入的文件xxxxx”如何解决
  15. 虚拟机桥接模式怎么都连不上网(桥接模式下不能连校园网)
  16. MATLAB代码编写中自定义变量的问题
  17. 【C语言典例】——day2:绘制余弦函数(多重循环打印图形)
  18. Git配置并且绑定GitHub
  19. “逃离朋友圈”能否催生新微信
  20. 到底什么是新媒体、什么是互动、什么是互动营销?

热门文章

  1. 联想笔记本fn键linux,ThinkPad如何修改fn键默认操作
  2. linux操作系统共有几种版本
  3. vue3.0在mian.js中引入全局less
  4. CSDN 第一篇随笔
  5. 【沃顿商学院学习笔记】宏观经济学——09欧元区Euro Zone
  6. C语言的加减乘除函数
  7. 从零开始快速搭建LoRaWAN节点设备
  8. 一份个人计算机能力研修总结,计算机 个人研修总结
  9. 可用性及测试方法小介绍
  10. 戴德金之连续性和无理数的中文翻译