SPI通信协议简介

当你将微控制器连接到传感器,显示器或其他模块时,你是否考虑过这两种设备如何相互通信?他们到底在说什么?他们如何理解对方?
电子设备之间的通信就像人类之间的通信。双方都需要说同样的语言。在电子产品中,这些语言称为通信协议。对我们来说幸运的是,在构建大多数DIY电子产品项目时,我们只需要知道几个通信协议即可。
在本系列文章中,我们将讨论三种最常见协议的基础:串行外设接口(Serial Peripheral Interface, SPI),集成电路总线(Inter-Integrated Circuit, I2C)和通用异步接收器/发送器(Universal Asynchronous Receiver/Transmitter, UART)驱动的通信。

SPI,I2C和UART比USB,以太网,蓝牙和WiFi等协议要慢很多,但它们更简单,使用的硬件和系统资源也更少。SPI,I2C和UART非常适用于微控制器之间以及不需要传输大量高速数据的微控制器与传感器之间的通信。

串行通信 VS. 并行通信
电子设备通过有线物理连接在设备之间发送数据比特来相互通信。有点像单词中的字母,除了不是26个字母(英语字母表中的字母)外,一个比特是二进制的,只能表示1或0。通过电压的快速变化,比特从一个设备转移到另一个设备。在以5V电压工作的系统中,0 V的短脉冲作为0比特进行通信,而5V的短脉冲作为1比特进行通信。
数据位可以通过并行或串行的形式传输。在并行通信中,数据位的所有比特位同时发送,每一个比特链接一根独立的导线。下图显示了二进制中字母“ C”(01000011)的并行传输:

在串行通信中,所有比特位通过单根导线逐一发送。下图显示了二进制中字母“C”(01000011)的串行传输:

SPI通信简介
SPI作为通用通信协议在许多不同设备中使用。例如,SD卡模块,RFID卡读取器模块和2.4 GHz无线发送器/接收器均使用SPI与微控制器通信。
SPI的一个独特优势是可以无中断传输数据。可以在连续流中发送或接收任意数量的位。使用I2C和UART,数据以数据包的形式发送,限制为特定位数。开始和停止条件定义了每个数据包的开始和结束,因此数据在传输过程中被中断。
通过SPI通信的设备处于主从关系。主机是控制设备(通常是微控制器),而从机(通常是传感器,显示器或存储芯片)从主机获取指令。SPI的最简单配置是一个主设备+一个从设备的系统,但是一个主设备可以控制多个从设备(下面有更多介绍)。

MOSI (Master Output/Slave Input) – 主设备向从设备发送数据的信号线
MISO (Master Input/Slave Output) – 从设备向主设备发送数据的信号线
SCLK (Clock) – 时钟信号线
SS/CS (Slave Select/Chip Select) – 主设备选择要向其发送数据的从设备的片选信号线
使用的信号线—4
最大传输速度—最高可达10Mbps
同步/异步—同步
串行/并行—串行
最大主设备数—1
最大从设备数—理论上无限*
*实际上,从站的数量受到系统负载电容的限制,这降低了主机在电压电平之间准确切换的能力。
SPI如何工作
时钟
时钟信号将主设备的数据比特输出同步到从设备的比特采样。每个时钟周期传输一比特数据,因此数据传输的速度取决于时钟信号的频率。由于主机配置并生成时钟信号,因此SPI通信始终由主机启动。
任何在设备间共享时钟信号的通信协议都称为同步通信。SPI是一种同步通信协议。还有一些异步方法不使用时钟信号。例如,在UART通信中,双方都设置为预先配置的波特率,该波特率决定了数据传输的速度和时序。
可以使用时钟极性和时钟相位的属性来修改SPI中的时钟信号。这两个属性共同定义何时输出比特以及何时对其进行采样。主机可以设置时钟极性,以允许在时钟周期的上升沿或下降沿输出和采样比特。可以设置时钟相位,以便在时钟周期的第一个沿或第二个沿进行输出和采样,而不管它是上升还是下降。
选择从设备
**主设备可以通过将从设备的CS / SS线设置为低电压电平来选择要与之通信的从设备。**在空闲,即非传输状态下,从设备选择线保持在高电压电平。主设备上可能有多个CS / SS引脚,以允许多个从设备并行连接。如果仅存在一个CS / SS引脚,则可以通过菊花链将多个从设备连接到主设备。
多个从设备
可以将SPI设置为与单个主设备和单个从设备一起运行,并且可以与由单个主设备控制的多个从设备一起设置。有两种方法可以将多个从设备连接到主设备。如果主设备有多个从设备选择引脚,则从设备可以这样并行连接:

如果只有一个从设备选择引脚可用,则可以通过以下方式菊花链的方式连接从设备:

MOSI和MISO
主设备通过MOSI线以串行方式将数据发送到从设备。从设备通过MOSI引脚接收主设备发送的数据。从主设备发送到从设备的数据通常先发送最高有效位。
从设备也可以通过MISO线以串行方式将数据发送回主设备。从从设备发送回主设备的数据通常先发送最低有效位。
SPI数据传输步骤
1.主设备输出时钟信号:

