SPI协议

作者: DrS6 | 来源:发表于2016-07-15 17:55 被阅读1347次

SPI的定义

SPI 是串行外设接口的英文缩写,是一种高速全双工通信总线。简单易用,最主要的是占用的管脚数量少,一般为4。

SPI基本概念

首先,介绍SPI通信中重要的四根线,分别是:CS,CLK,SDI, SDO,按照我个人理解的含义如下:

CS:片选标识,用来确定数据有效性;

CLK:时钟,越快读写也就越快;

SDI:数据输入端口;

SDO:数据输出端口。

这里也写一下比较官方的解释:

CS – 从设备使能信号,由主设备控制;

CLK – 时钟信号,由主设备产生;

SDI – 主设备数据输入,从设备数据输出;

SDO – 主设备数据输出,从设备数据输入。

SPI通信协议中有主从机的说法,主机产生时钟信号,控制片选信号。数据的输入输出是相对与主机从机来定义,主机的输入就是从机的输出。此外,CS片选高电平有效还是低电平有效取决于用户自身定义。

SPI如何工作

下面站在主机的角度简述SPI如何通讯,假定片选高有效。

1主机将CS片选管脚设置为高电平;

2CLK设置为高电平;

3CLK设置为低电平;

4写数据到从机,操作SDO为高电平或者低电平(读数据则是操作SDI),这里每个时钟脉冲只操作一个字节;

5重复234,直到需要操作的数据传输完毕;

6重新设置CS片选低电平。

再来个不生动的栗子:需要发送数据8到从机,8的二进制表示为1000,这时我们这么做:

set CS = 1;

set CLK =1;

set CLK = 0;

set SDO = 1;//第一个时钟 发送最高位数据

set CLK =1;

set CLK = 0;

set SDO = 0;//第二个时钟 发送次高位数据

set CLK =1;

set CLK = 0;

set SDO = 0;//第三个时钟 发送次低位数据

set CLK =1;

set CLK = 0;

set SDO = 0;//第四个时钟 发送最低位数据

set CS = 0;

至此数据发送完毕。这里有需要注意的问题就是数据的对齐格式,直接决定了数据的发送规则,是从左到右发,还是从右到左,主从机协调合理,数据不会错乱。

下面再上一张时序图(感谢设计师大人赞助的时序波形图,虽然没怎么上心),比较直观

时序波形图

SPI一般是有现成的可使用代码接口,今天介绍的是最简单的SPI协议,实际工作中需要定制SPI协议。了解了简单的原理,使用C实现一个SPI应该很简单了。


最后,谢谢阅读。不知道对于SPI,你看明白没?

相关文章

  • SPI接口

    SPI接口扫盲 SPI定义/SPI时序(CPHA CPOL) SPI详解 SPI总线协议

  • 第20课 SPI协议详解及裸机程序开发分析

    第001节_SPI协议介绍 市面上的开发板很少接有SPI设备,但是SPI协议在工作中经常用到。我们开发了SPI模块...

  • Verilog实现SPI协议

    关于SPI的教程有很多,这里写下自己学习SPI协议后的总结。 什么是SPI? SPI是Serial Periphe...

  • SPI协议

    关键词 串行外设接口 摩托罗拉公司发明 SDO 输出 ,SDI 输入,SCK时钟,CS片选 区分主机 和从机。可以...

  • SPI协议

    SPI的定义 SPI 是串行外设接口的英文缩写,是一种高速全双工通信总线。简单易用,最主要的是占用的管脚数量少,一...

  • 2017

    今天我们继续学习了SPI通讯协议。SPI是串行外设接口(Serial Peripheral Interface)的...

  • SPI学习-1(概述/协议)

    分两步学习 第一步:了解SPI协议 第二步:linux spi driver的实现 1、什么是SPI? SPI是串...

  • STM32CubeMX学习笔记(10)——SPI接口使用

    一、SPI简介 SPI(Serial Peripheral Interface) 协议是由摩托罗拉公司提出的通讯协...

  • ESP32学习笔记(19)——SPI(主机)接口使用

    一、SPI简介 SPI(Serial Peripheral Interface) 协议是由摩托罗拉公司提出的通讯协...

  • SPI协议详解

    SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。正是由于有了通信方...

网友评论

      本文标题:SPI协议

      本文链接:https://www.haomeiwen.com/subject/oomyjttx.html