SWPMI
简介
单线协议主接口(SWPMI)是ETSI TS 102 613技术规范中定义的非接触式前端(CLF)所对应的主接口。
单线协议(SWP)的原理是基于全双工模式传输数字信息:
S1信号(从主设备到从设备)通过电压域中的数字调制(L或H)进行传输。
S1信号编码
S2信号(从设备到主设备)由电流中的数字调制(L或H)传输。
S2信号编码
主要特性
SWPMI模块的主要功能如下:
全双工通信模式
自动SWP总线状态管理
帧开始 (SOF) 的自动处理
帧结束 (EOF) 的自动处理
填充位的自动处理
传输中的自动CRC-16计算与生成
接收时自动进行CRC-16计算与校验
32-位发送数据寄存器
32-位接收数据寄存器
多软件缓冲模式,用于高效实现DMA及多帧缓冲。
可配置比特率高达2 Mbit/s
可配置中断
CRC错误、欠帧、溢帧标志
帧接收与发送完成标志
奴隶简历检测标志
用于测试目的的环回模式
符合ETSI TS 102 613技术标准的嵌入式SWPMI_IO收发器
规格
专用模式,用于在GPIO上输出SWPMI_RX、SWPMI_TX和SWPMI_SUSPEND信号,以备连接外部收发器之用。
功能描述
SWPMI框图
SWPMI架构框图
注: 为了支持从停止模式通过从机恢复功能退出,必须为swpmi_ker_ck选择HSI。如果不需要此功能,则可选择swpmi_pclk,并且在进入停止模式前必须禁用SWPMI。
SWP 初始化与激活
初始化和激活会将SWPMI_IO状态从低电平切换至高电平。在使用内部收发器时,操作步骤如下:
根据VDD电压(3 V或1.8 V),在SWPMI_OR寄存器中配置SWP_CLASS位。
将SWPMI_CR寄存器中的SWPTEN置位,以启用SWPMI_IO收发器,并将SWPMI_IO置为低电平(SWP总线处于停用状态)。
等待SWPMI_SR寄存器中的RDYF标志位被置位(通过轮询该标志位,或使用SWPMI_IER寄存器中的RDYIE位启用中断)。
将SWPMI_CR寄存器中的SWPACT位设置为ACTIVATE,以激活SWP,即从DEACTIVATED状态切换到SUSPENDED状态。
SWP总线状态
SWP总线可具有以下状态:已停用、已暂停、已激活。存在多种可能的转换:
激活:从已停用状态转换至已暂停状态,
暂停:从已激活状态过渡到暂停状态,
主设备发起的从“已挂起”状态到“已激活”状态的转换,
从挂起状态到激活状态的转换由从设备发起。
停用:从暂停状态过渡到已停用状态。
激活 在复位期间及复位刚结束时,SWPMI_IO被配置为模拟模式。请参阅SWP初始化与激活,以激活SWP总线。
暂停 只要与从设备保持通信(无论是发送还是接收),SWP总线将一直处于激活状态。一旦不再有发送或接收活动,且经过7个空闲位后,SWP总线便会重新切换回暂停状态。
由主设备恢复 一旦启用SWPMI,用户即可请求发送SWPMI帧。在开始帧传输之前,SWPMI会先发送一个过渡序列和8个空闲位(由主设备恢复)。在主设备执行恢复操作后,SWP将从挂起状态转换为激活状态(请参阅图:SWP总线状态)。
由主设备恢复 一旦启用SWPMI,用户即可请求发送SWPMI帧。在开始帧传输之前,SWPMI会先发送一个过渡序列和8个空闲位(由主设备恢复)。在主设备执行恢复操作后,SWP将从挂起状态转换为激活状态(请参阅图:SWP总线状态)。 从从机恢复 一旦SWPMI启用,如果SWPMI从从机接收到恢复信号,SWP也可从挂起状态转换为激活状态。从从机恢复会设置SWPMI_ISR寄存器中的SRF标志位。
DEACTIVATE 停用请求 如果不再需要通信,且SWP处于暂停模式,则用户可通过禁用SWPMI外设,请求将SWP切换至停用模式。软件必须在SWPMI_CR寄存器中置位DEACT位,以请求进入停用模式。如果SWPMI未检测到从机的恢复操作,则SWPMI_ISR寄存器中的DEACTF标志被置位,同时SWPMI_ICR寄存器中的SWPACT位被清除。若软件置位DEACT位时,SWPMI检测到从机的恢复操作,则SWPMI_ISR寄存器中的SRF标志被置位,DEACTF保持未置位,SWPACT保持置位,且DEACT位被清除。
为了再次激活SWP,软件必须在设置SWPACT位之前,先清除SWPMI_CR寄存器中的DEACT位。
停用模式 为了立即将SWP切换到停用模式,而忽略从从设备可能传来的恢复信号,用户必须清除SWPMI_CR寄存器中的SWPACT位。
注: 为进一步降低功耗,请在GPIO控制器中将SWPMI_IO端口配置为开漏输出,然后清除SWPMI_CR寄存器中的SWPTEN位。
SWPMI总线状态机
SWPMI_IO(内部收发器)旁路
微控制器中嵌入了一个符合ETSI TS 102 613技术规范的SWPMI_IO(收发器)。不过,可通过在SWPMI_OR寄存器中设置SWP_TBYP位来绕过该收发器。在这种情况下,SWPMI_IO将被禁用,而SWPMI_RX、SWPMI_TX和SWPMI_SUSPEND信号则作为替代功能通过三个GPIO引脚提供(详情请参阅产品数据手册中的“引脚布局与引脚说明”)。此配置用于连接外部收发器。
注意: 在SWPMI_IO旁路模式下,必须保持SWPMI_CR寄存器中的SWPTEN位清零。
SWPMI位速率
位速率必须根据以下公式在SWPMI_BRR寄存器中设置:FSWP = Fswpmi_ker_ck / ((BR[7:0]+1)×4) 注意: 最大位速率为2 Mbit/s。
SWPMI帧处理
SWPMI 内置了一个用于发送的32位数据寄存器(SWPMI_TDR),以及一个用于接收的32位数据寄存器(SWPMI_RDR)。
SWPMI帧结构
在传输过程中,SOF插入、CRC计算与插入以及EOF插入均由SWPMI自动管理。用户只需提供有效载荷的内容和大小即可。一旦数据写入SWPMI_TDR寄存器,帧传输便立即启动。专用标志位用于指示发送数据寄存器为空以及帧传输已完成的事件。
在接收过程中,SOF删除、CRC计算与校验以及EOF删除均由SWPMI自动管理。用户只需读取有效载荷的内容和大小。专用标志用于指示接收数据寄存器已满、帧接收完成,以及可能出现的CRC错误事件。
填充位插入(发送时)和填充位删除(接收时)由SWPMI核心自动管理。这些操作对用户而言是透明的。
传输程序
在开始任何使用之前,在进行传输时,用户必须激活SWP。请参阅:SWP初始化以及激活。
帧传输有几种可能的软件实现方式:无软件缓冲模式、单软件缓冲模式和多软件缓冲模式。
软件缓冲区的使用需要借助DMA通道,将RAM内存中的软件缓冲区数据传输至SWPMI外设的发送数据寄存器。
无软件缓冲模式
此模式无需使用DMA。SWP帧传输的处理由主循环中轮询状态标志或SWPMI中断例程内部完成。SWPMI中有一个32位发送数据寄存器(SWPMI_TDR),因此向该寄存器写入数据将触发最多4字节的数据发送。
通过清除SWPMI_CR寄存器中的TXDMA位,可选择无软件缓冲区模式。
帧传输由首次向SWPMI_TDR寄存器写入数据启动。写入SWPMI_TDR寄存器的首个32位字的低有效字节(即[7:0]位)指示了有效载荷中的数据字节数;该字的其余3个字节必须包含有效载荷的前3个字节([15:8]位包含有效载荷的第一个字节,[23:16]位包含第二个字节,[31:24]位包含第三个字节)。此后,对SWPMI_TDR寄存器的后续写入仅包含有效载荷数据字节,每次最多可写入4个字节。
注意:写入SWPMI_TDR寄存器的首个32位字的低有效字节用于编码有效载荷中的数据字节数。该数字范围为1至30。低有效字节中任何其他值都将被忽略,且传输不会启动。
向SWPMI_TDR寄存器写入将引发以下操作:
如果SW发送转换序列和8个空闲位(由主设备恢复),则已暂停(如果SWP总线状态已处于激活状态,则不会发生此情况),
发送帧开始信号(SOF),
根据SWPMI_TRD寄存器的内容发送有效载荷。如果数量为
有效载荷中的字节数大于3时,需通过软件重新填充SWPMI_TDR。每次SWPMI_ISR寄存器中的TXE标志位被置位,且只要SWPMI_ISR寄存器中的TXBEF标志位未被置位,
发送由SWPMI核心自动计算的16位CRC,
发送帧结束符 (EOF)。
当软件向SWPMI_TDR寄存器写入数据时,TXE标志会自动清除。
一旦完整帧发送完毕,且未请求其他帧传输(即在TXBEF标志置位后未再次写入SWPMI_TDR),TCF和SUSP标志将在EOF传输后的7个空闲位中被设置于SWPMI_ISR寄存器中;如果SWPMI_IER寄存器中的TCIE位已置位,则会生成中断(参见图:SWPMI无软件缓冲区模式传输)。.. _SWPMI_No_software_buffer_mode_transmission:
SWPMI无软件缓冲模式传输模式
如果在EOF传输结束前请求发送另一帧,TCF标志将不会被置位,该帧将与前一帧连续发送,二者之间仅间隔一个空闲位(请参阅图:SWPMI无软件缓冲区模式传输,连续帧)。.. _SWPMI_No_software_buffer_mode_transmission_consecutive_frames:
SWPMI 无软件缓冲模式传输连续帧
单软件缓冲区模式 此模式允许通过DMA传输完整的SWP帧,无需CPU干预。DMA将自动重新填充32位SWPMI_TDR寄存器,软件可利用SWPMI_TXBEF标志轮询帧传输的结束。
通过在SWPMI_CR寄存器中设置TXDMA位并清除TXMODE位,可选择单软件缓冲区模式。
DMA通道或数据流必须按以下模式进行配置(请参阅DMA章节): - 禁用内存到内存模式; - 启用内存递增模式; - 将内存大小设置为32位; - 将外设大小设置为32位; - 禁用外设递增模式; - 禁用循环模式; - 数据传输方向设置为从内存读取。 - 要传输的字数须根据SWP帧长度进行设置; - 源地址为RAM中的SWP帧缓冲区; - 目标地址为SWPMI_TDR寄存器。
然后,用户必须:
在SWPMI_CR寄存器中设置TXDMA位
在SWPMI_IER寄存器中设置TXBEIE位
用有效载荷中数据字节的数量填充RAM内存中的缓冲区(位于第一个字的最低有效字节上)。
DMA模块中可启动DMA传输和帧传输的可用流或通道
当SWPMI_ISR中的TXE标志位被置位时,SWPMI会发出DMA请求。当DMA正在向SWPMI_TDR寄存器写入数据时,TXE标志位会自动清除。
在SWPMI中断例程中,用户必须检查SWPMI_ISR寄存器中的TXBEF位。如果该位已置位,并且需要发送另一帧,则用户必须:
在DMA模块中禁用流或通道
用下一帧的内容更新RAM内存中的缓冲区,配置DMA模块中待传输的总字数。
启用DMA模块中的流或通道,以启动下一帧的传输。
将SWPMI_ICR寄存器中的CTXBEF位设置为1,以清除TXBEF标志位。
多软件缓冲模式
此模式允许在RAM内存中使用多个帧缓冲区,以确保连续传输,同时将CPU负载保持在极低水平,并借助DMA为软件更新缓冲区提供更大的延迟余量。软件可随时检查DMA计数器,并据此在RAM内存中相应地更新SWP帧。
RAM存储器中的每个传输缓冲区必须具有固定长度,即八个32位字,无论SWP帧有效载荷的字节数是多少。RAM存储器中的传输缓冲区须由软件填充,并且连续两个缓冲区之间需保持8字节的偏移量。缓冲区的第一个数据字节表示帧有效载荷的字节数。请参阅图中所示的缓冲区示例:SWPMI多软件缓冲区模式传输。
通过在SWPMI_C中同时设置TXDMA和TXMODE位来选择缓冲模式。
例如,为了使用4个传输缓冲区,用户必须按如下方式配置DMA:
DMA通道或数据流必须以以下模式进行配置(请参阅DMA章节):
内存到内存模式已禁用,
已启用内存增量模式,
内存大小设置为32位,
外围尺寸设置为32位,
外围增量模式已禁用,
循环模式已启用,
数据传输方向设置为从内存读取,
要传输的字数必须设置为32(每个缓冲区8个字),
源地址是RAM中的buffer1,
目标地址是SWPMI_TDR寄存器。
然后,用户必须:
在SWPMI_CR寄存器中设置TXDATA
在SWPMI_IER寄存器中设置TXBEIE
将RAM存储器中的buffer1、buffer2、buffer3和buffer4填充完毕(以有效载荷中数据字节的数量作为第一个字的最低有效字节)。
在DMA模块中启用流或通道以启动DMA。
在SWPMI中断例程中,用户必须检查SWPMI_ISR寄存器中的TXBEF位。如果该位被置位,用户必须在SWPMI_ICR寄存器中置位CTXBEF位,以清除TXBEF标志,随后用户即可更新RAM存储器中的buffer1。
在下一个SWPMI中断例程发生时,用户将更新buffer2,依此类推。
该软件还可读取DMA寄存器中的DMA计数器(待传输数据的数量),以检索已从RAM存储器中传输并发送出去的帧。例如,如果软件使用4个传输缓冲区,且DMA计数器的值为17,则意味着RAM区域中有两个缓冲区已准备好更新。这在软件尚未处理SWPMI中断之前便已发送多个帧的情况下非常有用。若出现这种情况,软件将不得不更新多个缓冲区。
当没有更多帧需要发送时,用户必须在DMA模块中禁用循环模式。传输将在缓冲区4传输结束时停止。 如果传输需要在之前停止(例如在buffer2末尾),用户必须将buffer3和buffer4中第一个字的低有效字节设为0。 SWPMI_CR寄存器中的TXDMA位将在第一个字的最低有效字节中读取到有效载荷的数据字节数为0时由硬件自动清除。.. _SWPMI_多软件缓冲区模式传输:
SWPMI 多软件缓冲模式传输
接收程序
在开始任何操作之前,在接收时,用户必须激活SWP(请参阅:SWP初始化和激活。 一旦在SWPMI_CR寄存器中设置了SWPACT位,从从机状态恢复时,将置位SWPMI_ISR寄存器中的SRF标志,并自动启用SWPMI以进行帧接收。 如果SWP总线已处于激活状态(例如,由于正在进行帧传输),SWPMI核心无需等待从机状态的任何恢复操作,即可立即开始接收。 帧接收有几种可能的软件实现方式:
无软件缓冲模式,
单软件缓冲模式,
多软件缓冲模式。
软件缓冲区的使用需要借助DMA通道,将SWPMI外设中的接收数据寄存器的数据传输到RAM存储器中的软件缓冲区。
无软件缓冲模式 此模式无需使用DMA。SWP帧接收处理由主循环中的状态标志轮询或SWPMI中断例程内部完成。SWPMI中有一个32位接收数据寄存器(SWPMI_RDR),在读取该寄存器之前,最多可接收4个字节。
通过重置SWPMI_CR寄存器中的RXDMA位,选择无软件缓冲区模式。
一旦接收到起始帧(SOF),后续字节(有效载荷)将被存储在SWPMI_RDR寄存器中。当SWPMI_RDR寄存器满时,SWPMI_ISR中的RXNE标志位将被置位;如果SWPMI_IER寄存器中的RIE位已设置,则会生成中断。用户可读取SWPMI_RDR寄存器,且当软件读取SWPMI_RDR寄存器时,RXNE标志位会自动清除。
一旦接收到完整的帧,包括CRC和帧结束符(EOF),SWPMI_ISR寄存器中的RXNE和RXBFF标志位均会被置位。用户必须从SWPMI_RDR寄存器中读取有效载荷的最后字节,并在SWPMI_ICR寄存器中置位CRXBFF标志位,以清除RXBFF标志位。有效载荷中的数据字节数可在SWPMI_RFL寄存器中获取。此外,当软件读取SWPMI_RDR寄存器时,RXNE标志位会自动复位(参见图:SWPMI无软件缓冲区模式接收)。
在RXNE清除后读取SWPMI_RDR寄存器将返回0。
SWPMI 无软件缓冲模式接收
单软件缓冲模式 此模式允许通过DMA在无需任何CPU干预的情况下接收完整的SWP帧。DMA会将接收到的数据从32位SWPMI_RDR寄存器传输至RAM存储器,软件可利用SWPMI_RBFF标志轮询帧接收的结束。
通过在SWPMI_CR寄存器中设置RXDMA位并清除RXMODE位,可选择单软件缓冲区模式。
DMA 必须按如下方式配置:
DMA通道或数据流必须以下述模式进行配置(请参阅DMA章节):
内存到内存模式已禁用,
已启用内存增量模式,
内存大小设置为32位,
外围尺寸设置为32位,
外围增量模式已禁用,
循环模式已禁用,
数据传输方向设置为从外设读取,
要传输的字数必须设置为8,
源地址是SWPMI_RDR寄存器,
目标地址是RAM中的SWP帧缓冲区。
然后用户必须:
在SWPMI_CR寄存器中设置RXDMA位。
在SWPMI_IER寄存器中设置RXBFIE位。
在DMA模块中启用流或通道。
当SWPMI_ISR中的RXNE标志位被置位时,SWPMI会发出DMA请求。在DMA读取SWPMI_RDR寄存器时,RXNE标志位会自动清除。 在SWPMI中断例程中,用户必须检查SWPMI_ISR寄存器中的RXBFF位。如果该位被置位,用户必须:
在DMA模块2中禁用流或通道。
读取SWPMI_RFL寄存器中接收到的帧有效载荷的字节数。
从RAM缓冲区中读取帧有效载荷。
在DMA模块中启用流或通道
将SWPMI_ICR寄存器中的CRXBFF位设置为1,以清除RXBFF标志位(参见图:SWPMI单软件缓冲区模式接收)。
SWPMI 单个软件缓冲模式接收
多软件缓冲区模式 此模式允许在RAM内存中使用多个帧缓冲区,以确保连续接收,同时利用DMA实现极低的CPU负载。帧有效载荷与帧状态标志一同存储在RAM内存中。软件可随时检查DMA计数器和状态标志,以便处理RAM内存中接收到的SWP帧。
多软件缓冲模式必须与循环模式下的DMA配合使用。多软件缓冲模式是通过在SWPMI_CR寄存器中同时设置RXDMA位和RXMODE位来选择的。 为了在RAM中使用n个接收缓冲区,必须将DMA通道或数据流配置为以下模式(请参阅DMA章节):
内存到内存模式已禁用,
已启用内存增量模式,
内存大小设置为32位,
外围尺寸设置为32位,
外围增量模式已禁用,
循环模式已启用,
数据传输方向设置为从外设读取,
要传输的字数必须设置为8×n(每个缓冲区8个字)。
源地址是SWPMI_TDR寄存器,
目标地址是RAM中的buffer1地址。
然后用户必须:
在SWPMI_CR寄存器中设置RXDMA。
在SWPMI_IER寄存器中设置RXBFIE。
在DMA模块中启用流或通道。
在SWPMI中断例程中,用户必须检查SWPMI_ISR寄存器中的RXBFF位。如果该位被置位,用户必须在SWPMI_ICR寄存器中设置CRXBFF位,以清除RXBFF标志,随后用户便可读取第一个缓冲区中接收到的第一个帧的有效载荷(位于DMA2_CMAR1所设定的RAM地址处)。
有效载荷中的数据字节数可在最后一个第8个字的位[23:16]中获取。在下一次SWPMI中断例程触发时,用户将读取第二个缓冲区中接收到的第二帧(地址由DMA2_CMAR1 + 8设置),依此类推(参见图:SWPMI多软件缓冲区模式接收)。
如果应用软件无法确保在下一帧接收之前处理完SMPMI中断,则每个缓冲区的状态可从第8个缓冲区字的最高有效字节中获取:
CRC错误标志(等同于SWPMI_ISR寄存器中的RXBERF标志)是位于第8个字的第24位。请参阅:错误管理以获取CRC错误说明。
接收溢出标志(等效于SWPMI_ISR寄存器中的RXOVRF标志)是位于第8个字的第25位。请参阅:关于溢出错误的错误管理说明。
接收缓冲区满标志(等效于SWPMI_ISR寄存器中的RXBFF标志)是位于第8个字的第26位。若发生CRC错误,RXBFF和RXBERF标志均被置位,因此第24位和第26位均被置位。
若发生溢出,将设置溢出标志,即第25位被置位。仅在接收最后一个字时发生溢出的情况下,才会设置接收缓冲区满标志;此时,当前帧和下一帧的接收都将同时置位第25位和第26位。
该软件还可读取DMA寄存器中的DMA计数器(待传输数据的数量),以检索已通过DMA接收并传输至RAM存储器的帧。例如,如果软件使用4个接收缓冲区,且DMA计数器的值为17,则意味着RAM区域中有两个缓冲区已准备好供读取。
在多软件缓冲区接收模式下,如果软件正在读取第8个字的第24、25和26位,则无需在每帧接收后清除RXBERF、RXOVRF和RXBFF标志位。……_SWPMI_多软件缓冲区模式接收:
SWPMI 多软件缓冲模式接收
错误管理
有效载荷传输期间发生欠载
在帧有效载荷传输期间,SWPMI_ISR寄存器中的TXUNRF标志位指示出现发送欠帧。如果SWPMI_IER寄存器中的TXBUNREIE位已置位,则会生成中断。
如果发生发送欠帧,SWPMI将停止有效载荷传输,并发送一个损坏的CRC(所发送的第一个CRC字节的第一个比特被取反),随后发送一个EOF。如果使用DMA,SWPMI_CR寄存器中的TXDMA位将自动清零。
当TXUNRF位被置位时,对SWPMI_TDR寄存器的任何进一步写入操作都将被忽略。用户必须在SWPMI_ICR寄存器中设置CTXUNRF位,以清除TXUNRF标志位。
有效载荷接收期间发生溢出 在接收帧有效载荷期间,SWPMI_ISR寄存器中的RXOVRF标志位会指示发生接收溢出。如果出现接收溢出,SWPMI将不会用传入的数据更新SWPMI_RDR。传入的数据将会丢失。
接收过程持续至文件结束符(EOF),如果溢出状态消失,则会置位RXBFF标志。当RXBFF标志置位时,用户可检查RXOVRF标志。用户必须在SWPMI_ICR寄存器中设置CRXOVRF位,以清除RXBOVRF标志。
如果用户希望立即检测溢出,可设置SWPMI_IER寄存器中的RXBOVREIE位,以便在发生溢出时立即生成中断。
RXOVRF 标志与 RXNE 标志同时置位,即在发生溢出事件后的两次 SWPMI_RDR 读取操作期间。这表明至少有一个接收到的字节已丢失,而 SWPMI_RDR 中加载的字包含溢出发生前刚刚接收到的字节。
在多软件缓冲区模式下,如果接收到的帧的最后一字节设置了RXOVRF标志,则当前帧和下一帧的溢出位(第8字节的第25位)均会被置位。
有效载荷接收期间发生CRC错误 在接收到两个CRC字节后,如果CRC校验出错,则在接收到EOF后,SWPMI_ISR寄存器中的RXBERF标志位将被置位。如果SWPMI_IER寄存器中的RXBEIE位已设置,则会生成中断(请参阅图:带有CRC错误的SWPMI单缓冲模式接收)。用户必须在SWPMI_ICR中置位CRXBERF位,以清除RXBERF标志位。.. _SWPMI_single_buffer_mode_reception_with_CRC_error:
SWPMI 单缓冲接收模式带CRC错误
有效载荷接收过程中,填充位缺失或损坏 当有效载荷中的填充位缺失或损坏时,在接收到EOF后,SWPMI_ISR中会置位RXBERF和RXBFF标志。
损坏的EOF接收 一旦接收到SOF,SWPMI会累积接收到的字节,直至接收到EOF(忽略任何可能的SOF)。一旦接收到EOF,SWPMI便准备开始新帧的接收,并等待SOF的到来。
如果出现EOF损坏的情况,下次接收到EOF后,SWPMI_ISR寄存器中的RXBERF和RXBFF标志位将被置位。
注: 如果接收到的EOF出现损坏,有效载荷的接收仍会继续进行。因此,如果接收到的字节数大于30,则有效载荷中的字节数可能会变为31。有效载荷中的字节数可从SWPMI_RFL寄存器中读取,或从RAM存储器缓冲区第8个字的[23:16]位中读取,具体取决于工作模式。
环回模式
环回模式可用于测试目的。用户必须在SWPMI_CR寄存器中设置LPBK位,以启用环回模式。
启用环回模式后,SWPMI_TX和SWPMI_RX信号会相互连接。因此,SWPMI发送的所有帧都将被接收回来。
SWPMI 低功耗模式 ———————————->
模式 |
描述 |
|---|---|
Sleep |
无影响。SWPMI 中断不会触发设备退出 Sleep 模式。 |
Stop |
从 SUSPENDED 模式发出的 RESUME 信号(由从机产生)可唤醒设备从 Stop 模式,条件是 swpmi_ker_ck 为 HSI(参见:SWPMI 块图) |
Standby |
SWPMI 被停止。 |
寄存器 ———————————->
寄存器偏移及简单描述列表
偏移地址 |
寄存器名称 |
功能描述 |
|---|---|---|
0x0 |
IP_VER |
IP 版本号 |
0x4 |
GIT_VER |
Git 版本号 |
0x8 |
SWPMI_CR |
SWPMI 控制寄存器 |
0xC |
SWPMI_BRR |
SWPMI 波特率寄存器 |
0x10 |
SWPMI_ISR |
SWPMI 中断和状态寄存器 |
0x14 |
SWPMI_IER |
SWPMI 中断使能寄存器 |
0x18 |
SWPMI_RFL |
SWPMI 接收帧长度寄存器 |
0x1C |
SWPMI_TDR |
SWPMI 发送数据寄存器 |
0x20 |
SWPMI_RDR |
SWPMI 接收数据寄存器 |
0x24 |
SWPMI_OR |
SWPMI 选项寄存器 |
寄存器详细说明
IP_VER
Address offset: 0x0.
字段 |
位域 |
访问属性 |
复位值 |
描述 |
|---|---|---|---|---|
IP_VER |
23:0 |
RO |
24’h010002 |
IP 版本号 |
Reserved |
31:24 |
/ |
0x0 |
/ |
GIT_VER
Address offset: 0x4.
字段 |
位域 |
访问属性 |
复位值 |
描述 |
|---|---|---|---|---|
GIT_VER |
31:0 |
RO |
32’h0 |
Git 版本号 |
SWPMI_CR
Address offset: 0x8.
字段 |
位域 |
访问属性 |
复位值 |
描述 |
|---|---|---|---|---|
RXDMA |
0 |
RW |
0 |
接收 DMA 使能 此位用于在接收时启用 DMA 模式。
|
TXDMA |
1 |
RW |
0 |
发送 DMA 使能 此位用于在发送时启用 DMA 模式。
|
RXMODE |
2 |
RW |
0 |
接收缓冲模式 此位用于选择接收缓冲模式。仅当 TXDMA 位被置位时有效。
|
TXMODE |
3 |
RW |
0 |
发送缓冲模式 此位用于选择发送缓冲模式。仅当 TXDMA 位被置位时有效。
|
LPBK |
4 |
RW |
0 |
回环模式使能 此位用于启用回环模式。
|
SWPACT |
5 |
RW |
0 |
单线协议主接口激活 此位用于激活 SWP 总线(参见:SWP 初始化与激活)。
注意:要设置 SWPACT 位,DEACT 位必须先被清除。 |
Reserved |
9:6 |
/ |
0x0 |
/ |
DEACT |
10 |
RW |
0 |
单线协议主接口去激活 此位用于请求 SWP DEACTIVATED 状态。 设置此位的效果与清除 SWPACT 相同,但可能的从机 RESUME 会保持 SWP 处于 ACTIVATED 状态。 |
SWPTEN |
11 |
RW |
0 |
单线协议主收发器使能 此位用于启用收发器并控制 SWPMI_IO(参见第 58.3.3 节:SWP 初始化与激活)。
|
Reserved |
31:12 |
/ |
0x0 |
/ |
SWPMI_BRR
Address offset: 0xC.
字段 |
位域 |
访问属性 |
复位值 |
描述 |
|---|---|---|---|---|
BR |
7:0 |
RW |
1 |
|
Reserved |
31:8 |
/ |
0x0 |
/ |
SWPMI_ISR
Address offset: 0x10.
字段 |
位域 |
访问属性 |
复位值 |
描述 |
|---|---|---|---|---|
RXBFF |
0 |
RW |
0 |
接收缓冲区满标志 此标志由硬件置位,表示当前接收帧的最后一个字已到达 SWPMI_RDR。 通过软件写入 1 到 SWPMI_ICR 寄存器中的 CRXBFF 位来清除。
|
TXBEF |
1 |
RW |
0 |
发送缓冲区空标志 此标志由硬件置位,表示无需再更新 SWPMI_TDR 以完成当前帧的发送。 通过软件写入 1 到 SWPMI_ICR 寄存器中的 CTXBEF 位来清除。
|
RXBERF |
2 |
RW |
0 |
接收 CRC 错误标志 此标志由硬件置位,表示接收到的帧中存在 CRC 错误。 与 RXBFF 标志同步设置。通过软件写入 1 到 SWPMI_ICR 寄存器中的 CRXBERF 位来清除。
|
RXOVRF |
3 |
RW |
0 |
接收溢出错误标志 此标志由硬件置位,表示在有效载荷接收期间发生溢出,即 SWPMI_RDR 未被软件或 DMA 及时读取。 通过软件写入 1 到 SWPMI_ICR 寄存器中的 CRXOVRF 位来清除。
|
TXUNRF |
4 |
RW |
0 |
发送欠载错误标志 此标志由硬件置位,表示在有效载荷发送期间发生欠载,即 SWPMI_TDR 未被软件或 DMA 及时写入。 通过软件写入 1 到 SWPMI_ICR 寄存器中的 CTXUNRF 位来清除。
|
RXNE |
5 |
RO |
0 |
接收数据寄存器非空 此标志指示接收数据寄存器状态。
|
TXE |
6 |
RO |
1 |
发送数据寄存器空 此标志指示发送数据寄存器状态。
|
TCF |
7 |
RW |
0 |
传输完成标志 此标志由硬件置位,当发送和接收均完成后,且 SWP 总线切换到 SUSPENDED 状态。 通过软件写入 1 到 SWPMI_ICR 寄存器中的 CTCF 位来清除。
|
SRF |
8 |
RW |
0 |
从机恢复标志 此标志由硬件置位,表示检测到从机发出的 RESUME 信号。 通过软件写入 1 到 SWPMI_ICR 寄存器中的 CSRF 位来清除。
|
SUSP |
9 |
RO |
1 |
挂起标志 此标志是状态标志,报告 SWP 总线状态。
|
DEACTF |
10 |
RO |
0 |
去激活标志 此标志是状态标志,确认请求进入 DEACTIVATED 模式。
注意:如果在 DEACT 位被置位时检测到从机 RESUME,SRF 标志将被置位,DEACTF 不会被置位,SWP 将保持在 ACTIVATED 状态。 |
RDYF |
11 |
RO |
0 |
收发器就绪标志 此标志由硬件置位,表示收发器已准备就绪。 在设置 SWPMI_CR 寄存器中的 SWPTEN 位以启用 SWPMI_IO 收发器后,软件必须等待此标志置位,才能设置 SWPACT 位以激活 SWP 总线。
|
Reserved |
31:12 |
/ |
0x0 |
/ |
SWPMI_IER
Address offset: 0x14.
字段 |
位域 |
访问属性 |
复位值 |
描述 |
|---|---|---|---|---|
RXBFIE |
0 |
RW |
0 |
|
TXBEIE |
1 |
RW |
0 |
|
RXBERIE |
2 |
RW |
0 |
|
RXOVRIE |
3 |
RW |
0 |
|
TXUNRIE |
4 |
RW |
0 |
|
RIE |
5 |
RW |
0 |
|
TIE |
6 |
RW |
0 |
|
TCIE |
7 |
RW |
0 |
|
SRIE |
8 |
RW |
0 |
|
Reserved |
10:9 |
/ |
0x0 |
/ |
RDYIE |
11 |
RW |
0 |
|
Reserved |
31:12 |
/ |
0x0 |
/ |
SWPMI_RFL
Address offset: 0x18.
字段 |
位域 |
访问属性 |
复位值 |
描述 |
|---|---|---|---|---|
RFL |
4:0 |
RO |
0 |
接收帧长度 RFL[4:0] 是接收到的帧有效载荷中的数据字节数。 最低两位 RFL[1:0] 给出上次读取 SWPMI_RDR 寄存器时相关字节的数量。 |
Reserved |
31:5 |
/ |
0x0 |
/ |
SWPMI_TDR
Address offset: 0x1C.
字段 |
位域 |
访问属性 |
复位值 |
描述 |
|---|---|---|---|---|
TD |
31:0 |
WO |
0 |
发送数据 包含要发送的数据。 写入此寄存器将触发 SOF 传输或下一个有效载荷数据传输,并清除 TXE 标志。 |
SWPMI_RDR
Address offset: 0x20.
字段 |
位域 |
访问属性 |
复位值 |
描述 |
|---|---|---|---|---|
RD |
31:0 |
RO |
0 |
接收数据 包含接收到的数据。 读取此寄存器会清除 RXNE 标志。 |
SWPMI_OR
Address offset: 0x24.
字段 |
位域 |
访问属性 |
复位值 |
描述 |
|---|---|---|---|---|
SWP_TYYP |
0 |
RW |
0 |
SWP 收发器旁路 此位用于绕过内部收发器(SWPMI_IO),并连接外部收发器。
|
SWP_CLASS |
1 |
RW |
0 |
SWP 类型选择 此位用于选择 SWP 工作模式(参见第 58.3.3 节:SWP 初始化与激活)。
|
Reserved |
31:2 |
/ |
0x0 |
/ |