SPI总线协议

一、SPI总线的组成及工作原理

概念

摩托罗拉 (Motorola )公司推出SPI(Serial Perripheral Interface) 串行外围设备接口, 首先在其MC68HCXX系列处理器上定义。是一种高速的,全双工,同步串行通信总线,并且在芯片的管脚上只占用四根线 。SPI协议主要用于短距离的通信系统中,特别是嵌入式系统,比如以下芯片:
存储器:RAM,EEPROM,Flash等。
数模转换:A/D,D/A转换器等。
驱动接口:LED显示驱动器、I/O接口芯片、UART收发器等。
从SPI NOR Flash公司兆易创新网站上下载一份GD5F2GQ4xFxxG–datasheet为参考,文末附链接。

这里再补充一下概念:
全双工(Full Duplex)是指在发送数据的同时也能够接收数据。
半双工(Half Duplex)是指一个时间段内只有一个动作发生。
同步通信:连续字符块传送方式,双方时钟和波特率一致,效率高。
异步通讯:一个字符为单位传送,双方各用自己的时钟源,效率低。

接口

SPI接口可以是3线式(单向传输)或4线式,在此只介绍常用的4线接口。
4线SPI器件有四个信号:
(1) MOSI – 主机输出从机输入数据线(SDI);
(2) MISO – 主机输入从机输出数据线(SDO);
(3)SCLK – 主设备时钟(spi clock);
(4)CS – 主设备控制片选;
SPI接口只能有一个主机,可以挂多个从机。主机的通过片选信号(CS)选择从机,低电平有效,拉高时SPI总线与从机断开连接。当使用多个从机时,主机需要为每个从机提供单独的片选信号。
在这里插入图片描述

二、数据传输

SPI 设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 “发送者(Transmitter)” 或者 “接收者(Receiver)”. 在每个 Clock 周期内, SPI 设备都会发送并接收一个 bit 大小的数据。
在一个SPI时钟周期内:
1)主机通过MOSI线发送1位数据,从机读取这1位数据。
2)从机通过MISO线发送1位数据,主机读取这1位数据。
这是通过移位寄存器来实现的。主机和从机各有一个移位寄存器,二者连接成环。随着时钟脉冲,数据按照从高位到低位的方式依次移出主机寄存器和从机寄存器,并且依次移入从机寄存器和主机寄存器。
在这里插入图片描述

三、通讯模式

SPI接口可由CPOL和CPHA设置4种不同传输格式时序,
Mode0:CPOL=0,CPHA=0
Mode1:CPOL=0,CPHA=1
Mode2:CPOL=1,CPHA=0
Mode3:CPOL=1,CPHA=1
该模式取决于SCLK电平,有时称为极性(CPOL),当传输开始时(CS拉低)和称为相位(CPHA)的采样边。请注意,相位是相对于极性的,不是绝对值
CPOL时钟极性,表示 SPI 空闲时,时钟信号是高电平还是低电平。CPHA用来配置数据采样在第几个边沿:
CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时。
CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时。
CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿。
CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿。
例:
CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。
在这里插入图片描述
在这里插入图片描述
需要注意的是,不同的从设备一般在出厂时就配置为某种模式,这是不能改变的;所以我们需要对主设备的SPI模式进行配置,通过配置CPOL和CPHA来控制主设备的通信模式。如图只支持mode0 mode3,都是CLK的上升沿采样数据。
在这里插入图片描述
四种SPI模式下通讯示例及多从机配置(常规模式 菊花链模式)见SPI接口简介–ADI

关于I2C总线协议有兴趣可以看看。

参考链接:
[1].跟IC君一起学电路
[2].SPI接口简介–ADIADI公司,Piyu Dhaker
[3].应用笔记AN-1248:SPI接口ADI公司,2015年9月。
[4].ADuCM3029–datasheet(中文)ADI公司,2017年3月。
[5].spi通讯模式「swang_shan」的原创文章]
[6].C51 模拟spi协议「xiaopangzi313」的原创文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值