SPI协议

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,你看明白没?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • IIC 协议 特点 由SCL时钟线和SDA数据线传输 有的IIC接口的设备,内部有固化地址,有的设备可通过芯片接线...
    放风筝的小小马阅读 4,046评论 0 10
  • 重点是说SPI通信协议,,,, 不要害怕协议因为协议是人规定的,,刚好我也是人......规定的协议既然能成为规范...
    杨奉武阅读 1,049评论 0 1
  • SPI通信实验 SPI简介 串行外设接口(Serial Peripheral Interface Bus,SPI)...
    btskyrmb阅读 9,701评论 1 12
  • 1、嵌入式系统的定义 (1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本...
    荣卓然阅读 1,885评论 0 5
  • 关于SPI的教程有很多,这里写下自己学习SPI协议后的总结。 什么是SPI? SPI是Serial Periphe...
    安公子_阅读 11,858评论 0 5