嵌入式进阶——OLED显示器(SPI)

🎬 秋野酱:《个人主页》
🔥 个人专栏:《Java专栏》《Python专栏》

⛺️心若有所向往,何惧道阻且长

文章目录

    • SPI协议
    • 原理图
    • 字库芯片
    • 中文显示屏原理
    • API的使用

SPI协议

SPI(Serial Peripheral Interface)是一种同步串行通信协议,用于在嵌入式系统中连接微控制器(MCU)和外围设备(如传感器、存储器、显示器等)。SPI协议需要4根线进行数据传输,分别是:
● SCLK:时钟信号线,由主设备控制时序,用于同步数据传输。
● MOSI:主设备输出从设备输入线,主设备通过该线向从设备发送数据。
● MISO:主设备输入从设备输出线,从设备通过该线向主设备发送数据。
● SS:从设备片选线,用于选择与主设备通信的从设备。(其他叫法CS)
SPI协议支持全双工通信,意味着主设备和从设备可以同时发送和接收数据。SPI协议传输数据时采用的是先进先出的方式。
标准的SPI总共有4根线,包括:SCLK(时钟线)、MOSI(主机输出从机输入线)、MISO(主机输入从机输出线)和SS(片选线)。但是在实际的应用中,可能会根据需要添加其他的辅助信号线,如数据就绪信号等。因此,SPI的具体实现方式可能会有所不同。
SPI协议中的DC线是指数据/命令线(Data/Command line),有时也称作RS线(Register Select line)。它是用来控制从主设备到从设备传输的数据是命令还是普通数据的信号线。在许多液晶显示屏、OLED屏幕、触摸屏等设备中,SPI总线上的DC线通常用于指示传输的数据是图像数据还是命令数据,以便设备能够正确地解析和处理数据

在这里插入图片描述
SPI通讯的时序是由主设备(Master)发起的,在数据传输的过程中,需要进行时序的协调,具体流程如下:
● 主设备(Master)通过片选信号(Slave Select)选择通信的从设备(Slave)。
● 主设备(Master)向从设备(Slave)发送时钟信号(SCLK),并将数据从输出口(MOSI)发送到从设备(Slave)的输入口(MISO)。
● 从设备(Slave)在每个时钟脉冲的下降沿采样输入口(MISO)的数据,并将数据从输出口(MOSI)发送回主设备(Master)的输入口(MISO)。
● 当传输完成后,主设备(Master)取消片选信号(Slave Select),从设备(Slave)被释放。
具体的通讯流程时序可以根据实际应用情况进行调整,例如可以调整时钟信号的极性和相位、选择合适的时钟频率等。

原理图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

字库芯片

字库芯片是一种专门用于储存字符或汉字等字形信息的存储器芯片。它通过将不同的字形编码储存在内部存储器中,提供了一种快速、高效的方法来支持文本显示。使用字库芯片,可以避免在应用程序中占用过多的内存空间,并且可以提高文本显示的速度和准确性。 字库芯片通常包含标准的字形、符号和汉字,而且支持多种字体和字号的显示。
字库芯片采用的也是SPI协议进行通讯。

中文显示屏原理

由显示屏和中文字库芯片组成。

  1. 显示屏接外接电路采用SPI模式显示
  2. 中文字库采用SPI进行访问

在这里插入图片描述
标准的SPI协议包含:
● SCLK: 时钟频率
● MOSI:Master Out Slave In,主设备给从设备传递数据
● MISO:Master In Slave Out, 主设备接收从设备的数据
● SS: Slave Select, 选择从设备,片选。spi是单独通讯,一次只能和一个芯片进行通讯,通过ss进行片选。
SPI SSD1306显示屏,只负责显示,只用到了标准协议的一些规定引脚,也做了一些扩展:
● SPI_CLK: 对应标准协议中的SCLK。
● SPI_MOS: 对应标准协议中的MOSI
● SPI_DC: 为扩展,自定义的数据命令引脚,非标准。
● SPI_CS1: 对应标准协议中的ss。但是多个slave时,每个对应一个片选引脚。
中文字符芯片,采用的也是SPI:
● SPI_CLK: 对应标准协议中的SCLK。
● SPI_MOS: 对应标准协议中的MOSI
● SPI_FSO: 对应标准协议中的MISO
● SPI_CS2: 对应标准协议中的ss。但是多个slave时,每个对应一个片选引脚。
整个系统中,用到了SPI协议,同时有两个从设备,他们共用了一些引脚。

