这次测试的是 ADI / Trinamic 的 TMC2209 SilentStepStick 步进电机驱动模组。TMC2209 是一颗常见的两相步进电机驱动芯片,支持 STEP/DIR 控制,也支持通过单线 UART 做参数配置、状态读取和简单的速度控制。本文主要记录一次从开箱、查阅资料到使用 USB-To-UART 做初步通信测试的过程。
一、TMC2209 SlientStepStick产品开箱
打开快递包装:
模组使用红色半透明防静电袋包装,包装内包含 TMC2209 SilentStepStick 模组和两排排针。模组本体尺寸很小,适合直接插到面包板或 3D 打印机控制板的 StepStick 插座上使用。
这类 SilentStepStick 模组的引脚排列和常见 A4988、DRV8825 模块相近,但 TMC2209 多了 UART 配置能力。实际使用前需要特别注意不同模块版本的丝印和引脚定义,尤其是 PDN/UART、MS1、MS2、EN、VIO 和 VM 这些引脚。
二、TMC2209官方资料
本次参考了两份资料:
TMC2209_Datasheet.pdf:TMC2209 芯片数据手册。TMC2209_SilentStepStick_datasheet_Rev1.20.pdf:SilentStepStick 模组硬件资料。
芯片手册适合查寄存器、UART 帧格式和控制模式;模组手册适合查排针定义、原理图和 PCB 引脚位置。
2.1 TMC2209功能总结
根据 TMC2209 数据手册,这颗芯片主要特性包括:
- 两相步进电机驱动,适合小型步进电机控制。
- 支持
STEP/DIR接口,兼容常见运动控制方式。 - 支持单线 UART 接口,可读写寄存器,实现配置和诊断。
- 支持 StealthChop2 静音驱动。
- 支持 SpreadCycle 斩波模式。
- 支持 StallGuard4 无传感器堵转检测。
- 支持 CoolStep 动态电流调节。
- 支持通过内部步进脉冲发生器由 UART 写入速度值实现简单运动。
对入门测试来说,最关键的是两点:第一,STEP/DIR 可以像普通驱动板一样控制电机;第二,PDN/UART 可以作为单线串口,用来读写内部寄存器。
2.3 两种控制模式总结
TMC2209 常见有两种使用方式。
第一种是普通 STEP/DIR 模式。控制器输出 STEP 脉冲决定步进速度和步数,DIR 决定方向,TMC2209 只负责电流驱动和细分。这种方式最常见,也最适合需要精确位置控制的场景。
第二种是 UART 配置或 UART 控制模式。UART 可以只用于配置,例如设置电流、细分、驱动模式和读取诊断状态;也可以进一步写 VACTUAL 寄存器,使用芯片内部的步进脉冲发生器让电机按指定速度转动。需要注意的是,TMC2209 内部速度控制没有自动加减速规划,速度斜坡要由上位机或 MCU 自己实现。
本次初步测试只做 UART 读寄存器,不涉及电机运动。
2.4 原理图和PCB解读
SilentStepStick 模组资料给出了排针定义:
VIO:逻辑电源,接 3.3V 或 5V,需与串口逻辑电平匹配。GND:地。VM:电机电源,范围参考模组手册,不能和逻辑电源混淆。PDN/UART:TMC2209 的PDN_UART引脚,可作为单线 UART。MS1/MS2:在 UART 模式下也作为地址位,MS1是 bit0,MS2是 bit1。EN:低电平使能驱动器。
结合模组 PDF 右下角 PCB 图,当前实物图旋转后更容易对应:一侧排针从上到下可以识别为 Dir、Step、PDN/UART、SPREAD、MS2、MS1、En;另一侧上方是 GND 和 VIO,下方还有电机线圈、GND、VM 等引脚。
三、TMC2209串口初步测试
3.1 电路搭建
初步尝试使用 PC 通过 USB-To-UART 连接到 TMC2209 的 PDN/UART,实现发送命令和接收回复,测试能否读取 TMC2209 内部寄存器状态。
当前测试连接关系如下:
- USB-To-UART
VCCIO接 TMC2209VIO。 - USB-To-UART
GND接 TMC2209GND。 - USB-To-UART
TXD直接接 TMC2209PDN/UART。 - USB-To-UART
RXD也直接接 TMC2209PDN/UART。 - TMC2209
MS1接GND。 - TMC2209
MS2接GND。 - TMC2209
EN接GND。
这里 MS1=0、MS2=0,因此 UART 从机地址为 0。EN 接地表示使能驱动器。测试时主要关注 UART 通信,电机电源和电机可以先不作为重点。
需要强调的是,这次测试连接中 TXD 到 PDN/UART 没有串联 1k 电阻,这是后面通信失败的重要原因。
3.2 串口测试
TMC2209 UART 使用 8N1 格式,芯片会根据同步字节自动适应波特率。测试时可以先使用 115200 波特率。
按 TMC2209 手册,读寄存器请求帧为 4 字节:
sync + reserved, slave address, register address, CRC
在 MS1=0、MS2=0,从机地址为 0 的情况下,可以尝试读取几个寄存器:
读取 IOIN:
05 00 06 6F
读取 GSTAT:
05 00 01 C1
读取 IFCNT:
05 00 02 8F
其中 IOIN 比较适合作为第一条测试命令,因为它包含输入引脚状态和芯片版本字段。正常情况下,TMC2209 的 IOIN.VERSION 应该能读到 0x21。
实际串口测试中,发送了一些命令,但没有得到预期回复:
从结果看,PC 端收到的数据和发出的数据一致。这说明串口 RX 端看到了自己 TX 发出去的内容,也就是单线 UART 接线产生的本地回显,但没有看到 TMC2209 正常返回的数据帧。
正常读回时,除了看到发送的 4 字节请求外,还应该能看到 TMC2209 返回的 8 字节响应,响应的第二个字节通常为 FF,后面包含寄存器地址、32 位数据和 CRC。


