SPI配置

本文详细介绍了SPI接口的工作原理,包括3/4线的区别、数据传输过程,以及主机和从机的配置步骤,特别强调了波特率、模式设置、时钟管理及通信数据一致性的重要性。
摘要由CSDN通过智能技术生成

1.SPI接口介绍

SPI接口有两种形式,分别为3 线SPI接口和4 线SPI接口,目前最主流且应用最广泛的是4线SPI接口。4 线SPI接口存在四根信号线,分别为:串行时钟线SCK、主机输入、从机输出数据线MISO、主机输出,从机输入数据线MOSI 和低电平有效的片选信号CS。由于SPI 接口只有4 根信号线,使得它能够更加简单地集成在芯片中,同时在占用较少的管脚资源情况下即可完成数据的传输。SPI 接口是由主机、从机和外围设备组成,来自主机或者从机的数据在时钟的上升沿或下降沿同步,之后进行数据传输。

产生时钟的一侧称为主机,另一侧称为从机。总是只有一个主机(一般来说可以是微控制器/MCU),但是可以有多个从机

整体的传输大概可以分为以下几个过程:

1)主机先将NSS信号拉低,这样保证开始接收数据(片选信号使能);

2)当接收端检测到时钟的边沿信号时,它将立即读取数据线上的信号,这样就得到了一位数据(1bit)(一般在RXBUF寄存器中可以看到接收的数据);

3)主机发送到从机时:主机产生相应的时钟信号,然后数据一位一位地将从MOSI信号线上进行发送到从机;

4)主机接收从机数据:如果从机需要将数据发送回主机,则主机将继续生成预定数量的时钟信号,并且从机会将数据通过MISO信号线发送(主机一定要产生相应的时钟信号,否则从机不会发送数据,因为从机的时钟信号是主机提供的);

具体如下图所示:

SPI特性

SPI接口定义如下:

MISO:Master input slave output 主机输入,从机输出(数据来自从机);

MOSI:Master output slave input 主机输出,从机输入(数据来自主机);

SCLK : Serial Clock 串行时钟信号,由主机产生发送给从机;

SS:Slave Select 片选信号,由主机发送,以控制与哪个从机通信,通常是低电平有效信号。

2.SPI配置

网上大多博主讲解了SPI的接口特性,接口原理与HAL库的配置流程等等,下文从一般SPI的配置流程介绍,包含了主机与从机的配置流程,可以为市场上绝大多数MCU的SPI配置提供思路;

主机与从机可以按照上图进行硬件连接。

主机配置

  1. 使能时钟:主机与从机通信的过程中,主机提供时钟信号,那么首先就需要使能SPI主机的时钟;通过SPI引脚与从机通信,需要使能PAD时钟(也叫做GPIO时钟)。
  2. GPIO初始化:通常来说,1个单片机的引脚都有好几个功能(复用),那么我们就需要进行GPIO的初始化,将单片机的引脚设置为SPI功能(复用功能、上拉、驱动能力等等初始化)。
  • 在这里之后就需要配置SPI Master寄存器了
  1. SPI的模式配置为主机模式、波特率设置(相当于设置SPI的传输速度)、CPHOL、CPHA(设置SPI在哪个沿采集数据)、每发送完一帧SSN(片选信号)设置高/低、SSN由软/硬件控制、一帧数据的长度;
  2. 使能相关中断;
  3. 使能SPI;

从机配置

  1. 使能时钟:SPI时钟,GPIO时钟;
  2. GPIO初始化:通常来说,1个单片机的引脚都有好几个功能(复用),那么我们就需要进行GPIO的初始化,将单片机的引脚设置为SPI功能(复用功能、上拉、驱动能力等等初始化)。
  • 在这里之后就需要配置SPI Slave寄存器了
  1. SPI的模式配置为从机模式、CPHOL、CPHA(设置SPI在哪个沿采集数据)、每发送完一帧SSN(片选信号)设置高/低、一帧数据的长度;这里不需要设置波特率、但是需要设置与主机相同的数据长度,否则会导致接收到的数据与主机发送的数据不一致。
  2. 使能相关中断;
  3. 使能SPI;

  • 以上配置完成之后就可以进行主从机的通信了,在配置的时候还需要注意以下内容:

  • SPI作为从机时,在初始化的时候需要注意通信数据字长需要与主机设置相同,否则会导致接收数据不准确;
  • 对于任何外设,在对TXBUF和RXBUF寄存器进行操作时,都需要查看相关标志,比如使用TXBUF寄存器进行数据发送时,需要在发送缓存空(标志位为TXBE)时再进行操作、使用RXBUF寄存器进行数据接收后进行读数据时,需要等待接收缓存满(标志位为RXBF)时再进行操作;——RXBUF的数据要及时读走,不然RXBUF中的数据一直是首次接收的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驼背老卒徐骁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值