SPI全双工与半双工

目录

SPI全双工

SPI半双工


SPI全双工

SPI全双工,参考《野火STM32库开发指南》

四线模式(NSS, SCK, MOSI, MISO)的基本通信时序见下图

SPI全双工与半双工_第1张图片

图1 SPI全双工的某一种通信时序图

通信开始,NSS 从 1>>0,通信结束 0>>1. (单字节传输与连续传输在时钟SCK上有区别,在于SCLK是否是连续的,8个时钟周期传输1个完整的字节。)

SCLK(CPOL)与MOSI/MISO(CPHA)的极性决定了具体时钟空闲状态和数据采集发生在上升沿或下降沿。具体可见下图和表。

表1 时钟空闲和采样时

SPI全双工与半双工_第2张图片

SPI全双工与半双工_第3张图片

 图2 CPHA == 0

SPI全双工与半双工_第4张图片

 图3 CPHA == 1

SPI半双工

SPI半双工,参考《STM32F4xx官方中文手册》

三线模式,NSS, SCLK, DATA(分为MIO or SIO)

SPI全双工与半双工_第5张图片

图 esp32 半双工三线通信SPI

提到SPI的半双工方式,就不得不提一下Q(Queued)SPI,常应用于外部FLASH,分为Std, Dual, Qual模式,区别是以并行方式,1个clk传输1、2、4 bit(s)的数据。

对于STM32来说,SPI支持半双工模式,可以通过使能BIDIMODE reg位来选择单线双向通信模式或单线单向模式。

使用轮询方式的STM32 SPI half-duplex波形见下图:

SPI全双工与半双工_第6张图片

图 STM32 HAL轮询方式发送2字节,接收2字节的主机硬件SPI half-duplex 波形 (这里存在一些疑惑,STM32 HAL方式在接收字节的时候会多读取3个字节的数据?)

某国产芯片CCM4202S,同样以轮询方式以半双工收发数据见下图:

SPI全双工与半双工_第7张图片

 图 CCM4202S国产芯片 SPI主机半双工轮询方式的工作状态

        在CCM4202S中,需要人为的通过配置MOMI(主机模式下的MOSI)或SISO(从机模式下的MISO)的引脚方向来控制接收或发送权限。

你可能感兴趣的:(外设驱动,嵌入式硬件,mcu)