了解嵌入式中的SPI通信协议

通信在嵌入式系统设计中起着至关重要的作用。在不涉及协议的情况下,外设扩展是高度复杂和高功耗的。的嵌入式系统基本上使用串行通信与外围设备通信。
串行通信有很多协议,如UART、CAN、USB、I2C和SPI通信。串行通信协议的特点是高速、低数据丢失。它使系统级设计更容易,并确保可靠的数据传输。

串行数据通信

2021欧洲杯足球竞猜官方平台电子编码的信息称为串行数据,它通过一组协议从一个设备一点一点地传输到另一个设备。在嵌入式系统中,控制传感器和执行器的数据被接收或传输到微控制器等控制器设备,从而对数据进行进一步的分析和处理。当微控制器工作与数字数据,信息来自模拟传感器,执行器和其他外设被转换为一个字节(8位)二进制字,然后传送给微控制器。


串行数据通信
串行数据通信

这个串行数据是按照一定的时钟脉冲传输的。数据传输速率称为波特率。每秒可以传输的数据比特数称为波特率。假设数据为12字节,则每个字节转换为8位,因此数据传输的总大小约为96位/秒(12字节*8位/字节)。如果每秒传输一次数据,波特率大约为96比特/秒或96波特。显示屏每秒刷新一次数据值。

串行外设接口基础

SPI通信代表串行外设接口通信协议这款手机是摩托罗拉公司在1972年开发的。SPI接口可用于流行的通信控制器,如PIC, AVR和手臂控制器等。它具有全双工的同步串行通信数据链路,即数据信号同时进行两个方向。

SPI协议由MISO、MOSI、CLK、SS四根线组成,用于主从通信。主控制器是一个微控制器,从控制器是其他外围设备,比如传感器,GSM调制解调器GPS调制解调器等。多个从服务器通过SPI串行总线与主服务器相连。SPI协议不支持多主通信,它用于电路板内的短距离。

串行外设接口基础
串行外设接口基础

SPI行

MISO (Master in Slave out): MISO线被配置为主设备的输入和从设备的输出。

主输出从输出:MOSI是配置为主设备中的输出的线,并且作为用于同步数据移动的从设备中的输入。

SCK(串行时钟):这个信号总是由主服务器驱动,用于主服务器和从服务器之间的同步数据传输。它用于同步通过MOSI和MISO线进出的数据移动。

SS (Slave Select)和CS (Chip Select):这个信号由主服务器驱动来选择独立的从服务器/外围设备。它是用于选择从属设备的输入行。

与SPI串行总线进行主从通信

单主和单从SPI实现

这里,通信始终由主设备启动。主设备首先配置小于或等于从设备支持的最大频率的时钟频率。然后,主设备通过拖动该特定从设备的芯片选择线(SS)来选择所需的从站进行通信以转换低状态和活动。主设备生成有关携带来自主设备的数据的MOSI线的信息。

主奴隶通信
主奴隶通信

单主和多从的实现

这是一个通过SPI串行总线的一个主服务器和多个从服务器的多个从服务器配置。多个从设备通过SPI串行总线并行连接到主设备。在这里,所有的时钟线和数据线都连接在一起,但是每个从设备的芯片选择引脚必须连接到脉泽设备上的一个单独的从选择引脚。

单个主人和多个奴隶
单个主人和多个奴隶

在这个过程中,每个从设备的控制由一个芯片选择线(SS)执行。芯片选择引脚低以激活从设备,高以禁用从设备。

数据传输是通过使用主设备和从设备上的移位寄存器组织的,这些移位寄存器的字大小分别为8位和16位。两个设备以环形连接,使脉泽移位寄存器值通过MOSI线传输,然后从器在其移位寄存器中移动数据。数据通常首先与MSB一起移出,然后将新的LSB移到同一个寄存器中。

主从之间的数据传输
主从之间的数据传输

时钟极性和相位的意义

一般来说,数据的发送和接收是根据上升沿和下降沿的时钟脉冲来完成的。先进的微控制器有两个频率:内部频率和外部频率。SPI外设可以通过共享MISO, MOSI和SCLK线来添加。外设有不同的类型或速度,如ADC、DAC等。因此,我们需要在传输到不同外设之间更改SPCR设置。

SPCR注册
SPCR注册

SPI总线以4种不同的传输模式之一运行,具有时钟极性(CPOL)和时钟相位(CPHA),这定义了要使用的时钟格式。时钟极性和相位时钟速率取决于您试图与主机通信的外围设备。
CPHA=0, CPOL=0:第一个比特作为一个低信号开始——数据在上升沿采样,数据在下降沿变化。

CPHA=0, CPOL=1:第一个比特从一个较低的时钟开始-数据在下降沿采样,数据在上升沿变化。

CPHA=1, CPOL=0:第一个比特以一个更高的时钟开始——数据在下降沿采样,数据在上升沿变化。

CPHA=1, CPOL=1:第一个比特以一个更高的时钟开始——数据在上升沿采样,数据在下降沿变化。

SPI总线计时
SPI总线计时

SPI通信协议

许多微控制器具有内置的SPI协议,用于处理所有发送和接收数据。任何数据模式操作(R / W)都由SPI协议的控制和状态寄存器控制。在这里,您可以通过SPI协议将EEPROM接口观察到PIC16F877A微控制器。

这里,25LC104 EEROM是一个131072字节的内存,其中微控制器将两个字节的数据传输到EEROM记忆通过SPI串行总线。下面给出了这个接口的程序。

通过SPI串行总线进行主从通信
通过SPI串行总线进行主从通信

# include < pic16f877x.h >
Sbit党卫军= RC ^ 2;
Sbit SCK = RC ^ 3;
Sbit SDI = RC ^ 4;
SBIT SDO = RC ^ 5;
空白EEROM进行初始化();
Void main ()

SSPSPAT = 0 x00;
SSPCON = 0 x31;
SMP = 0;
SCK = 0;
sdo = 0;
党卫军= 1;
EE_adress = 0 x00;
SPI_write (0 x80);
SPI_write (1234);
党卫军= 0;

SPI协议的优点

  • 这是一个全双工通信。
  • 它是高速数据总线10mhz。
  • 传输时不限于8位
  • 通过SPI实现硬件接口简单。
  • Slave使用一个主时钟,不需要昂贵的振荡器。

这都是关于SPI通信和它与微控制器连接。我们感谢您对本文的敏锐兴趣和关注,因此预测了您对本文的观点。此外,对于任何接口编码和援助,您可以通过以下评论要求我们。

照片学分:

一个评论

  1. Rajeshkumar 说:

    感谢您关于SPI协议的基本细节。虽然u提供了一些初始化程序,我需要如何通过数据和时钟线发送数据,也清楚深入的解释。谢谢你的支持…

添加评论