2.主设备将SS / CS引脚切换到低电压状态,从而激活从设备:

3.主设备使用MOSI信号线每次将1比特数据发送到从设备。从设备读取接收到的数据比特:

4.如果需要响应,则从设备使用MISO信号线每次将1比特数据返回给主设备。主设备读取接收到的数据比特:

SPI总线的优点与缺点
使用SPI总线有一些优点和缺点,如果要在不同的通信协议之间进行选择,则应根据项目要求来判断何时使用SPI总线:
优点
1.无起始位和停止位,因此数据位可以连续传输而不会被中断
2.没有像I2C这样复杂的从设备寻址系统
3.数据传输速率比I2C更高(几乎快两倍)
4.分离的MISO和MOSI信号线,因此可以同时发送和接收数据
缺点
1.使用四根信号线(I2C和UART使用两根信号线)
2.无法确认是否已成功接收数据(I2C拥有此功能)
3.没有任何形式的错误检查,如UART中的奇偶校验位
4.只允许一个主设备

原文地址:https://mp.weixin.qq.com/s/CFO9rVlM6d5bSWbjA–cMA

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ILI9488是一款广泛使用的TFT液晶屏驱动芯片,其SPI通信协议如下: 1. 在SPI通信开始前,先拉低CS (Chip Select)管脚,然后拉低RS (Register Select)管脚,表示接下来要写入命令。 2. 向ILI9488写入命令时,先发送一个字节的命令代码,然后再发送该命令需要的参数(如果有的话)。 3. 写入命令后,可以拉高RS管脚,表示接下来要写入数据。 4. 向ILI9488写入数据时,直接发送数据即可。 5. SPI通信结束后,拉高CS管脚,表示本次通信结束。 具体的命令代码和参数可以参考ILI9488的数据手册,例如: - 0x36:设置扫描方向 - 0x3A:设置像素格式 - 0x2A:设置列地址 - 0x2B:设置行地址 - 0x2C:写入像素数据 在具体实现时,需要根据ILI9488的数据手册来编写SPI通信的代码。 ### 回答2: ILI9488是一种常用于液晶显示屏控制器的芯片,它使用SPI(串行外设接口)进行通信。SPI是一种串行通信协议,它通过四个信号线进行数据传输,包括时钟线(SCLK),主设备输出数据线(MOSI),主设备输入数据线(MISO)和片选线(CS)。 在ILI9488的SPI通信协议中,通信通过以下步骤进行: 1. 在通信开始前,主设备通过拉低片选线来选择ILI9488芯片作为通信对象。 2. 主设备根据芯片规定的时钟频率和极性生成时钟信号,从而同步数据传输。 3. 主设备将需要传输的数据发送到MOSI线上,高位先传送。 4. 在传输数据的过程中,芯片会检测到时钟的上升或下降边沿,并在边沿处读取MOSI线上的数据。数据传输完毕后,芯片会将数据写入相应的寄存器或进行相关操作。 5. 芯片可通过MISO线向主设备发送数据。但对于ILI9488来说,这个功能多数情况下是不被使用的。 6. 传输完成后,主设备通过拉高片选线来结束通信。 ILI9488的SPI通信协议具有简单、可靠和较快的特点。通过SPI接口,可以实现对ILI9488的控制和显示操作。同时,SPI通信协议也可以提供对其他外设的控制和通信,为应用提供了较大的灵活性和可扩展性。值得注意的是,具体的通信细节如时钟频率、数据格式等需要根据ILI9488的数据手册来设置,以确保通信的正常进行。 ### 回答3: ILI9488是一种常见的液晶显示驱动IC,它采用SPI通信协议与主控芯片进行通信。SPI全称为串行外围接口协议,它是一种同步的、全双工的串行通信协议。 ILI9488的SPI通信协议在硬件层面上,需要使用四个引脚进行通信,分别为时钟线CLK、数据命令控制线D/C、数据输入线MOSI和数据输出线MISO。其中CLK用于传输时钟信号,D/C用于控制数据或命令的传输,MOSI用于主控芯片向ILI9488发送数据,MISO用于ILI9488向主控芯片发送数据。 ILI9488的SPI通信协议在数据传输上是基于字节的,通信的数据帧包含一个命令字节和若干数据字节。根据具体的功能需要,主控芯片通过D/C引脚发送命令字节或数据字节。命令字节用于控制ILI9488的各种操作,如初始化设置、显示模式选择、像素颜色设置等,而数据字节则用于传输实际显示的像素数据。 在通信过程中,主控芯片通过CLK引脚向ILI9488提供时钟信号,ILI9488根据时钟信号判断数据的有效性,并按照时钟信号的边沿读取或发送数据。通过MOSI和MISO引脚的数据交换,主控芯片可以向ILI9488发送命令字节或数据字节,并接收ILI9488的响应数据。 总之,ILI9488的SPI通信协议是通过CLK、D/C、MOSI和MISO四个引脚进行数据传输的,主控芯片通过时钟信号控制数据的读写,通过命令字节和数据字节实现与ILI9488的各种交互操作。这种协议结构简单,适用于许多SPI接口的设备,使得ILI9488与主控芯片之间的通信更加方便和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值