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

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

[复制链接]
zero99 发布时间:2017-1-4 17:43
前言
, P1 B& }2 W8 c- e% W为了更新。ST提供了STLINK,可以通过该工具上的SWIM口进行下载程序,当然在客户的实际使用中,客户也可以按照SWIM的协议,自己去实现类似STLINK的功能。6 ?6 p- I2 D+ H* w* J! Y; j

3 l, W/ n% M# j$ R) M2 S  s# W# U4 ~一、详解
' k# s3 e6 W& {& K2 f手册只需要参照UM0470_STM8 SWIM communication protocol and debug module即可,注意请在官网下载最新的UM0470,对老版的有了一些修改。目前我参考的是DocID14024 Rev 4。在24-AUG-2016做的修改。
8 R$ l% P# B2 X$ S  e4 D; r对于官方的STLINK部分的电路设计,可以参考STM8S-Discovery的原理图设计,如下:2 o8 X7 n* X  p6 ?
61.jpg
% W: a0 D% [& a$ V0 M) [7 B- fSTLINK里面的主控芯片是STM32F103,结合MCU部分的电路图,不难发现,其结构如下:" j+ _% m; y2 i8 l3 s. ~
62.jpg . q+ X7 W7 p1 T- J
所以可以看出,虽然我们认为的SWIM口线只有四根线,但是这只是在终端客户看来,在实际的开发过程中,会有不止四根线去实现SWIM协议的功能。$ w& R) I) E% e0 s
其中需要说明的是:
  t$ e8 b) \1 p+ O& ^, `SWIM功能用到的口线,必须要配置成OPEN-Drain模式,不可以使用推挽模式。+ K' ~" A% L) J% A
" x, f! A- y& k$ T3 m& h+ {
二、软件部分. `- `9 p2 h. L3 m
ST目前没有官方的示例代码供客户验证,但是在大千世界的互联网上还是能找到相关的例程,这里分享一个链接需要翻墙:7 j$ g5 R+ I4 t
63.png 1 H1 U# f9 ~5 d- v" D3 d1 X
64.jpg
# ]( c' r, m0 p# W1 ]3 L' t自己找一块STM32F103的discovery板子再加一块STM8S105的discovery板子,找一些上面的R1,R2,R3的电阻焊接上面的电路,链接好即可,然后编译下载好的软件,稍微修改,然后运行:- U% ]" @& ~/ w' z8 U
65.jpg ' Z6 W0 C) {+ i. T5 U
通过STVP验证软件是否通过自己模拟的SWIM正确的写入了:
$ v4 N/ j& b+ }6 A9 j 66.jpg
& h5 I/ @% V0 B- W验证通过。
  d* l+ ]6 C: C9 D& h: {+ f通过上面的实践,发现其实主要的两个方面:
* D+ o4 H. `1 K8 J3 P1、电路的连接要正确,请参考ST官方的原理图;注意端口有分流的,这样可以避免端口的来回切换。/ c' h7 t' ?- H" @& N" U. \9 y! @
2、IO口配置成Open-Drain模式,运用网上开源的例程还是很轻松的能编译通过的。$ ~/ j. z& L! [5 L7 f& h% T  [' K
3、注意代码里面的容错性处理。具体说明如下图所示:
$ K% w! V' H7 Y# R 67.jpg 3 L; b+ j8 H! R6 z8 |( O, y! r# w
在SWIM写的过程中,需要关注容错性的处理,可以定义全局变量nacked,观察他的数值,会发现他会随着发送的字节长度的加长而线性的增加;所以很有必要将SWIM_NACK_MAX的数值放大一些;否则可能造成想要较长长度的数值不能正确的全部写成功;

4 B1 G9 h/ h" Q9 p7 h) i5 F/ Z6 m3 q* {& }3 \, t  M
4 R* e2 _3 m6 h: x8 c  h/ p
文档下载
; ?' W9 F! X( h- [+ K2 c) {# o$ e$ |  B) x6 F% @; J
更多实战经验( S/ C3 E" e- Y
收藏 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下载程序吗
吻别 回答时间:2018-7-19 09:45:55
非常感谢楼主的分享,学习学习
ywzlq_st 回答时间:2018-7-23 13:00:21
非常感谢楼主的分享!
TLLED 回答时间:2018-7-23 13:56:16
谢谢分享           

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版