SPI总线 通俗易懂讲解
SPI总线组成及其工作原理

SPI总线组成及其工作原理SPI(Serial Peripheral Interface)是一种同步串行通信总线,常用于连接微控制器与外部设备,如传感器、存储器、外设等。
SPI总线由四条信号线组成,包括SCLK(串行时钟线),MOSI(主设备输出从设备输入线),MISO(主设备输入从设备输出线)和SS(片选信号线)。
以下将详细介绍SPI总线的工作原理和其组成部分。
SPI总线采用主从架构,由一个主设备(如微控制器)和一个或多个从设备(如传感器、存储器等)组成。
主设备通过SCLK产生时钟信号来驱动整个通信过程。
主设备通过MOSI线发送数据到从设备,从设备通过MISO线传输数据给主设备。
每个从设备都有一个片选信号线(SS),用于使能该从设备。
当主设备需要与一些从设备通信时,将对应的片选信号线拉低,使该从设备处于选中状态。
1.SCLK(串行时钟线):SCLK是SPI通信中的时钟信号,由主设备通过该线产生并驱动。
SCLK信号的频率可以由主设备控制,通常可以在MHz级别。
SCLK的上升沿和下降沿都用于同步数据传输。
数据在SCLK的上升沿或下降沿的边沿进行读写操作。
2.MOSI(主设备输出从设备输入线):MOSI是主设备输出从设备输入的数据线。
主设备通过MOSI将数据传输给从设备。
数据在每个SCLK周期的上升沿或下降沿被写入。
3.MISO(主设备输入从设备输出线):MISO是主设备输入从设备输出的数据线。
从设备通过MISO将数据传输给主设备。
数据在每个SCLK周期的上升沿或下降沿被读取。
4.SS(片选信号线):每个从设备都有一个对应的SS信号线。
当主设备需要与一些从设备通信时,将该从设备的SS信号线拉低,使该从设备处于选中状态。
当通信结束后,SS信号线会被拉高,表示该从设备不再被选中。
1.主设备通过控制SS信号线,选中一些从设备开始通信。
2.主设备通过SCLK产生时钟信号,并通过MOSI线发送数据给从设备。
3.从设备在SCLK的上升沿或下降沿将数据写入MISO线,传输给主设备。
串行外设接口(SPI)总线解析及应用

串行外设接口(SPI)总线解析及应用
串行外设接口(SPI)总线是一个工作在全双工模式下的同步串行数据链路。
它可用于在单个主控制器和一个或多个从设备之间交换数据。
其简单的实施方案只使用四条支持数据与控制的信号线(图1):
虽然表1 中的引脚名称来自摩托罗拉开发的SPI 标准,但具体集成电路的SPI 端口名称往往与图1 中所示的不同。
图1:基本SPI 总线
表1:SPI 引脚名称分配
SPI 数据速率一般在1 到70MHz 的范围内,字长为从8 位及12 位到这两个值的倍数。
数据传输一般由数据交换构成。
在主控制器向从设备发送数据时,从设备也向主控制器发送数据。
因此主控制器的内部移位寄存器和从设备都采用环形设置(图2)。
图2:双移位寄存器形成一个芯片间的环形缓存器
在数据交换之前,主控制器和从设备会将存储器数据加载至它们的内部移位寄存器。
收到时钟信号后,主控制器先通过MOSI 线路时钟输出其移位寄存器的MSB。
同时从设备会读取位于SIMO 的主控器第一位元,将其存储在存储器中,然后通过SOMI 时钟输出其MSB。
主控制器可读取位于MISO 的从设备第一位元,并将其存储在存储器中,以便后续处理。
整个过程将一直持续到所有位元完成交换,而主控器则可让时钟空闲并通过/SS 禁用从设备。
【硬见小百科】SPI总线是什么?

