概述
一些外部设备每次传输之间必须取消选择。另外一些必外设须在多个顺序串行传输之间保持选中。
连续选择格式提供了处理以下情况的灵活性。通过设置SPI命令中的CONT位,可以为SPI配置启用连续选择格式。
经典模式
SPIx_PUSHR[CONT] = 0 //设备连续选中模式,两个设备传输之间,每隔一定帧后将PCSn信号到返回非活动状态
SPIx_MCR[CONT_SCKE] = 0 //禁止SCK连续模式
当CONT位= 0时,模块将断言的片选信号驱动到帧之间的空闲状态。
片选信号的空闲状态由MCR中的PCSISn位选择。以下时序图用于两个四位传输,CPHA = 1且CONT = 0。
设备连续选中模式
SPIx_PUSHR[CONT] = 1
SPIx_MCR[CONT_SCKE] = 0
SPIx_MCR[CPHA] = 1
当CONT位= 1时,PCS信号在两次传输期间保持有效。传输之间没有插入传输之间的延迟(tDT)。
下图显示了CPHA = 1且CONT = 1的两个四位传输的时序图。
使用具有外设连续选中的模式时,请遵循以下规则:
- 所有发送命令必须具有相同的PCSn位编程。
- 由发送命令选择的CTAR必须使用相同的传输属性进行编程。在这些CTAR中,只能对FMSZ字段进行不同的编程。
- 在此模式下发送多个帧时,用户软件必须确保最后一帧在主模式下将PUSHR [CONT]位置为无效,并且用户软件必须在TX_FIFO中提供足够的帧以在从模式下发送出去并且主机无效 最后一帧传输结束时的PCSn。
- 在主模式下断言MCR [HALT]之前,必须将PUSHR [CONT]置为无效。
这将确保PCSn信号无效。 在连续传输期间断言MCR [HALT]将导致PCSn信号保持有效,因此从器件不能从运行状态转换为停止状态。
NOTE
- 在TX FIFO变空之前,用户必须在PCS断言下填充TX FIFO。
- 在从模式下工作时,确保当TX FIFO中的最后一个条目完全发送时,即相应的TCF标志置位且TXFIFO为空时,从器件被取消选中,避免进行任何进一步的串行通信; 否则,发生下溢错误
连续串行通信时钟
- SPIx_PUSHR[CONT] = 0
- SPIx_MCR[CONT_SCKE] = 1
- MCR [HALT] = 0
- MCR [CPHA] = 1 #奇数时钟延数据有效,偶数时钟延主设备/外设 采样
该模块提供为需要连续时钟的从外设生成连续SCK信号的选项
通过设置MCR中的CONT_SCKE位来使能连续SCK。 仅当MCR [HALT]位为低时,使能该位才会产生连续SCK。 连续SCK在所有配置中都有效。
连续SCK 模式下必须使CPHA = 1。如果CONT_SCKE位置1,CPHA位清零无效。修改传输格式支持连续SCK。
Continuous SCK模式的时钟和传输属性根据以下规则设置:
- When the module is in SPI configuration, CTAR0 is used initially. At the start ofeach SPI frame transfer, the CTAR specified by the CTAS for the frame is used.
- In all configurations, the currently selected CTAR remains in use until the start of aframe with a different CTAR specified, or the Continuous SCK mode is terminated
启用Continuous SCK会禁用PCS到SCK延迟,并且传输后延迟(tDT)固定为一个SCK周期。
下图是禁用连续选择的连续SCK格式的时序图。
NOTE
- 在连续SCK模式下,对于SPI传输,应始终使用CTAR0,并且必须在启动传输之前使用MCR [CLR_TXF]字段清除TX FIFO。
设备、时钟连续
如果SPIx_PUSHR[CONT]位置1,则PCS在传输之间保持有效,即外部设备与主机连续选中。
此时,SCK可以继续PCS置位,但没有数据从SOUT移出,也就是说,如果SOUT变高,
这可能导致从站接收不正确的数据。 在这些条件极有可能发生包括:
- 连续SCK,CONT位置1,但TX FIFO中没有数据。
- 连续SCK,CONT位置1,位并进入停止状态(参见模块传输的启动和停止)。
- 连续SCK,CONT位置1,并进入停止模式或模块禁用模式。
下图显示了启用设备连续选中以及连续SCK格式的时序图 :
最后
以上就是成就溪流为你收集整理的SPI (四) 连续选中模式的全部内容,希望文章能够帮你解决SPI (四) 连续选中模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复