API的使用

void OLED_Display_128x64(u8 *dp);
void OLED_Display_16x16(u8 x,u8 y,u8 *dp);
void OLED_Display_8x16(u8 x,u8 y,u8 *dp);
void OLED_Display_5x7(u8 x,u8 y,u8 *dp);
void OLED_Display_GB2312_string(u8 x,u8 y,u8 *text);
void OLED_Display_string_5x7(u8 x,u8 y,u8 *text);
void OLED_ShowNum(u8 x,u8 y,float num,u8 len);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/659629.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式要卷成下一个Java了吗?

嵌入式要卷成下一个Java了吗? 根据我十年的嵌入式开发经验,嵌入式开发的工资水平相对 Java 较低。不过,嵌入式开发岗位主要集中在第二产业,尤其是电器、电气、机械汽车、航空航天等行业的“智能制造”领域。这些行业属于重资产行…

JWT身份验证相关安全问题

前言:工作中需要基于框架开发一个贴近实际的应用,找到一款比较合适的cms框架,其中正好用到的就是jwt做身份信息验证,也记录一下学习jwt相关的安全问题过程。 JWT介绍 Json web token (JWT), 是为了在网络应用环境间传递声明而执行…

线上自由DIY预约小程序源码系统 自由DIY你的界面 带完整的的安装代码包以及搭建教程

系统概述 在当今数字化时代,移动应用成为人们生活和工作中不可或缺的一部分。预约小程序作为一种便捷的工具,为用户提供了高效的预约服务体验。而线上自由 DIY 预约小程序源码系统则为开发者和企业提供了更大的自由度和创造力,让他们能够根据…

Redis篇 String的基本命令

String基本命令 一.setnx,setex,psetex二. 增加删除命令三.append,setrange,getrange,strlen命令1.append2.setrange3.strlen4.getrange 四.String的内部编码方式 一.setnx,setex,psetex setex和psetex设置过期时间 setex设置的过期时间是秒级 psetex设置的过期时间是毫秒级 二…

11.任务状态查询API函数总结

一、任务相关 API 函数预览 二、任务相关 API 函数详解 1. 函数 uxTaskPriorityGet() 此函数用于获取指定任务的任务优先级,若使用此函数,需在 FreeRTOSConfig.h 文件中设 置配置项 INCLUDE_uxTaskPriorityGet 为 1,此函数的函数原型如下所示…

我和jetson-Nano的故事(12)——安装pytorch 以及 torchvision

在jetson nano中安装Anaconda、pytorch 以及 torchvision 1.Pytorch下载安装2.Torchvision安装 1.Pytorch下载安装 首先登录英伟达官网下载Pytorch安装包,这里以PyTorch v1.10.0为例 安装依赖库 sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev liba…

HNU-人工智能-2024期末考试回忆

前言 后知后觉,似乎是别的专业的往年试题拿来复用,我没刷到,比较吃亏。 最后一题把数据改的很恶心,让我cosplay成GPU,算3个5*5的卷积核,简直恶心。根本没时间算完。 整场考试体验还挺差的。主要是老师缝…

FreeRTOS【7】队列使用

1.开发背景 操作系统提供了多线程并行的操作,为了方便代码的维护,各个线程都分配了专用的内存并处理对应的内容。但是线程间也是需要协助操作的,例如一个主线程接收信息,会把接收的信息并发到其他线程,即主线程不阻塞&…

helm离线安装

目录 概述实践 概述 centos 7.x 离线安装 helm 3.14.4 版本 实践 离线包资源下载地址 github [roothadoop01 ~]# tar -xvf helm-v3.14.4-linux-amd64.tar.gz linux-amd64/ linux-amd64/README.md linux-amd64/LICENSE linux-amd64/helm [roothadoop01 ~]# mv ./linux-amd…

