SWIM通信

整个工程需要用到的知识包括:dma接收、定时器捕获、串口通信

进入时序

在这里插入图片描述
整个流程从图中可以看出共分为8个过程。我将前面的(1)(2)叫做进入时序,这个过程就是向SWIM引脚发送特定的脉冲。在这个进入时序发送成功之后,从机(slave)将会返回一个应答(ack)。
(1)将SWIM引脚拉低16us以上,激活SWIM状态。
(2)发送如下脉冲。
在这里插入图片描述
(3)当收到应答之后。我们需要给他一定时间的延时,这段延时的作用是给HSI一个启动稳定的时间。
(4)发送同步桢(128*SWIM_CLK)这里,需要至少大于64个算作是成功的同步桢(SWIM_CLK=1/2 HSI)。
(5)释放SWIM确保已经准备进行好通信。
(6)配置寄存器SWIM-CSR(写0xA0)
(7)释放reset并等待1ms同步。
完成以上步骤之后就已经成功进入SWIM模式下了,进入SWIM模式以后的就可以完成ROTF、WOTF两个底层函数了。
注:进入SWIM以后的“1”、“0”就不是我们传统的格式了。在这里有个位格式的定义。在默认情况下是低速位格式
在这里插入图片描述
0:20个脉冲是0,2个脉冲是1.
1:20个脉冲是1,2个脉冲是0.

通信格式

在这里插入图片描述
在这里插入图片描述

ROTF

在这里插入图片描述
注:N是读取的个数,最大位255个
@E@H@L:24位地址
此处读出来的数据也是位格式,我们需要通过判断低电平的长度判断是0或1。
此处建议使用硬件捕获。软件实现很难成功捕获。

WOTF

在这里插入图片描述
注:N是读取的个数,最大位255个
@E@H@L:24位地址
这里写之前需要先设置SWIM_DM位之后才能方位slave资源,否则只能访问SWIM_CSR寄存器。

猜你喜欢

转载自blog.csdn.net/qq_43448742/article/details/89635379