Synchronous Serial Port 协议详解

Synchronous Serial Port 协议详解

1、简介

Synchronous Serial Port (SSP) ,基于下图文档的设计标准

1.1、包含3种数据帧格式:

a Motorola SPI-compatible interface(以下简称SPI)a Texas Instruments synchronous serial interface(简写SSI,以下简称SSP格式)a National Semiconductor Microwire interface(以下简称Microwire)

1.2、共同点:

都用4根线,CS、TXD、RXD、CLK都有master和slave模式

1.3、差异点:

SSP的CS由一个时钟周期的高电平脉冲表示开始,SPI和Microwire的CS是拉低有效,SSP的章节会详细展开SPI比SSP和Microwire更为灵活,相位、极性可配,SPI的章节会详细展开

2、SPI(Motorola SPI-compatible interface)

SPI是一种同步的全双工通信协议,TXD和RXD可以同时工作。时钟由主机产生。支持一个master对多个slave,CS拉低控制哪个slave被选中。支持各种bit宽度的帧格式,一帧一般小于等于32bit。有多种工作模式,只发、只收、同时收发等。时钟极性和相位可配置,极性决定空闲时CLK的电平高低,相位决定第几个时钟沿采样数据

2.1、连接线

CS:片选线,也叫SS,拉低后开始传输,拉高后结束传输,支持发多帧数据时CS一直拉低,支持每帧以CS拉低开始CS拉高结束CLK:时钟由master提供,支持的频率很宽泛TXD:发送脚,又名MOSI,master输出脚接slave输入脚。TXD接对测设备RXD。RXD:接收脚,又名叫MISO,master输入脚接slave输出脚。RXD接对测设备TXD。

对接方式如下图:

2.2、传输模式

(1)、只发不收

只用到TXD,CS和CLK这3根线,顾名思义,只发送数据,不接收数据

控制LCD屏幕,会用到只发不收模式,LCD屏只接收控制命令数据。

例如下图,发送1帧数据,0x15BF的数据宽度为13bit

注意:数据一般是先发送高位,有些控制器大小端可配

(2)、同时收发

4根线都会用到,发送数据的同时也在接收数据控制FLASH、EEPROM,会用到此模式。FLASH接收到命令后延时一段时间,才会返回真实的数据,所以master需要发几帧无效的数据,等待slave返回真实值。例如下图,读FLASH设备ID,发送1帧命令+4帧dummy,接收5帧数据,数据宽度为8bit发送数据为:0xAB、0xFF、0xFF、0xFF、0xFF(命令:0xAB)接收的数据为:0xFF、0xFF、0xFF、0xFF、0x17(FLASH ID:0x17)

(3)、只收不发

只用到RXD,CS和CLK这3根线,只接收数据,不发送数据比如作为slave模式时,只接收master发来的数据波形和只发不收模式类似,master的TXD接到slave的RXD

2.3、CS的多种实现方式

(1)、用GPIO模式CS脚

有些SPI控制器规定,在TXFIFO发空后,CS会被拉高,CLK时钟也会停止。对于FLASH这种器件,需要先发送命令,再接收数据的需求就不能满足,不可能TXD一直在发送dummy byte,尤其是读大量数据时。那么CS就可以复用成GPIO功能,或用另外一个GPIO代替。需要CS拉低时,GPIO输出低需要CS拉高时,GPIO输出高这需要熟读FLASH手册,且软件操作相对复杂例如ST的示例代码,就是用GPIO模拟CS,可以得到同时收发模式的波形:

u32 SPI_FLASH_ReadDeviceID(void)

{

u32 Temp = 0;

/* GPIO 输出低,Select the FLASH: Chip Select low */

SPI_FLASH_CS_LOW();

/* Send "RDID " instruction */

SPI_FLASH_SendByte(W25X_DeviceID);

SPI_FLASH_SendByte(Dummy_Byte);

SPI_FLASH_SendByte(Dummy_Byte);

SPI_FLASH_SendByte(Dummy_Byte);

/* Read a byte from the FLASH */

Temp = SPI_FLASH_SendByte(Dummy_Byte);

/* GPIO 输出高,Deselect the FLASH: Chip Select high */

SPI_FLASH_CS_HIGH();

return Temp;

}

(2)、SPI自带的CS功能

缺点TXFIFO发空后CS就拉高了连续发送多个数据之后(在TXFIFO阈值内),再查询TXFIFO满状态,保证一直有数据可发通常这种方式只适用于同时收发模式,发送的同时也把数据收了。不一定能保持一直拉低的效果,需要抓波形确认。下图是CS每帧都拉高的情况:

或者使用DMA,事先把所有数据都准备好,一次性发完,就可以保证CS一直拉低。

2.4、SPI的相位和极性

CPOL,clock polarity,极性,决定空闲时CLK电平高低CPHA,clock phase,相位,决定第几个时钟沿采样数据,有2种相位情况

(1)、第1个时钟沿采样,第2个时钟沿数据正在改变

