自学内容网 自学内容网

SPI协议简介

SPI协议简介

SPI(Serial Peripheral Interface)协议,中文叫串行外设接口,是一种应用于嵌入式系统中的短距离通信,该协议是由摩托罗拉公司在上世纪定义的一种高速、全双工的总线协议。
相比I2C协议更加高速,而且协议本身的定义也更加容易理解,使用起来也更加简单,缺点就是占用了4个单片机引脚,这还不包括VCC和GND。可以支持一个主机多个从机的全双工通信,当然主机同时也只能跟一个从机通信。

引脚定义

  1. **SS:**从机设备选择,低电平有效,由主机进行控制,主机把它拉低就代表该引脚连着的那个从机被选中,此时轮到该从机和主机进行通信
  2. **SCLK:**时钟信号,也是由主机控制,主机控制时钟线的上升及下降来触发主从机的数据交换
  3. **MOSI:**主机输出,从机输入,是用于主机给从机发送数据用的
  4. **MISO:**主机输入,从机输出,是用于主机接收从机发来的数据用的

通信时序

整个通信过程是由主从机的CPOL(时钟极性)和CPHA(时钟相位)配置定义以及他们各自的移位寄存器,再配合主机控制SCLK时钟线的上下跳变,来完成各自移位寄存器之间的数据交换,来实现数据传输的。比较拗口一个个来解释
1)CPOL(时钟极性)和CPHA(时钟相位)配置定义
他们分别可以设置为0、1,加一起就组成了以下4种通信模式:

在这里插入图片描述
主机从机必须使用的相同的模式才能正确通信
2)移位寄存器
主从机各自都有一个字节也就是8bit的移位寄存器,当模式0时,空闲的SCK时钟线由主机控制拉高,则主机会读取MISO的信号位写到自己移位寄存器的最低位,从机会读取MOSI的信号位写到自己移位寄存器的最低位,然后主机再控制SCK时钟线拉低为空闲,这时主从机各自的移位寄存器向左移一位。这个过程重复8次,即可完成主从机移位寄存器一个字节的数据交换。
使用模式0由主机发送11011010给从机的时序图如下:
在这里插入图片描述
关注红框的8个时钟线的上升沿,为8个采样时刻,分别捕获到MOSI线的11011010,就选算是给从机发送了一个字节的0xDA。
其实的模式也是类似的,只是SCLK的空闲电平以及采样时刻不一样,据说用的最多的也是模式0,很久没用了,如有错误可以提醒我改正


原文地址:https://blog.csdn.net/chengpei147/article/details/143689603

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!