APB_SPI项目学习笔记

1.SPI协议简介

SPI(串行外设接口Serial Peripheral Interface)用于串行外设接口通信的协议。主要应用于嵌入式系统的短距离通信,典型应用为闪存(Flash)或液晶显示接口。

应用:手机、数码、液晶显示器、机顶盒

主要特点有:高速、全双工、同步、串行、主从结构。并且该协议接口只需占用四根线,大大节约了芯片的管脚数量,同时为PCB(印制电路板 Printed Circuit Board)的布局布线提供了方便。正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议接口,比如AT91RM9200

  • SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)、CS(片选)
  • 其中,CS是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。这就使在同一条总线上连接多个SPI设备成为可能。
  • 接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。因此,至少需要8次时钟信号的改变(上沿和下沿为一次),才能完成8位数据的传输
  • 时钟信号线SCLK只能由主设备控制,从设备不能控制。同样,在一个基于SPI的设备中,至少有一个主设备。这样的传输方式有一个优点,在数据位的传输过程中可以暂停,也就是时钟的周期可以为不等宽,因为时钟线由主设备控制,当没有时钟跳变时,从设备不采集或传送数据。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。芯片集成的SPI串行同步时钟极性和相位可以通过寄存器配置,IO模拟的SPI串行同步时钟需要根据从设备支持的时钟极性和相位来通讯。
  • SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据

SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,主要是在sck的控制下,两个双向移位寄存器进行数据交换。假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。那么第一个上升沿来的时候数据将会是sdo=1;寄存器=0101010x。下降沿到来的时候,sdi上的电平将锁存到寄存器中去,那么这时寄存器=0101010sdi,这样在 8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成了一个spi时序。

SPI总线的 传输速率 需要自定义,没有具体的规定,一般为:400KHz~10MHz(AHB:100MHz,APB:50MHz)

  • 主要功能 :实现CPU与各种外接设备连接(芯片与芯片之间的连接),以串行的方式进行数据交换(串并转换)
  • 拓扑结构 :一个SPI Master可以通过共享数据线的方式可以连接多个SPI Slave(一主多从)
  • 接口配置 :作为芯片与芯片之间互连的接口,通过配置寄存器实现主控芯片(SPI Master)对外围芯片(SPI Slave)的配置

2.SPI协议详解

SPI特点:主从结构、同步、串行、全双工通信接口(需要记住)

  • 主从结构:SPI区分Master和Slave(谁产生时钟,谁就是Master)
  • 同步:Slave使用Master提供的SCLK
  • 串行:MOSI和MISO为单bit串行信号
  • 全双工:master和slave收发可以同时进行(全双工类比手机;半双工类比对讲机)

1、同步方式(Synchronous)传输数据
Master设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性 (CPOL) 和时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输

2、主-从结构(Master-Slave)的控制方式
SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave)。一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选(Slave Select) 来控制多个 Slave 设备, SPI 协议还规定 Slave 设备的 Clock 由 Master 设备通过 SCLK 管脚提供给 Slave 设备, Slave 设备本身不能产生或控制 Clock。

3、串行、全双工方式数据交换(Data Exchanges)
SPI 设备间的数据传输之所以又被称为数据交换(全双工通信) , 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 “发送者(Transmitter)” 或者 “接收者(Receiver)”. 在每个 Clock 周期内, SPI 设备都会发送并接收一个 bit 大小的数据(串行通信) (不管主设备好还是从设备),相当于该设备有一个 bit 大小的数据被交换了。

需要说明的是:SPI只有主模式和从模式之分,没有读和写的说法,因为实质上每次SPI是主从设备在交换数据。也就是说,每发一个数据必然会收到一个数据;要收一个数据必须也要先发一个数据

3.SPI接口信号

信号含义描述
SCLK  Serial Clock、时钟信号线Master 设备往 Slave 设备传输时钟信号, 同步控制数据交换的时机以及速率
MOSIMaster Ouput Slave Input、主设备输出从设备输入数据线在 Master 上面也被称为 Tx-Channel, 作为数据的出口, 用于SPI主设备发送数据
MISOMaster Input Slave Ouput、主设备输入从设备输出数据线在 Master 上面也被称为 Rx-Channel, 作为数据的入口, 主要用于SPI从设备接收数据
SS_nSlave Select、从机选择线,低电平有效Master 设备片选 Slave 设备, 使被选中的 Slave 设备能够被 Master 设备所访问

每个从设备都需要一个SS_n信号,SS_n信号与从设备数相同

当有多个从设备时,最多只能有一个从设备被选中

未被选中的从设备输出一般体现为高阻,为了不影响被选中的从设备输出

SS_n、SCK、MOSI信号均由主设备产生,MISO信号由从设备产生。在SS_n为低电平的前提下,MOSI和MISO信号才有效,在每个时钟周期MOSI和MISO传输一位数据

3.SPI接口时序

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值