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

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

[复制链接]
zero99 发布时间:2017-1-4 17:43
前言
& ^0 I/ n! c' y. x  f为了更新。ST提供了STLINK,可以通过该工具上的SWIM口进行下载程序,当然在客户的实际使用中,客户也可以按照SWIM的协议,自己去实现类似STLINK的功能。7 o) v& j! a8 S" B, Q$ i' G8 F' i! R" P
% G. Y6 A3 y" V' N2 i. W
一、详解
! y( k6 O  G# R( o( V' v手册只需要参照UM0470_STM8 SWIM communication protocol and debug module即可,注意请在官网下载最新的UM0470,对老版的有了一些修改。目前我参考的是DocID14024 Rev 4。在24-AUG-2016做的修改。
6 I% S& A0 G- E  L2 A8 v7 K/ m6 d- n对于官方的STLINK部分的电路设计,可以参考STM8S-Discovery的原理图设计,如下:
3 H9 C7 z2 z3 m+ `. t9 S  r6 V 61.jpg 2 C$ i7 j. {: W7 a. ]: t
STLINK里面的主控芯片是STM32F103,结合MCU部分的电路图,不难发现,其结构如下:% C5 L2 E/ e. g# ^/ t1 x
62.jpg ( y- X3 g/ a) ~. L+ z( |3 B* Q
所以可以看出,虽然我们认为的SWIM口线只有四根线,但是这只是在终端客户看来,在实际的开发过程中,会有不止四根线去实现SWIM协议的功能。/ \% C7 v- H$ H) x; A, `; K
其中需要说明的是:
$ z- ^# o! a: LSWIM功能用到的口线,必须要配置成OPEN-Drain模式,不可以使用推挽模式。, r( P& F& [0 V# r8 |7 N  U
" |4 J9 K' }2 J1 `
二、软件部分
. o8 w$ B5 b$ t! P! B6 X. H4 b% @ST目前没有官方的示例代码供客户验证,但是在大千世界的互联网上还是能找到相关的例程,这里分享一个链接需要翻墙:
( w% e* c2 ?$ f8 i9 H( m 63.png 1 Q8 Y$ D; h, D  i2 x5 U7 @
64.jpg / y0 g5 l! Z7 @7 o
自己找一块STM32F103的discovery板子再加一块STM8S105的discovery板子,找一些上面的R1,R2,R3的电阻焊接上面的电路,链接好即可,然后编译下载好的软件,稍微修改,然后运行:
3 j. ?5 a) v0 w4 M; S8 [ 65.jpg ( d2 i, k' g; Z
通过STVP验证软件是否通过自己模拟的SWIM正确的写入了:
' O, z4 r) q, Y& `4 T+ U. y: M# L) n, Q 66.jpg
5 z! p& E5 A* \* i( l验证通过。0 P" x6 Y7 {$ k9 `+ c7 Z
通过上面的实践,发现其实主要的两个方面:7 L2 c) [9 w0 y. J0 {; |
1、电路的连接要正确,请参考ST官方的原理图;注意端口有分流的,这样可以避免端口的来回切换。
7 O, U, `, Z  k! U* g2、IO口配置成Open-Drain模式,运用网上开源的例程还是很轻松的能编译通过的。& U$ w( Z/ _3 Q5 K) G% j
3、注意代码里面的容错性处理。具体说明如下图所示:
6 O9 u# ~! A  n! s. R; L+ u 67.jpg - p( ?$ X* X0 G; r9 E" }
在SWIM写的过程中,需要关注容错性的处理,可以定义全局变量nacked,观察他的数值,会发现他会随着发送的字节长度的加长而线性的增加;所以很有必要将SWIM_NACK_MAX的数值放大一些;否则可能造成想要较长长度的数值不能正确的全部写成功;

( B+ E& G: @: E  P; K
7 v5 Y3 |. c1 S3 ~; a
$ C8 @7 ]9 A1 D9 z文档下载7 U8 J0 F+ f2 G4 Z( d# ~+ p
% D: ?( r! L4 ]; Q
更多实战经验5 W. W; Y+ K" Z8 l% I1 p
赞 收藏 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管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版