SWIM 通信协议

最近新学习了一种协议模式——SWIM,适用于STM8系列芯片,st官网有明确的文档说明。


一、编码格式

   SWIM 通信协议使用归零码编译,并且支持两种速率。在 SWIM 激活时,选择低速,而高速是通过 SWIM 协议在 SWIM_CSR 寄存器中设置 HS bit 完成。

1.1 高速编码格式

在这里插入图片描述
   由 8M 时钟同步,两个‘0’加上八个‘1’表示逻辑 1,八个‘0’加上两个‘1’表示逻辑 0。

1.2 低速编码格式

在这里插入图片描述
   由 8M 时钟同步,两个‘0’加上二十个‘1’表示逻辑 1,二十个‘0’加上两个‘1’表示逻辑 0。

二、通讯协议

2.1 主机(host)到从机(target)通信

主从通信格式:

在这里插入图片描述
由命令+数据组成,其中
命令(5-bit):bit[0]:始终是 0,称为 header;
       bit[3:1]:预定义命令;
       bit[4]:b0,b1,b2 异或值;
       ack 是 target 返回的电平(1-ack,0-nack)。
数据(10-bit):bit[0]:始终是 0;
      bit[8:1]:8-bit 数据
      bit[9]:b0-b7 异或值
      ack 是 target 返回的电平。

2.2 从机(target)到主机(host)通信

从主通信格式:

在这里插入图片描述
由数据组成,其中
数据(10-bit):bit[0]:始终是 1;
       bit[8:1]:8-bit 数据
       bit[9]:b0-b7 异或值
       ack 是 host 返回的电平。

2.3 预定义命令

在这里插入图片描述

三、SWIM 命令

3.1 复位操作

命令格式:
在这里插入图片描述
复位操作有两种,第一种为发送复位命令,即发送 SRST。第二种为拉低总线 16us以上。

3.2 读操作

命令格式:
在这里插入图片描述
由读命令+读取的字节数+24-bit 地址+N个读取的数据组成:
ROTF:     0b001;
N:       读取的字节数
@E/@H/@L:24-bit 地址
D[@+i]:    读取的数据

3.3 写操作

命令格式:
在这里插入图片描述
由写命令+发送的字节数+24-bit 地址+N 个发送的数据组成:
ROTF:     0b010;
N:       发送的字节数
@E/@H/@L:24-bit 地址
D[@+i]:   发送的数据

四、激活流程

   上电之后,SWIM 并没有处于激活状态,需要发送特定的时序完成激活,如下图:

在这里插入图片描述

    1.SWIM 引脚至少 16us 低电平;
    2.发送特定序列,四个 1k Hz 脉冲+四个 2k Hz 脉冲;
    3.设置 SWIM_CSR 寄存器 0xA0,bit[7]:屏蔽内部重置源,bit[5]:允许访问整个存储器范围和 SRST 命令。


   目前只是对SWIM的初步认识,后续模拟的时候遇到问题再记录。

st-swim

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现想法: 1、先在STM8S003上试验。 2、使用STM32F103RBT6作主控芯片。 3、将下载器配置成U盘,初步定在8M。用于存储hex,和s19文件。 4、2.4寸的液晶屏。 5、再移植个emwin,如果内容充足再移植个ucos. 改版后实现功能: 1、电路上增加蜂鸣器。 2、W25Q64使用硬件SPI 3、可编程输出电压 4、将STM32F103RBT6换成RCT6增加到48K的RAM和256K的FLASH. 5、软件上实现器件可选 6、设置管理员身份。可禁止和使用U盘、设置烧写次数、加载烧写文件等功能 7、支持EEPROM的擦出和烧写。 最终实现功能: 编程器没有实现EEPROM的擦除,也没实现可编程电压输出。 编程器分两种模式,一个烧录模式,一个管理员模式。 开机不用输入密码直接按ex键进入烧录模式,此模式下setting键无效。即无法设置。只能烧写,烧录完设定好的次数后无法正常烧写。 开机时输入正确密码按OK键进入管理员模式,setting键有效,可以选择烧录文件、芯片型号、是否使能USB,修改密码和该烧录文件的烧写总次数。 在主界面上显示了USB的状态,电压状态(未实现),烧录总次数、本次开机后烧录的次数,选择是否擦除eeprom(未实现)是否擦除FLASH后编程(理该上应该勾选上),及状态显示,和开始按键。 演示视频: 电路城语:此资料为卖家免费分享,不提供技术支持,请大家使用前验证资料的正确性!如涉及版权问题,请联系管理员删除! 附件包含以下资料:
STLink是一种仿真器,用于STM8和STM32系列单片机的调试和下载。STLink支持多种模式,包括JTAG、SWD和SWIM。其中,SWIM是STLink的一种特殊的下载模式,它专门用于STM8系列单片机的调试和下载。SWIM模式通过单根线连接单片机的SWIM引脚,实现对单片机的编程和调试操作。SWIM模式相对于JTAG和SWD模式来说,在硬件连接上更简洁,只需要连接SWIM引脚即可,但在一些特定的情况下,SWIM模式可能会受到一些限制和局限性。总而言之,STLink的SWIM模式是用于STM8系列单片机的特殊调试和下载模式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [J-Link、ST-Link、DAPLink、ULink仿真器...以及支持的JTAG、SWD、SWIM下载模式、SWV、串口Printf调试差异?](https://blog.csdn.net/chenhuanqiangnihao/article/details/126379177)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [J-Link、ST-Link、ULink、JTAG、SWD、SWIM的区别](https://blog.csdn.net/a183635870/article/details/107041022)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值