【硬见小百科】SPI总线是什么?SPI全称是串行外设接口(Serial Peripheral Interface),是由Motorola提出的一种全双工(全双工指可以同时(瞬时)进行信号的双向传输(A→B且B→A))同步串行通信接口,通信波特率可以高达5Mbps,但具体速度大小取决于SPI硬件。
SPI总线只需四条线就可以完成MCU与各种外围器件的通讯。
1)MOSI(SDI ) – Master数据输出,Slave数据输入;2)MISO (SDO) – Master数据输入,Slave数据输出;3)SClK –时钟信号,由Master产生;4)/CS – Slave使能信号,由Master控制。
SPI通信就是采用这样的主从模式(Master-Slave)架构,一般为一个Master和多个Slave的应用模式。
切记,谁为主,谁提供SCLK 时钟信号。
SPI通讯就需要这四根线。
其中,CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时,对此芯片的操作才有效。
这就允许在同一总线上连接多个SPI设备成为可能。
接下来再负责通讯的3根线就可以了。
SPI也是串行通讯协议,也就是说数据是一位一位的传输的。
这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。
操作时序很简单,如下:看见时序图了,就知道怎么通讯了。
SPI接口在Master控制下产生的从器件使能信号和时钟信号,两个双向移位寄存器按位传输进行数据交换,传输数据高位在前,低位在后(MSB first)。
在SCK的下降沿上数据改变,上升沿一位数据被存入移位寄存器。
换个说法,SPI是一个环形总线结构,主要是在sck的控制下,两个双向移位寄存器进行数据交换。
对于主机来说,上升沿发送、下降沿接收、高位先发送。
上升沿到来的时候,sdi上的电平将被发送到从设备的寄存器中。
从M_Sbuff寄存器的7位,发送到S_Sbuff寄存器的0位;下降沿到来的时候,sd噢上的电平将被接收到主设备的寄存器中。
SPI总线介绍 PPT

DS1302的工作原理
单片机开始数据传送时,必须将DS1302的/RST置高,且把 包含有地址和命令信息的8位数据发送给DS1302.
数据在SCLK的上升沿入,下降沿串行出;
单片机对DS1302的读/写是命令字来初始化的。命令字格式:
命令字节的D7必须为1,若D7=0,写保护; D6=0,表示存取日历时钟数据;D6=1,表示存取RAM数据. D5~D1指示操作单元的地址; D0=0,表示写;D0=1,表示读;
实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数; 用于高速数据暂存的31×8 RAM; 简单的SPI三线串口; /RST引脚:复位兼片选,读/写操作时必须为高电平。
大家好
单片机与DS1302的接口
大家好
大家应该也有点累了,稍作休息
大家有疑问的,可以询问和交流
12
DS1302的内部结构
多字节写操作:单片机通过8个sclk下降沿传送命令字 节后,在接下来的8个sclk时钟的下降沿传送一字节数 据,以次类推。
多字节读操作::单片机通过8个sclk下降沿传送命令 字节后,在紧接着的的8个sclk时钟的下降沿DS1302 传送一字节数据,以次类推。
大家好
特殊寄存器
在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送 命令字节。若进行单字节传送,8位命令字节传送结束之后,在下8个 SCLK周期的下降沿输出数据字节。
SCLK – 用来为数据通信提供同步时钟信号,由主设备产生
CS
– 从设备使能信号,由主设备控制
SPI接口是全双工、同步、串口、单主机。
大家好
SPI从机的内部结构
SPI从机从主机获得时钟和片选信号,因此cs和sclk都是输 入信号。
SPI详解

