IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> stm32+(4SPI)OLED显示数据 -> 正文阅读

[嵌入式]stm32+(4SPI)OLED显示数据

一.SPI(串行外设接口)

1. 什么是SPI?

SPI(Serial Peripheral Interface)[串行外围接口]是一种接口总线,通常用于与闪存、传感器、实时时钟(RTCs)、模数转换器等进行通信。 串行外围接口(SPI)总线是由摩托罗拉公司开发的,用于在主设备和从设备之间提供全双工同步串行通信。

2.SPI接口

如图1所示,一个标准的SPI连接涉及到一个主机master使用串行时钟(SCK)、主输出从输入(MOSI)、主输出从输出(MISO)和从选择(SS)线连接到一个或几个从机slave。SCK、MOSI和MISO信号可以由从机slave共享,而每个从机slave都有一条唯一的SS线。

在这里插入图片描述

2.1 SPI模式:极性和时钟相位

SPI接口没有定义数据交换协议,限制了开销并允许高速数据流。时钟极性(CPOL)和时钟相位(CPHA)可以指定为“0”或“1”,形成四种独特的模式,以提供主从通信的灵活性,如图2所示。

在这里插入图片描述

如果CPOLCPHA都为’ 0 ‘(定义为模式0),则在时钟的前上升沿采样数据。目前,模式0是SPI总线通信最常见的模式。如果CPOL为’ 1 ‘,CPHA为’ 0 '(模式2),则在时钟的前降边缘采样数据。同样,CPOL = ’ 0 '和CPHA = ’ 1 ’ (Mode 1)在尾降边缘采样,CPOL = ’ 1 '和CPHA = ’ 1 ’ (Mode 3)在尾升边缘采样。下面的表1总结了可用的模式

CPOL:时钟极性,表示时钟线空闲时是高电平1还是低电平0
CPHA:时钟相位,表示是在时钟的前沿0还是尾沿1采样数据。

ModeCPOLCPHA
000
101
210
311
2.2 SPI三线总线和多IO配置

除了标准的4线配置外,SPI接口还扩展到包括各种IO标准,包括用于减少引脚数的3线和用于更高吞吐量的双或四I/O。

在3线模式下,MOSI和MISO线路组合成单个双向数据线,如图3所示。事务是半双工的,以允许双向通信。减少数据线的数量并以半双工模式运行也会降低最大可能的吞吐量; 许多3线设备具有低性能要求,而设计时考虑到低引脚数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LImtr1ZR-1637479186175)(https://www.corelis.com/wp-content/uploads/2017/05/1-31.jpg)]

多I/O变体(如双I/O和四I/O)在标准外添加了额外的数据线,以提高吞吐量。利用多I/O模式的组件可以与并行器件的读取速度相媲美,同时仍然可以减少引脚数量。这种性能提升使得能够从闪存中随机访问和直接执行程序(XIP)。

例如,四路I/O设备在与高速设备通信时可提供四倍于标准4线SPI接口的性能。图4显示了单个四通道IO从站配置的示例。

在这里插入图片描述

3. SPI总线事务

SPI协议没有定义数据流的结构; 数据的组成完全取决于组件设计者。但是,许多设备遵循相同的基本格式来发送和接收数据,从而允许来自不同供应商的部件之间的互操作性。

3.1 简单SPI写事务

大多数SPI闪存都有一个写状态寄存器命令,用于写入一个或两个字节的数据,如图5所示。要写入状态寄存器,SPI主机首先启用当前器件的从选择线。然后,主设备输出适当的指令,后跟两个数据字节,用于定义预期的状态寄存器内容。由于事务不需要返回任何数据,因此从设备将MISO线保持在高阻抗状态,并且主设备屏蔽任何输入数据。最后,从机选择信号被取消以结束事务。

在这里插入图片描述

3.2 简单SPI读事务

状态寄存器读取事务与写入事务类似,但现在利用从器件返回的数据,如图6所示。在发送读取状态寄存器指令后,从器件开始以MISO线路传输数据,数率为每八个时钟周期一个字节。主机接收比特流并通过取消SS信号来完成事务。

在这里插入图片描述

3.3 四线IO事务

由于其性能的提高,四线IO在闪存中越来越受欢迎。四线IO没有使用单输出和单输入接口,而是使用4条独立的半双工数据线来传输和接收数据,其性能是标准四线SPI的四倍。

图7显示了Spansion S25FL016K串行NorFLASH器件的读取示例命令。要从器件读取,主器件首先在第一个IO线上发送快速读取命令(EBh),而其他所有命令都处于三态。接下来,主机发送地址; 由于接口现在有4条双向数据线,因此它可以利用它们在8个时钟周期内发送一个完整的24位地址和8个模式位。然后,该地址跟随2个虚拟字节(4个时钟周期),以允许器件有额外的时间来设置初始地址。

在这里插入图片描述

在主机发送地址周期和虚拟字节之后,组件开始发送数据字节; 每个时钟周期由分布在4个IO线上的数据半字节组成,每个数据字节总共有两个时钟周期。

二.OLED显示数据

1. OLED相关资料

传送门:http://www.lcdwiki.com/zh/0.96inch_SPI_OLED_Module

2. 运行厂家Demo程序

①下载程序
程序下载链接:
0.96寸SPI_OLED模块配套资料包
②打开资料包,选择与自己平台相同的实例,打开Demo的工程,使用keil编译
③将程序烧录到开发板
④连接显示屏和开发板
在这里插入图片描述

运行成功后,修改代码显示姓名学号。

三.修改程序显示学号姓名

1. 找到姓名的中文点阵

李静:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tlo31byX-1637479186184)(C:\Users\28205\AppData\Roaming\Typora\typora-user-images\image-20211119125206392.png)]

汉字点阵编码:

"李",0x01,0x00,0x01,0x08,0x7F,0xFC,0x01,0x00,0x05,0x40,0x09,0x30,0x31,0x0E,0xC1,0x04,
0x0F,0xE0,0x00,0x40,0x01,0x88,0x7F,0xFC,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,
"静",0x08,0x40,0x08,0x40,0x7E,0xF8,0x09,0x10,0x3E,0x20,0x08,0xFC,0xFF,0x24,0x00,0x24,
0x3F,0xFE,0x22,0x24,0x3E,0x24,0x22,0xFC,0x3E,0x24,0x22,0x20,0x22,0xA0,0x26,0x40,

编写显示函数

void TEST_MainPage(void)
{	
	GUI_ShowCHinese(28,20,16,"李静",1);//中文姓名
	GUI_ShowString(4,48,"631907060311",16,1);//数字详细
	delay_ms(1500);		
	delay_ms(1500);
}

修改main函数

int main(void)
{	
	delay_init();	    	       //延时函数初始化	  
	OLED_Init();			         //初始化OLED  
	OLED_Clear(0);             //清屏(全黑)
	while(1) 
	{	
		TEST_MainPage();         //界面显示
	}
}

运行程序,效果如下:

在这里插入图片描述

四.总结

利用厂家Demo程序,添加要显示数据中中文的相关点阵,调用相关函数,就能显示。

五.参考链接:

https://www.cnblogs.com/thammer/p/10600667.html

https://blog.csdn.net/qq_43279579/article/details/111414037
完整代码:
https://github.com/Parallel-leaves/nameoled

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:30:12  更:2021-11-22 12:31:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:35:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码