(2)、第1个时钟沿数据正在改变,第2个时钟沿采样至于第1个时钟沿是上升沿还是下降沿,由时钟极性决定采样数据时,数据线上的电平值是稳定的,高电平表示1,低电平表示0发送数据时,数据正在发生改变,由0变1,或1变0

(1)、CLK空闲时为高电平,第1个时钟沿采样数据

下图的CS空闲时为高电平第1个时钟沿(上升沿)采样数据,第2个时钟沿(下降沿)数据正在改变后续数据都是按上升沿采样,下降沿数据改变

(2)、CLK空闲时为低电平,第1个时钟沿采样数据

第1个沿为上升沿,第2个沿为下降沿

(3)、CLK空闲时为高电平,第2个时钟沿采样数据

和(1)类似,只是变成了第2个时钟沿采样数据

(4)、CLK空闲时为低电平,第2个时钟沿采样数据

和(2)类似,只是变成了第2个时钟沿采样数据

3、SSP(Texas Instruments synchronous serial interface)

特性和SPI类似相位和极性是固定的不可选最显著的差异点是,SSP的片选信号为脉冲信号,高有效。一个时钟周期的高电平表示传输开始,接下来CS会拉低,接着发送数据。下图可以直观的了解SSP的传输原理

实在有点特殊,逻辑分析仪没有解析的方法,不过也不复杂

CS先发一个周期高电平,发送完一帧数据,CS再发一个周期高电平,再发下一帧数据

下图表示帧结束的波形,CS保持低电平状态:

4、Microwire(National Semiconductor Microwire interface)

相对于SSI和SSP来说,Microwire只是半双工协议,不能同时收发波形和SPI类似TXD发送期间,RXD无效RXD接收期间,TXD无效从功能上来说和用SPI控制FLASH一样,需要先发命令,再发数据或接收数据发完命令再接收数据,会有一个dummy bit的等待时间才采样RXD数据

和SPI的同时收发模式对比,Microwire先发送控制命令0xAB,再接收4个字节,也能读到FLASH IDMicrowire因为会延后1个dummy bit才采样RXD数据的原因,数据做如下说明:

波形上显示读到的数据为: 0xFF、0xFF、0xFF、0x17

实际FIFO读到的数据为: 0xFF、0xFF、0xFE、0x2E

FIFO的数据需要往右移动1位才是FLASH ID值:0x2E >> 1 = 0x17

支持Microwire协议的设备,接收到命令后,默认延后1个dummy bit才返回数据。但FLASH一般不会,用Microwire控制flash,需要对FIFO数据做移位操作。

5、slave模式说明

上述章节描述的都是master模式下的功能,slave模式和master类似,但也有需要注意的地方

slave支持只收、同时收发等模式

因为CLK由master提供,需要2端配合传输。slave接收到数据之后,才会往外发送数据,所以会有1~2个dummy byte的延迟,master才会收到数据。具体延迟多少,可以抓波形确认。

例如SSP帧格式,2个控制器master、slave都配置为同时收发模式,下图为2端交互的波形

上图可以看到,master在发完0xFF之后,slave才开始发送第1个数据0x00,是为了完成同步,所以多发了一个0xFF,那么为了最后不丢数据,也要多接收一个字节

例如收发256个字节:

master向slave发送0x00 ~ 0xFF,依次加1

slave向master发送0xFF ~ 0x00,依次减1

假如不做同步,只收发256个字节,master接收slave发来的数据时,会出现前2个字节都为0,最后还有2个字节没收完的情况:

相关推荐

国足冲击世界杯血泪史
365bet取款要多久到账

国足冲击世界杯血泪史

📅 08-13 👁️ 2224
基督徒的十二颗心
365bet最快线路监测中心

基督徒的十二颗心

📅 11-29 👁️ 6908
身高183标准体重是多少斤
365bet取款要多久到账

身高183标准体重是多少斤

📅 09-03 👁️ 7868
365BET导航

"死肥宅":从贬义词到网络流行文化的演变

📅 10-19 👁️ 3118
《使命召唤:现代战争》战役流程长度同以前一样
领英app怎么注销账号
365bet最快线路监测中心

领英app怎么注销账号

📅 08-30 👁️ 5775
南非世界杯吉祥扎库米(南非世界杯吉祥物)
365bet最快线路监测中心

南非世界杯吉祥扎库米(南非世界杯吉祥物)

📅 07-21 👁️ 2477
iPhone6s 怎么更新系统
365BET导航

iPhone6s 怎么更新系统

📅 08-01 👁️ 7475
火疖子感染引起发烧问题怎么治
365BET导航

火疖子感染引起发烧问题怎么治

📅 08-25 👁️ 6795
BRI:全球首家“卫星银行”
365bet最快线路监测中心

BRI:全球首家“卫星银行”

📅 07-12 👁️ 5536
刷花呗需要人脸识别吗
365bet取款要多久到账

刷花呗需要人脸识别吗

📅 10-21 👁️ 990
v6发动机什么意思?v6发动机123456缸图片
365BET导航

v6发动机什么意思?v6发动机123456缸图片

📅 10-13 👁️ 281