1、 SPI简介SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。
首先在其MC68HCXX系列处理器上定义的。
SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。
2、 SPI特点2.1采用主-从模式(Master-Slave) 的控制方式SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave). 一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选 (Slave Select) 来控制多个 Slave 设备, SPI 协议还规定Slave 设备的 Clock 由 Master 设备通过 SCK 管脚提供给 Slave 设备, Slave 设备本身不能产生或控制 Clock, 没有 Clock 则 Slave 设备不能正常工作2.2采用同步方式(Synchronous)传输数据Master 设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性 (CPOL) 和时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的.2.3数据交换(Data Exchanges)SPI 设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 "发送者(Transmitter)" 或者 "接收者(Receiver)". 在每个 Clock 周期内, SPI设备都会发送并接收一个 bit 大小的数据, 相当于该设备有一个 bit 大小的数据被交换了. 一个 Slave 设备要想能够接收到 Master 发过来的控制信号, 必须在此之前能够被 Master 设备进行访问 (Access). 所以, Master 设备必须首先通过 SS/CS pin 对 Slave 设备进行片选, 把想要访问的 Slave 设备选上. 在数据传输的过程中, 每次接收到的数据必须在下一次数据传输之前被采样. 如果之前接收到的数据没有被读取, 那么这些已经接收完成的数据将有可能会被丢弃, 导致 SPI 物理模块最终失效. 因此, 在程序中一般都会在 SPI 传输完数据后, 去读取 SPI 设备里的数据, 即使这些数据(Dummy Data)在我们的程序里是无用的。
spi总线工作原理