Deepin Linux 深度 V23 beige 官方源及换镜像源方法。

Deepin Linux 深度 V23 英文版本号:beige 谁起的烂名字。。。。。。 1. 打开文件管理器,在apt文件夹点右键(以管理员身份打开), 2. 输入你的登录密码,以便打开文件夹(管理员权限)。…

【会议征稿,JPCS出版】2024年航空航天与力学国际学术会议(ICAM 2024)

2024年航空航天与力学国际学术会议(ICAM 2024)将于2024年7月12-14日在中国沈阳举办。会议由东北大学机械工程与自动化学院主办,吉林大学机械与航空航天工程学院承办,大连理工大学、沈阳航空航天大学、沈阳建筑大学、沈阳工业大学、…

微火全域运营平台成优选,业内人士纷纷研究!

随着全域运营赛道的兴盛,越来越多的全域运营平台陆续上线,拓宽全域运营服务商选择空间的同时,也让全域运营平台选择成为了他们最为头疼的问题。在此背景下,各大全域运营平台背后的研发公司开始各出奇招,以获得更多全域…

MVCC 原理分析、MySQL是如何解决幻读的

文章目录 一、前言回顾1.1 事务四大特性ACID1.2 并发事务问题1.3 事务隔离级别 二、MVCC2.1 为什么使用MVCC2.2 基本概念——当前读、快照读、MVCC2.2.1 当前读2.2.2 快照读2.2.3 MVCC 2.3 隐藏字段—— TRX_ID、ROLL_PTR2.4 undo log2.4.1 介绍2.4.2 版本链 2.5 Read View读视…

【EI会议】2024年机电一体、电力与电气国际会议(ICMPE 2024)

2024年机电一体、电力与电气国际会议 2024 International Conference on Mechatronics, Power and Electrical 【1】会议简介 2024年机电一体、电力与电气国际会议即将召开,这是一场集结全球机电一体、电力与电气领域精英的学术盛宴。 本次会议旨在探讨机电一体、电…

FloodFill 算法 (下)

目录 太平洋大西洋水流问题 题解: 扫雷游戏 题解: 衣橱整理 太平洋大西洋水流问题 417. 太平洋大西洋水流问题 - 力扣(LeetCode) 题解: 如果从区域内某一个位置出发,需要向左、向上走判断是否能到达…

WordPress子比主题美化-首页动态的图片展示

WordPress子比主题首页动态的图片展示 WordPress子比主题首页添加动态的图片展示,其他程序也可以用,复制代码到相应位置即可,也可作为指定分类,重点内容等,可以适合各个场景,需要的自取。 图片展示: 教程…

香橙派AIpro开发板初体验

香橙派AIpro开发板初体验 一、引言 在当前的AI发展浪潮中,边缘计算逐渐成为了研究的热点。香橙派AIpro开发板作为一款基于昇腾AI技术的开发板,凭借其强大的算力和丰富的接口,为AI边缘计算提供了强大的支持。最近,我也是拿到了官…

工作中有哪些超级好用的C/C++程序库?

视频和讲义发布在这里: B站链接

【Linux进程篇】Linux内核——程序地址空间的初构

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; 程序地址空间回顾 我们在讲C语言的时候&#xff0c;大家应该都见过这样的空间布局图&#xff1a; 为了更好的验证不同的数据在内存中的存储位置&#xff0c;下面这段代码我们可以去实验一下&#xff1a; #include<…

通过ESP32芯片模组实现产品智能化升级,启明云端乐鑫代理商

随着科技的不断进步&#xff0c;物联网&#xff08;IoT&#xff09;已经渗透到我们生活的方方面面&#xff0c;成为现代生活不可或缺的一部分。在这场智能化革命中&#xff0c;乐鑫科技以其创新的ESP32芯片模组&#xff0c;为智能家居和智能设备的发展注入了新的活力。作为乐鑫…