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 的原理图设计,如下:
STLINK 里面的主控芯片是 STM32F103,结合 MCU 部分的电路图,不难发现,其结构如下:
所以可以看出,虽然我们认为的 SWIM 口线只有四根线,但是这只是在终端客户看来,在实际的开发过程中,会有不止四根线去实现 SWIM 协议的功能。 其中需要说明的是: SWIM 功能用到的口线,必须要配置成 OPEN-Drain 模式,不可以使用推挽模式。 二、软件部分 ST 目前没有官方的示例代码供客户验证,但是在大千世界的互联网上还是能找到相关的例程,这里分享一个链接需要翻墙:
自己找一块 STM32F103 的 discovery 板子再加一块 STM8S105 的 discovery 板子,找一些上面的 R1,R2,R3 的电阻焊接上面的电路,链接好即可,然后编译下载好的软件,稍微修改,然后运行:
通过 STVP 验证软件是否通过自己模拟的 SWIM 正确的写入了:
验证通过。 通过上面的实践,发现其实主要的两个方面: 1、电路的连接要正确,请参考 ST 官方的原理图;注意端口有分流的,这样可以避免端口的来回切换。 2、IO 口配置成 Open-Drain 模式,运用网上开源的例程还是很轻松的能编译通过的。 3、注意代码里面的容错性处理。具体说明如下图所示:
在 SWIM 写的过程中,需要关注容错性的处理,可以定义全局变量 nacked,观察他的数值,会发现他会随着发送的字节长度的加长而线性的增加;所以很有必要将 SWIM_NACK_MAX 的数值放大一些;否则可能造成想要较长长度的数值不能正确的全部写成功; |
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
【经验分享】STM32CubeIDE汉化
手把手教你VSCode搭建STM32开发环境
RTOS在STM32中的应用
微信公众号
手机版