spi总线工作原理
SPI(Serial Peripheral Interface)总线是一种同步串行通信协议,它主要用于在微控制器或其他数字集成电路之间传输数据。
SPI总线由一个主设备(Master)和一个或多个从设备(Slave)组成。
主设备通过与从设备之间发送和接收数据的方式来与其进行通信。
SPI总线的工作原理如下:
1. 首先,主设备选择要与之通信的从设备。
这是通过在片选引脚上拉低电平来实现的。
其他从设备的片选引脚应保持高电平。
2. 接着,主设备通过时钟引脚(SCK)生成时钟信号,此时数据传输开始。
3. 主设备通过主输出(MOSI)引脚发送数据,从设备通过主输
入(MISO)引脚接收数据。
在每个时钟周期中,主设备和从设
备在SCK上的上升沿或下降沿进行数据交换。
4. 数据传输时,主设备先发送一个起始位(通常是高电平)并将其传输到从设备。
5. 接下来,主设备和从设备同时发送并接收数据,每一个时钟周期传输一个位。
数据传输的顺序是从最高位(MSB)到最
低位(LSB)。
6. 当所有数据位都传输完毕后,主设备通过拉高片选引脚结束
与从设备的通信。
7. 在通信结束后,主设备可以选择与其他从设备进行通信,或者在下一个时钟周期中重新选择与之前的从设备进行通信。
SPI总线的工作原理简单而直观。
它具有高速、可简化电路设计等优点,因此在很多嵌入式系统中得到了广泛应用。
SPI总线定义
SPI概述SPI:高速同步串行口。
3~4线接口,收发独立、可同步进行.SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。
是Motorola首先在其MC68HCXX 系列处理器上定义的。
SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM9200.SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。
外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。
SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOST和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。
也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。
(1)SDO –主设备数据输出,从设备数据输入(2)SDI –主设备数据输入,从设备数据输出(3)SCLK –时钟信号,由主设备产生(4)CS –从设备使能信号,由主设备控制其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。
这就允许在同一总线上连接多个SPI设备成为可能。
SPI总线协议介绍
SPI总线协议介绍1.SPI总线协议介绍串行外围设备(接口)(Serial Peripheral Interface,SPI)是一种高速、全双工、同步(通信)总线,常用于(单片机)和E2PROM、FLASH、(实时时钟)、(数字信号)(处理器)等器件之间的通信,它主要是主从方式通信,通常只有一个主机和多个从机。
标准SPI协议有4根线,SCLK(必须存在),其他三条线(MOSI、MISO、CS)都可以根据实际情况进行删减。
SCLK:(时钟)(信号),由主机产生( 必须存在)MOSI:主机给从机发送指令或数据的通道MISO:主机读取从机的状态或数据的通道CS:从机片选使能信号在同一时刻,主机只能跟一个从机进行通信。
当总线上存在多个从机时,需要进行片选将从机的CS接口电平拉高或拉低。
2.SPI总线寻址模式SPI协议和(I2C)协议一样,数据是从高位到低位依次发送,SPI协议中SCLK在空闲时可以是高电平也可以是低电平。
下面以空闲时,SCLK为高电平举例。
当SCLK出现下降沿即从高电平跳到低电平时,进行数据输出;当SCLK出现上升沿即从低电平跳到高电平时,进行数据采样。
SPI总线寻址模式和I2C协议相比,SPI协议没有开始位、停止位、应答位,规则上简单很多。
SPI协议中SCLK在空闲时可以是高电平也可以是低电平,这其实反映了时钟的极性。
上图中,CPOL=1,CPHA=1 。
CPOL时钟极性:CPOL=0,SCLK空闲时状态为低电平CPOL=1,SCLK空闲时状态为高电平时钟的相位:它决定了什么时候进行数据输出,什么时候进行数据采样。
CPHA时钟相位:CPHA=0,每个周期的第一个跳变沿进行数据采样CPHA=1,每个周期的第一个跳变沿进行数据输出。
SPI通信协议(SPI总线)学习
SPI通信协议(SPI总线)学习
SPI(Serial Peripheral Interface)是一种同步的、全双工的通信总线,常用于连接微
控制器和外围设备。
SPI总线的通信协议相对简单,有四根信号线组成:SCLK(时钟
信号)、MOSI(主机输出从机输入信号)、MISO(主机输入从机输出信号)和SS (片选信号)。
SPI总线的工作方式如下:
1. 选择从机:主机通过将片选信号(SS)置低来选择要通信的从机。
通常每个从机都
有独立的片选线。
2. 时钟信号:主机通过时钟信号(SCLK)提供同步时钟给从机,控制数据传输的时钟周期。
3. 主机输出从机输入:主机将要发送给从机的数据通过主机输出从机输入信号(MOSI)发送给从机。
数据按照时钟的上升沿或下降沿传输。
4. 主机输入从机输出:从机将要发送给主机的数据通过主机输入从机输出信号(MISO)传输给主机。
数据按照时钟的上升沿或下降沿传输。
5. 数据传输顺序:数据传输是基于时钟信号的,每个时钟周期传输一个位。
主机和从
机按照特定的数据传输格式进行通信,可以是先传输最高有效位(MSB)或最低有效
位(LSB)。
6. 数据传输模式:SPI总线支持多种数据传输模式,如模式0、模式1、模式2和模式3,不同模式下时钟信号和数据传输的相位和极性不同。
7. 传输完成:主机通过将片选信号(SS)置高来结束通信。
SPI总线的优点是简单、高速、低成本,适用于连接多种外设,如传感器、存储器、显示器等。
然而,SPI总线并没有提供错误检测和纠正机制,需要通过其他方式保证数据的可靠性。
SPI接口总线介绍
SPI接口总线介绍SPI 可以作为主、从器件工作,并可在同一总线上支持多个主、从器件。
SPI 主要使用3 个信号。
(1)主输出、从输入(MOSI)用于主器件到从器件的串行数据传输。
SPI 作为主器件,信号为输出;SPI 作为从器件,信号为输入。
当被配置为主器件时,MOSI 由移位寄存器的MSB 驱动。
(2)主输入、从输出(MISO)用于从器件到主器件的串行数据传输。
SPI 作为主器件,信号为输入;SPI 作为从器件,信号为输出。
当作为从器件工作时,MISO 由移位寄存器的MSB 驱动。
(3)串行时钟(CLK)用于同步主器件和从器件之间在MOSI 和MISO 线上的串行数据传输。
当SPI 作为主器件时产生该信号。
SD 卡总线知识介绍SD 总线允许强大的1 线到4 线数据信号设置。
当默认的上电后,SD 卡使用DAT0。
初始化之后,主机可以改变线宽(译者按:即改为2 根线,3 根线...)。
混和的SD 卡连接方式也适合于主机。
在混和连接中Vcc,Vss 和CLK 的信号连接可以通用。
但是,命令,回复,和数据(DAT0~3)这几根线,各个SD卡必须从主机分开。
这个特性使得硬件和系统上交替使用。
SD 总线上通信的命令和数据比特流从一个起始位开始,以停止位中止。
CLK:每个时钟周期传输一个命令或数据位。
频率可在0~25MHz 之间变化。
SD 卡的总线管理器可以不受任何限制的自由产生0~25MHz 的频率。
CMD:命令从该CMD 线上串行传输。
一个命令是一次主机到从卡操作的开始。
命令可以以单机寻址(寻址命令)或呼叫所有卡(广播命令)方式发送。
回复从该CMD 线上串行传输。
一个命令是对之前命令的回答。
回复可以来自单机或所有卡。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SPI总线通俗易懂讲解
SPI总线
MOTOROLA公司的SPI总线的基本信号线为3根传输线,即SI、SO、SCK。
传输的速率由时钟信号SCK决定,SI为数据输入、SO为数据输出。
采用SPI总线的系统如图8-27所示,它包含了一个主片和多个从片,主片通过发出片选信号-CS来控制对哪个从片进行通信,当某个从片的-CS信号有效时,能通过SI接收指令、数据,并通过SO发回数据。
而未被选中的从片的SO端处于高阻状态。
图8-27 SPI总线的系统
主片在访问某一从片时,必须使该从片的片选信号有效;主片在SCK信号的同步下,通过SI线发出指令、地址信息;如需将数据输出,则接着写指令,由SCK同步在SI线上发出数据;如需读回数据,则接着读指令,由主片发出SCK,从片根据SCK的节拍通过SO发回数据。
因而对具有SPI接口的从片器件来讲,SCK、SI是输入信号,SO是输出信号。
SCK 用于主片和从片通信的同步。
SI用于将信息传输到器件,输入的信息包括指令、地址和数据,指令、地址和数据的变化在SCK的低电平期间进行,并由SCK信号的上升沿锁存。
SO用于将信息从器件传出,传出的信息包括状态和数据,信息在SCK信号的下降沿移出。
Microchip公司的25XX系列的串行E2PROM采用了SPI总线,该系列器件的性能如表8-2所示。
表8-2 Microchip公司的25XX系列的串行E2PROM
以25XX320为例,该器件是4K字节的E2PROM,结构如图8-28所示,接口信号为SCK、SI和SO,此外还具有-CS、-WP、-HOLD信号线。
其中-CS为器件选中信号,当此信号为低电平时器件被选中,高电平时器件处于等待状态。
图8-28 25XX320的结构
与并行接口电路不同的是,在并行接口电路中对器件进行操作的控制信号,在串行接口电路中只能用指令实现,25XX320的操作指令有数据读指令、写操作的允许和禁止指令、
写数据指令和状态寄存器的读写指令。
在器件的内部有一个8位的指令寄存器,在SCK的上升沿,通过SI信号线,指令输入到上述寄存器并被执行。
表8-3 25系列串行存储器的指令
器件的读操作时序如图8-29所示。
当-CS信号有效时,在SCK信号的同步下,8位的读指令送入器件,接着送入16位地址(由于25XX320只使用地址信号A0~A11,地址的高4位无效)。
在读指令和地址发出后,SCK继续发出时钟信号,此时存储在该地址的数据由SCK控制从SO引脚移出。
在每个数据移出后,内部的地址指针自动加1,如继续对器件发送SCK信号,可读出下一个数据。
当地址指针计到0FFFH之后,将回到0000H。
读操作的结束由-CS信号变高实现。
图8-29 25系列串行存储器的读时序
25XX系列的串行EEPROM的写操作通过写允许及禁止指令控制,写操作必须在器件
处于写允许状态时进行。
写允许及禁止指令均为8位的指令,指令的操作过程为:将-CS信号置为低电平,在SCK信号的作用下,通过SI引脚输入上述指令,在8位的指令送入器件之后,将-CS信号置为高电平,使器件锁存于写允许或写禁止状态。
如在输入写允许指令后未将-CS信号置为高电平,则写允许状态未锁存,此时如直接进行写操作,数据将不能写入存储器。
在上电、写禁止指令、写状态寄存器指令、写数据指令执行之后,器件的写允许状态将被复位,即处于写禁止状态。
写操作通常在写允许指令之后进行,其时序如图8-30所示。
在写允许状态锁存后,将-CS变高;再将-CS变低,在SCK的同步下输入写操作指令并送入16位地址,紧接着发送需写入的数据,写入的数据一次最多可达32个,但必须保证在同一页内。
一页数据的地址从XXXXXXXX XXX0 0000 开始,到XXXX XXXX XXX1 1111结束,当内部的地址指针计数器达到XXXX XXXX XXX11111后,继续发送时钟信号将使地址计数器回复到该页的第一个地址,即XXXX XXXX XXX0 0000H。
图8-30 25系列串行存储器的写时序
为了使数据有效写入,-CS信号只能在写入数据的最后一个字节的最低位写入后变高。
如-CS信号在其他时间变高,将无法保证数据的完整写入。
在写操作的过程中,能通过读状
态指令将状态寄存器的内容读回,当写操作完成后,写允许锁存状态将被复位。
优缺点
SPI接口具有如下
优点:
1) 支持全双工操作;
2) 操作简单;
3) 数据传输速率较高。
缺点:
1) 需要占用主机较多的口线(每个从机都需要一根片选线);
2) 只支持单个主机。
3) 没有指定的流控制,没有应答机制确认是否接收到数据。
如果还是看不懂,那就再通俗点。
SPI总线协议介绍
一、技术性能
SPI接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(MasterSlave)架构;支持多slave模式应用,一般仅支持单Master。
时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSBfirst);SPI接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps的水平。
总线结构如下图所示。
二、接口定义
SPI接口共有4根信号线,分别是:设备选择线、时钟线、串行输出数据线、串行输入数据线。
(1)MOSI:主器件数据输出,从器件数据输入
(2)MISO:主器件数据输入,从器件数据输出
(3)SCLK:时钟信号,由主器件产生
(4)/SS:从器件使能信号,由主器件控制
三、内部结构
四、时钟极性和时钟相位
在SPI操作中,最重要的两项设置就是时钟极性(CPOL或UCCKPL)和时钟相位(CPHA 或UCCKPH)。
时钟极性设置时钟空闲时的电平,时钟相位设置读取数据和发送数据的时钟沿。
主机和从机的发送数据是同时完成的,两者的接收数据也是同时完成的。
所以为了保证主从机正确通信,应使得它们的SPI具有相同的时钟极性和时钟相位。
SPI接口时钟配置心得:在主设备这边配置SPI接口时钟的时候一定要弄清楚从设备的时钟要求,因为主设备这边的时钟极性和相位都是以从设备为基准的。
因此在时钟极性的配置上一定要搞清楚从设备是在时钟的上升沿还是下降沿接收数据,是在时钟的下降沿还是上升沿输出数据。
五、传输时序
SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的
从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。
如下图所示,在SCLK 的下降沿上数据改变,上升沿一位数据被存入移位寄存器。
五、数据传输
在一个SPI时钟周期内,会完成如下操作:
1)主机通过MOSI线发送1位数据,从机通过该线读取这1位数据;
2)从机通过MISO线发送1位数据,主机通过该线读取这1位数据。
这是通过移位寄存器来实现的。
如下图所示,主机和从机各有一个移位寄存器,且二者连接成环。
随着时钟脉冲,数据按照从高位到低位的方式依次移出主机寄存器和从机寄存器,并且依次移入从机寄存器和主机寄存器。
当寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换。