SPI原理详解

一,SPI接口简介

SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。

SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线(发送,接收,时钟,片选),节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

SPI是由“单个主设备+多个从设备”构成的系统 在系统中,只要任意时刻只有一个主设备是处于激活状态的,就可以存在多个SPI主设备。

二,SPI内部结构图

  上图种SPI共有4条信号线,分别是:

  • 主设备出、从设备入(Master Out Slave In,MOSI):由主设备向从设备传输数据的信号线,也称为从设备输入(Slave Input/Slave Data In,SI/SDI)。
  • 主设备入、从设备出(Master In Slave Out,MISO):由从设备向主设备传输数据的信号线,也称为从设备输出(Slave Output/Slave Data Out,SO/SDO)。
  • 串行时钟(Serial Clock,SCLK):传输时钟信号的信号线。
  • 从设备选择(Slave Select,SS/ Chip Select, CS):用于选择从设备的信号线,低电平有效, 由主设备控制

 stm32 上采用NSS管脚作为片选信号线,NSS有两种模式:

        ● 软件NSS: 可以通过设置SPI_CR1寄存器的SSM(Software slave management, SPI的SPI_CR1控制寄存器的第9bit)位来使能这

                种模式,在这种模式下NSS还可以作为其他用途,而内部NSS信号电平可以通过写SPI_CR1SSI位来驱动。当SSM为1时,

                NSS管脚的输入被SSI(空寄存器1的第8bit)值取代;当为0时,对应为外部NSS管脚的状态。

        ● 硬件NSS, 分两种情况

                • NSS输出被使能, 当STM32 工作为主SPI, 并且NSS的输出已经通过SPI_CR2寄存器的SSOE位使能,这时NSS管脚被拉

                        低。所有NSS引脚与这个主SPI的NSS引脚相连并配置为硬件NSSSPI备,将自动变成从SPI设备。

                         当一个SPI设备需要发送广播数据时,必须拉低NSS信号,以通知所有其他的设备它是主设备;如果布拉低意味着总线

                        上有其他主设备在通信,此时将产生一个硬件失败错误(Hard Fault)。

                • NSS输出被关闭,允许操作于多主机环境。

从图中可以看出, 主机和从机都有一个串行移位寄存器,主机通过向它的 SPI 串行寄存器写入一个字节来发起一次传输。寄存器通过 MOSI 信号线将字节传送给从机,从机也将自己的移位寄存器中的内容通过 MISO 信号线返回给主机。这样,两个移位寄存器中的内容就被交换。外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。

 SPI 主要特点有: 可以同时发出和接收串行数据; 可以当作主机或从机工作; 提供频率可编程时钟; 发送结束中断标志; 写冲突保护; 总线竞争保护等

SPI常用寄存器,SPI控制寄存器1SPI_CR1)SPI控制寄存器2SPI_CR2)SPI状态寄存器(SPI_SR)SPI数据寄存器(SPI_DR)SPI_I2S配置寄存器(SPI_I2S_CFGR)SPI_I2S预分频寄存器(SPI_I2SPR)

三,工作模式

SPI 总线四种工作(CPOL 与 CPHA组合)方式 SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置。

时钟极性(CPOL, Clock Polarity)对传输协议没有重大的影响, 控制的是没有数据传输时时钟的空闲状态电平,对主模式和从模式下的设备都有效。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果 CPOL=1,串行同步时钟的空闲状态为高电平。

时钟相位( CPHA,Clock Phase)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果 CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。 SPI 主模块和与之通信的外设备时钟相位和极性应该一致。

不同时钟相位下的总线数据传输时序如图所示:

四,数据帧格式 & 状态标志 & SPI 中断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值