你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】SWIM 协议的 GPIO 口模拟

[复制链接]
STMCU小助手 发布时间:2022-2-28 20:02
前言
为了更新。ST 提供了 STLINK,可以通过该工具上的 SWIM 口进行下载程序,当然在客户的实际使用中,客户也可以按照SWIM 的协议,自己去实现类似 STLINK 的功能。
一、详解
手册只需要参照 UM0470_STM8 SWIM communication protocol and debug module 即可,注意请在官网下载最新的 UM0470,对老版的有了一些修改。目前我参考的是 DocID14024 Rev 4。在 24-AUG-2016 做的修改。
对于官方的 STLINK 部分的电路设计,可以参考 STM8S-Discovery 的原理图设计,如下:

[9SIDMX@V9]_E(}BEGF{P5F.png

STLINK 里面的主控芯片是 STM32F103,结合 MCU 部分的电路图,不难发现,其结构如下:

[6ZRS}3PE}W8CC1RQ2%1.png

所以可以看出,虽然我们认为的 SWIM 口线只有四根线,但是这只是在终端客户看来,在实际的开发过程中,会有不止四根线去实现 SWIM 协议的功能。
其中需要说明的是:
SWIM 功能用到的口线,必须要配置成 OPEN-Drain 模式,不可以使用推挽模式。

二、软件部分
ST 目前没有官方的示例代码供客户验证,但是在大千世界的互联网上还是能找到相关的例程,这里分享一个链接需要翻墙:

U[U$Y[ER}P83SW20R}L0P~D.png

XD]T}003B5O(F6F1043NBXO.png

自己找一块 STM32F103 的 discovery 板子再加一块 STM8S105 的 discovery 板子,找一些上面的 R1,R2,R3 的电阻焊接上面的电路,链接好即可,然后编译下载好的软件,稍微修改,然后运行:

RW@_L@WOKKD2IU23687VVX4.png

通过 STVP 验证软件是否通过自己模拟的 SWIM 正确的写入了:

MA5VOQ23IX4EW~33UY~W0~D.png

验证通过。
通过上面的实践,发现其实主要的两个方面:
1、电路的连接要正确,请参考 ST 官方的原理图;注意端口有分流的,这样可以避免端口的来回切换。
2、IO 口配置成 Open-Drain 模式,运用网上开源的例程还是很轻松的能编译通过的。
3、注意代码里面的容错性处理。具体说明如下图所示:

AJQQ7@DX8YAE`I_FT@56D8T.png

在 SWIM 写的过程中,需要关注容错性的处理,可以定义全局变量 nacked,观察他的数值,会发现他会随着发送的字节长度的加长而线性的增加;所以很有必要将 SWIM_NACK_MAX 的数值放大一些;否则可能造成想要较长长度的数值不能正确的全部写成功;

收藏 评论0 发布时间:2022-2-28 20:02

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版