SPI 接口OLED 使用5V 信号驱动可能需要电平转换
这类OLED 模块一般都用I2C 驱动,此时信号电平用5V 好像也没什么问题,但是SPI 接口的OLED 使用5V 信号电平时可能完全不工作。
模块电路
以这种SPI 接口模块举例:
一般是叫做4 线SPI 接口,再加上VCC,GND 和复位信号,一共就是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 信号驱动可能需要电平转换相关推荐
- SPI 接口OLED 模块 - 兼容5V 和3.3V 电平
PCB 布局参考了老王0.8元128x32OLED显示屏转接板,开源项目地址:老王0.8元128x32OLED. 老王家买的屏幕放了快一年了,终于还是决定整个单独的模块,之前一直打算集成到开发板上的, ...
- 基于STM32F103ZET6主控平台实现(SPI接口)OLED液晶屏驱动
一个热爱代码的工程师,唯有凭借双手不断敲打,才可以快速提升实力! 本文谨以记录,日后相忘时再作复习,代码没有贵贱,既来之则安之. OLED液晶屏产品图和效果图 由上图我们知道:OLED液晶屏分别有GN ...
- NanoPi NEO Air使用十二:使用自带的fbtft驱动点亮SPI接口TFT屏幕,ST7789V
上节自己编写spi驱动来点亮spi接口的小屏幕,其实Linux内核里已经提供spi接口小屏的设备驱动,即内核中已经自带了此类驱动,名字为fbtft.本节就来使用它. 引脚 240x240分辨率,1.3 ...
- 非标准语法;请使用 _一文读懂使用MCU SPI访问具有非标准SPI接口ADC的方法
好文章当然要分享啦~如果您喜欢这篇文章,请联系后台添加白名单,欢迎转载哟~ 问题 能否用MCU访问非标准SPI接口? 答案 可以,但可能需要做一些额外的努力. 当前许多精密模数转换器(ADC)具有串行 ...
- 3.3V和5V双向电平转换电路
" 当我们使用3.3V单片机(STM32系列)和5V的器件通信时(IIC设备),电平转换就势在必行了" 01 经典电平转换电路 1.1.这是一款经典的电平转换电路,该电路的核心是一 ...
- 3.3与5V 电平转换
1.简介 现在大多数的MCU基本都是3.3V供电,而外围器件依旧存在一些5V供电的,两者之间的通信不可避免的需要电平之间的转换. 2.电路设计 这里介绍一个可以实现两个电平的相互转换的电路,网上相关的 ...
- STM32基于SPI接口的OLED数据显示
文章目录 一.SPI简介 1.1 什么是SPI 1.2 SPI原理 1.3 SPI的连接方式 1.4 协议层 二.OLED 2.1 OLED原理 2.2 点阵编码原理与显示 三.OLED显示实验 3. ...
- STM32开发基于SPI接口的OLED数据显示
文章目录 一.SPI简介 二.0.96inch SPI OLED 介绍 三.实验内容及结果 1. 任务要求 2. 准备工作 3. 演示如下 四.参考 一.SPI简介 SPI,是英语Serial Per ...
- NanoPi NEO Air使用十三:使用自带的fbtft驱动点亮SPI接口TFT屏幕,ST7789V,模块加载的方式
上节使用fbtft来驱动SPI接口TFT屏幕,但是是编译进内核的方式. 本节再来测试下编译成模块的用法. 引脚 240x240分辨率,1.3寸,主控为ST7789VW. 与开发板的引脚连接确定如下: ...
- 个人项目 免费开源 基于STM32F103的oled示波器,频谱fft adc电压采集 spi接口0.96寸oled
@基于stm32的adc检测波形 0.96oled显示(spi/iic)移植gui库(开源). 使用标准库开发,未使用dsp官方库. adc采集到电压并且在oled上显示. 支持0-3.3v电压采集显 ...
最新文章
- DEDE 字符串操作常见问题
- shell从oracle中获取变量,shell 如何读取环境变量的值
- 【今日CV 计算机视觉论文速览】Wed, 27 Mar 2019
- 【es】es 分布式一致性原理剖析(二)-Meta篇
- 职业生涯(一)——你就是自己想要成为的那个人!
- python 文本颜色设置
- shell卸载 simatic_西门子软件在WIN7操作系统中安装步骤和须知
- php json转数组示例,php json转数组的例子
- 【大数据处理技术】实验7(推荐林子雨老师的教程)
- IAR 中的 Fatal Error[Lc002]: could not open file 解决办法
- sensei鼠标测试软件,「硬核测试:游戏鼠标精准度」赛睿SENSEI 310
- 论文笔记High-Resolution Image Synthesis with Latent Diffusion Models
- java url地址不变_页面跳转后,浏览器地址栏地址保持不变
- Win10安装程序提示“不能打开要写入的文件xxxxx”如何解决
- 虚拟机桥接模式怎么都连不上网(桥接模式下不能连校园网)
- MATLAB代码编写中自定义变量的问题
- 【C语言典例】——day2:绘制余弦函数(多重循环打印图形)
- Git配置并且绑定GitHub
- “逃离朋友圈”能否催生新微信
- 到底什么是新媒体、什么是互动、什么是互动营销?