STMCU小助手
发布时间:2022-2-28 20:02
|
前言 为了更新。ST 提供了 STLINK,可以通过该工具上的 SWIM 口进行下载程序,当然在客户的实际使用中,客户也可以按照SWIM 的协议,自己去实现类似 STLINK 的功能。 一、详解% Q# _0 k( g/ }" ]; R 手册只需要参照 UM0470_STM8 SWIM communication protocol and debug module 即可,注意请在官网下载最新的 UM0470,对老版的有了一些修改。目前我参考的是 DocID14024 Rev 4。在 24-AUG-2016 做的修改。: q) }6 K& E3 }5 y7 H 对于官方的 STLINK 部分的电路设计,可以参考 STM8S-Discovery 的原理图设计,如下:
' d1 p3 q$ t1 ?/ H STLINK 里面的主控芯片是 STM32F103,结合 MCU 部分的电路图,不难发现,其结构如下:& ^% L% z3 ^' e' j; ^: D
0 M8 z: X/ ?9 x, K% z 所以可以看出,虽然我们认为的 SWIM 口线只有四根线,但是这只是在终端客户看来,在实际的开发过程中,会有不止四根线去实现 SWIM 协议的功能。 其中需要说明的是: SWIM 功能用到的口线,必须要配置成 OPEN-Drain 模式,不可以使用推挽模式。 二、软件部分 ST 目前没有官方的示例代码供客户验证,但是在大千世界的互联网上还是能找到相关的例程,这里分享一个链接需要翻墙: 6 F6 H: m9 V$ w$ Q4 K
自己找一块 STM32F103 的 discovery 板子再加一块 STM8S105 的 discovery 板子,找一些上面的 R1,R2,R3 的电阻焊接上面的电路,链接好即可,然后编译下载好的软件,稍微修改,然后运行: 5 j. _( ^' t1 q P- R2 U8 p z* P+ ?
! b$ h" W" m8 ?7 ?9 n6 n 通过 STVP 验证软件是否通过自己模拟的 SWIM 正确的写入了:) T' m4 I# a' C- \' W
验证通过。! T9 i. t: ~ f# t! k2 B 通过上面的实践,发现其实主要的两个方面: 1、电路的连接要正确,请参考 ST 官方的原理图;注意端口有分流的,这样可以避免端口的来回切换。' p7 y3 r- m( W+ `6 ?* \ 2、IO 口配置成 Open-Drain 模式,运用网上开源的例程还是很轻松的能编译通过的。) o3 s# ?1 f7 E& M0 C3 A; j 3、注意代码里面的容错性处理。具体说明如下图所示:+ n* Q' P+ ^9 h% U9 L5 I* U
在 SWIM 写的过程中,需要关注容错性的处理,可以定义全局变量 nacked,观察他的数值,会发现他会随着发送的字节长度的加长而线性的增加;所以很有必要将 SWIM_NACK_MAX 的数值放大一些;否则可能造成想要较长长度的数值不能正确的全部写成功;! N8 Q8 y2 g# |4 c; N O5 Z: g+ ]# m7 T; y4 d |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版