SPI总线

一、SPI概述

 

SPI(Serial Peripheral interface),即串行外设接口,最初是由摩托罗拉设计的,主要用来访问EEPROM、ADC、FLASH等外部器件。这是一种高速、全双工的同步通信总线,一般由MOSI、MISO、SS(或者CS)和SCK四根线组成。简化版的SPI协议只有3根线,升级版的还有Dual SPI、Quad SPI等,这些都不在本文的讨论范围之类。

 

二、SPI的主要特点

 

1. 采用主从模式(Master-Slave)的控制方式

 

SPI协议规定只有主设备(Master)才可以发起传输,并产生时钟SCK和从设备(Slave)片选信号SS。一个主设备可以通过时钟信号SCK和片选信号SS控制多个从设备,从设备本身不能产生或者控制时钟信号SCK。主从模式可以通过设置SPI控制寄存器SPICR1的MSTR位切换。

 

2. 采用全双工、同步通信方式传输

 

因为具有MOSI和MISO两根数据线,所以可以同时在主从设备之间进行通信。当主设备需要传输数据时,主设备在SCK线上产生时钟信号,时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样,来保证数据在两个设备之间是同步传输的。

 

3. 数据互换(Data Exchange)

 

SPI设备都有一个8位的数据寄存器(SPI Data Register),当两个SPI设备组成主从模式时,这两个数据寄存器在物理上由MOSI和MISO连接成一个16位的分布寄存器。当进行数据传输时,由主设备产生的时钟把主设备的8位数据一位一位地移至从设备的数据寄存器,同时也把从设备的数据一位一位地移至主设备的数据寄存器,从而实现数据互换。如果此时是一个写操作,则主设备可以丢弃来自从设备的数据。

 

三、SPI总线的主要内容

 

1. SPI硬件逻辑框图

 

SPI硬件架构里面,主要的模块是状态寄存器、控制寄存器、数据寄存器、移位逻辑单元、波特率发生器、主从控制逻辑单元和端口控制逻辑单元。如下图所示:

 

2. 外部信号/引脚

 

名称

描述

MOSI

主设备输出、从设备输入信号

MISO

主设备输入、从设备输出信号

SS/CS

主设备输出的从设备片选信号

SCK

主设备输出的时钟信号

 

3. 四种工作模式

 

SPI的控制寄存器中有两个bit(CPOL和CPHA)分别控制时钟信号的极性(高电平和低电平)和相位(上升沿和下降沿),于是就产生了4种工作模式。

 

4. 波特率

 

SPI的波特率由总线时钟和SPI波特率寄存器决定。SPI波特率寄存器如下图所示:

波特率 = 总线时钟/波特率除数,其中波特率除数 = (SPPR + 1) \cdot 2^{(SPR + 1)}.

 

5. 数据传输

 

SPI主从设备连接框图如下图所示:

数据传输时序图如下:

注意:主从设备要同时工作在相同的模式才可以通信。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值