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

【实战经验】SWIM协议的GPIO口模拟

[复制链接]
zero99 发布时间:2017-1-4 17:43
前言
为了更新。ST提供了STLINK,可以通过该工具上的SWIM口进行下载程序,当然在客户的实际使用中,客户也可以按照SWIM的协议,自己去实现类似STLINK的功能。

一、详解
手册只需要参照UM0470_STM8 SWIM communication protocol and debug module即可,注意请在官网下载最新的UM0470,对老版的有了一些修改。目前我参考的是DocID14024 Rev 4。在24-AUG-2016做的修改。
对于官方的STLINK部分的电路设计,可以参考STM8S-Discovery的原理图设计,如下:
61.jpg
STLINK里面的主控芯片是STM32F103,结合MCU部分的电路图,不难发现,其结构如下:
62.jpg
所以可以看出,虽然我们认为的SWIM口线只有四根线,但是这只是在终端客户看来,在实际的开发过程中,会有不止四根线去实现SWIM协议的功能。
其中需要说明的是:
SWIM功能用到的口线,必须要配置成OPEN-Drain模式,不可以使用推挽模式。

二、软件部分
ST目前没有官方的示例代码供客户验证,但是在大千世界的互联网上还是能找到相关的例程,这里分享一个链接需要翻墙:
63.png
64.jpg
自己找一块STM32F103的discovery板子再加一块STM8S105的discovery板子,找一些上面的R1,R2,R3的电阻焊接上面的电路,链接好即可,然后编译下载好的软件,稍微修改,然后运行:
65.jpg
通过STVP验证软件是否通过自己模拟的SWIM正确的写入了:
66.jpg
验证通过。
通过上面的实践,发现其实主要的两个方面:
1、电路的连接要正确,请参考ST官方的原理图;注意端口有分流的,这样可以避免端口的来回切换。
2、IO口配置成Open-Drain模式,运用网上开源的例程还是很轻松的能编译通过的。
3、注意代码里面的容错性处理。具体说明如下图所示:
67.jpg
在SWIM写的过程中,需要关注容错性的处理,可以定义全局变量nacked,观察他的数值,会发现他会随着发送的字节长度的加长而线性的增加;所以很有必要将SWIM_NACK_MAX的数值放大一些;否则可能造成想要较长长度的数值不能正确的全部写成功;



文档下载

更多实战经验
收藏 1 评论8 发布时间:2017-1-4 17:43

举报

8个回答
jackten 回答时间:2017-1-4 18:05:20
谢谢分享                                       
leo121_3006061 回答时间:2017-1-4 20:23:24
谢谢分享
lili0000 回答时间:2017-1-5 09:03:52
谢谢LZ分享
asmhai 回答时间:2017-4-7 06:58:24
早上好!谢谢分享。
biu~~~ 回答时间:2018-7-6 16:02:00
s19文件放在stm32flash中,通过GPIO模拟SWIM协议可以实现给STM8s下载程序吗
D1059552438 回答时间:2018-7-19 09:45:55
非常感谢楼主的分享,学习学习
ywzlq_st 回答时间:2018-7-23 13:00:21
非常感谢楼主的分享!
TLLED 回答时间:2018-7-23 13:56:16
谢谢分享           

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

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