USER GUIDE / PERIPHERALS / SSI / DATA FORMAT
数据格式
SSI 支持三种数据格式,三种数据格式的信号作用是不一样的,下面给出描述:
- SSI_FRM1/SSI_CE2 在三种协议中的异同:
- 对 SPI 协议来说,这条信号作为从机使能信号使用,选中某一从机即开始传输数据,在数据传输期间始终保持低电平有效。
- 对于 SSP 协议,这条信号只在每帧数据的第一 bit 开始时拉高一个周期,即一个脉冲就代表传输一个数据帧。
- SSI_CLK 在三种协议中的异同:
- 对于微线协议来说,数据传输从从机选择信号的下降沿开始,一个半串行时钟周期之后,控制信号的第一个 bit 被发送到 TXD 总线上。在 SSI_CLK 的下降沿将数据驱动到 TXD 总线上,在 SSI_CLK 的上升沿采样接收到的数据。从机选择信号在传输期间保持为低。
- 对于 SSP 协议来说,数据的传输首先是断言一个时钟周期的从机使能信号,发送数据到 TXD 上在 SSI_CLK 的上升沿,采样 RXD 上的数据在 SSI_CLK 的下降沿。.
- 对于 SPI 协议来说,用户通过配置 POL 寄存器可以动态选择需要在串行时钟的哪个边沿采样数据,哪个边沿发送数据。,通过配置 PHA 寄存器可以选择在从机使能信号使能多少个周期之后再开始数据的传输工作。
与 SPI,SSP 的全双工工作不同的是,微线协议工作在半双工下,在每一帧的开始需要 1-2 byte 控制信息传递给从机设备,此时总线上不传输任何数据信息。如果控制信息做了一次读请求的命令,从机在控制信息的最后一 bit 后,会响应一笔读响应的数据。
SPI 协议的细节
单帧数据传输
下图为单帧数据传输的时序图:


- 当 PHA 寄存器被配置为 0,SSICR1.TFVCK = B’00 时,硬件层面会确保在从机选择信号使能的一个 SSI_CLK 周期之后,SSI_CLK 出现第一个跳变沿。当 SSICR1.TCKFI = B’00 时,硬件上会确保在 SSI_CLK 最后一个边沿的半个 SSI_CLK 周期之内,从机选择信号取消使能。
- 当 PHA 被配置为 1 时,SSICR1.TFVCK = B’00 时,硬件层面会确保在从机选择信号使能的半个 SSI_CLK 周期之后,SSI_CLK 出现第一个跳变沿。当 SSICR1.TCKFI = B’00 时,硬件层面上会确保在 SSI_CLK 最后一个边沿的一个 SSI_CLK 周期之内,从机选择信号取消使能。
- 当 PHA=0,POL=0 或 PHA=1,POL=1 时。在每个 SSI_CLK 的上升沿,SSI 控制器采样在 SSI_DI 数据通道上的被接收的数据;在每个 SSI_CLK 的下降沿,数据被 SSI 控制器驱动到 SSI_DT 通道上去。
- 当 PHA=0,POL=1 或 PHA=1,POL=0 时。在每个 SSI_CLK 的下降沿,SSI 控制器采样在 SSI_DI 数据通道上的被接收的数据;在每个 SSI_CLK 的上升沿,数据被 SSI 控制器驱动到 SSI_DT 通道上去。
背靠背(连续传输)数据模式
下图为一个 SPI 协议的连续传输的时序图:

- 对于 SPI 协议来说,当从机选择信号持续拉低时,串行时钟持续保持在有效状态。连续数据帧的传输方式与单个帧的传输方式相同,下一帧的 MSB 直接紧跟在当前帧的 LSB 之后,从机选择信号在此期间一直保持为活动状态。
间隔传输模式的数据格式
- 当设备处在间隔模式(SSIITR. IVLTM ≤ 0)时,SSI 在完成规定数目的数据帧传输后描,会等待一定的时间间隔时间,再去传输接下来的几个数据帧。
- 当 SSICR0.RFINE = 1,如果 T-FIFO 在间隔时间期间一直是空的,SSI 控制器会自动切换到仅接收模式下进行工作。
在间隔等待时间期间,SSI 会将 SSI_CLK 停止,并且当 SSICR1.ITFRM = 0 时,SSI 控制器会取消断言从机选择信号。当 SSICR1.ITFRM = 1,SSI 控制器会持续断言从机选择信号。
- 当数据传输以 T-FIFO 为空为结束时,如果 SSI 的 T-FIFO 在规定的数据量被发送出去之前就已经空了(SSICR1.UNFIN 必须为 1),那么 SSI 控制器会设置 SSISR.UNDR = 1,如果此位没有被屏蔽,则会发生 under-run 中断。同时,控制器会保持从机选择信号在断言状态下,直到 T-FIFO 被填充。SSI 在 T-FIFO 被填充之后会继续进行传输。控制器会在已经完成了预定数据量的传输,并且此时 T-FIFO 读空时停止传输。
- 当传输结束于 SSICR0.RFINC 被使能的情况下,SSI 模块会在本次传输完成后停止工作,并不需要等待传输完规定的数据帧后才能结束。两帧间隔传输的时序图如下所示(SSICR1.PHA = 0, SSICR1.POL = 0 and SSIICR = 0)


SSP 协议的细节
在此协议中,每一笔传输的开始标志都是从机使能信号(SSI_FRM1)保持一个 SSI_CLK 周期的高脉冲,主机和从机都是在 SSI_CLK 的上升沿驱动数据到 TXD 上,在下降沿采样 RXD 上的数据。采用大端或小端传输。在一次传输的结束时到下一次传输开始的空闲时期,TXD 上会保持最后 1bit 的值。


微线协议的细节
支持 NM1 和 NM2 两种格式。
| Format | DriveEdge | SampleEdge | |
|---|---|---|---|
| NM1 | Master | ↓ | ↑ |
| Slave | ↓ | ↑ | |
| NM2 | Master | ↓ | ↓ |
| Slave | ↑ | ↑ |
- 如果选择 NM1 模式,主机和从机都在 SSI_CLK 的下降沿驱动数据到 TXD,上升沿采样 RXD 上的数据。
- 如果选择 NM2 模式,主机在 SSI_CLK 的下降沿驱动数据到 TXD 上,下降沿沿采样 RXD 上的数据;从机在上升沿驱动数据到 TXD 上,上升沿采样 RXD 上的数据。
- SSI_CLK 在命令帧的最后 1bit 到数据帧的第一 bit 之间保持活动状态保持翻转。一个 SSI_CLK 时钟(NM1)或半个 SSI_CLK 时钟(NM2)周期会接在命令帧的最后一 bit 后面。外围从机必须回串行数据。
- 从机选择信号 SSI_FRM1/SSI_CE2,会在传输结束的半个 SSI_CLK 周期之后取消断言。
- NM1 支持连续传输模式,连续传输的开始和结束与单帧传输类似。从机选择信号 SSI_FRM1/SSI_CE2 会在传输期间保持断言,当前数据帧的结束会紧跟着下一笔传输的命令帧。



