stm32驱动oled-——SPI

本文详细介绍了SPI接口的特性和优点,以及如何在STM32单片机上通过SPI驱动OLED显示名字和温湿度传感器数据。通过实例展示了OLED的初始化、显示字符和滚动文字的功能,强调了SPI通信的简易性和高效性。
摘要由CSDN通过智能技术生成


前言


一、SPI的相关介绍

1.什么是SPI

SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如MSP430单片机系列处理器。

2.SPI的特性

SPI 总线包括4条逻辑线

  • MISO: Master input slave output 主机输入,从机输出(数据来自从机)。
  • MOSI: Master output slave input 主机输出,从机输入(数据来自主机)。
  • SCLK: Serial Clock 串行时钟信号,由主机产生发送给从机。
  • SS: Slave Select 片选信号,由主机发送,以控制与哪个从机通信,通常是低电平有效信号。

3.SPI的优点

  • 它支持全双工通信
  • 通信十分的简单
  • 数据传输的速率很快

缺点:没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据可靠性上有一定的缺陷。

4.SPI通信的特点

  • 采用同步方式(Synchronous)传输数据
    Master 设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse),时钟脉冲组成了时钟信号(Clock Signal) ,时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样,来保证数据在两个设备之间是同步传输的。
    在这里插入图片描述

  • 采用主-从模式(Master-Slave)的控制方式
    SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave)。 一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选 (Slave Select) 来控制多个 Slave 设备,SPI 协议还规定 Slave 设备的 Clock 由 Master 设备通过 SCK 管脚提供给 Slave 设备, Slave 设备本身不能产生或控制 Clock,没有 Clock 则 Slave 设备不能正常工作。

  • 数据交换(Data Exchanges)
    SPI 设备间的数据传输之所以又被称为数据交换,是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 “发送者(Transmitter)” 或者 “接收者(Receiver)”。在每个 Clock 周期内,SPI 设备都会发送并接收一个 bit 大小的数据(不管主设备好还是从设备),相当于该设备有一个 bit 大小的数据被交换了。一个 Slave 设备要想能够接收到 Master 发过来的控制信号,必须在此之前能够被 Master 设备进行访问 (Access)。所以,Master 设备必须首先通过 SS/CS pin 对 Slave 设备进行片选, 把想要访问的 Slave 设备选上。 在数据传输的过程中,每次接收到的数据必须在下一次数据传输之前被采样。如果之前接收到的数据没有被读取,那么这些已经接收完成的数据将有可能会被丢弃,导致 SPI 物理模块最终失效。因此,在程序中一般都会在 SPI 传输完数据后,去读取 SPI 设备里的数据, 即使这些数据(Dummy Data)在我们的程序里是无用的(虽然发送后紧接着的读取是无意义的,但仍然需要从寄存器中读出来)。

二、oled显示名字

1.oled简单介绍

本次学习用到的是四线spi的oled屏幕来显示,学习SPI协议。

  • 引脚定义如下。
引脚 引脚定义
GND
VCC 电源,3.3~5v
D0 4 线 ISP 接口模式:时钟线(CLK)
D1 4 线 ISP 接口模式:串行数据线(MOSI)
RES 4 线 ISP 接口模式:命令/数据标志位(RET复位)
DC 命令/数据标志位
CS OLED 片选
  • 时序图
    在这里插入图片描述

2.取字模软件下载与使用

单片机液晶显示模块都是用点阵的方式来显示,显示汉字字符的时候就会用到字模,字模就是汉字符号在液晶屏幕上显示的时候对应的编码,如果是我们自己来的话就十分麻烦,我们可以用字模获取软件,这样就十分的方便,把获取的字模拿来用就行。
软件下载连接: http://www.lcdwiki.com/zh/0.96inch_SPI_OLED_Module
在这里插入图片描述
可以去这里自行下载。

  • 字模软件的相关设置
    在这里插入图片描述

3.oled初始化代码

void OLED_Init_GPIO(void)
{
   
	GPIO_InitTypeDef  GPIO_InitStructure;
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	 //使能B端口时钟
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_15;	//GPIOB10,11,12,13,15 
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
 	GPIO_Init(GPIOB, &GPIO_InitStructure);	  //初始化GPIOB10、11、12、13、15
 	GPIO_Se
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值