0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于UART通讯控制TMC2208/2209模块驱动两相四线步进电机

jf_88434166 来源:jf_88434166 作者:jf_88434166 2025-11-10 19:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

@TOC


前言

前期已经介绍过TMC2208/2209模块的概述,两者区别,性能参数以及驱动电流的计算,就不再多赘述。
TMC2208/2209模块除了通过外部硬件控制驱动,还可以通过串口配置寄存器实现转速,方向,细分等设置来控制驱动,这篇主要介绍如何通过串口(UART)通讯控制TMC2208/2209模块驱动2相4线步进电机

一、寄存器说明

用串口控制TMC2208/2209模块,就必须了解模块的相关寄存器有哪些,以及寄存器的每一位需要怎么设置。串口控制就是通过配置寄存器来控制驱动,这里以TMC2209为例进行说明。





二、UART的帧指令编写

写指令:长度为64位,0-7:8位帧头,8-15:8位设备地址,16-23:7位寄存器地址+读写位,24-55:32位数据写入,56-63:8位CRC校验。返回值为写入什么就回显什么。注意:寄存器地址需要加上写入位,即寄存器地址 | 0x80。

往0x00寄存器写入数据为例:帧头:0x55,设备地址可根据MS1和MS2引脚选择,这里使用默认地址:0x00,写入寄存器地址:0x00|0x80为0x80,写入数据:0x00000081,最后CRC校验,即帧指令为55 00 80 00 00 00 81 CRC。得到0x00寄存器配置:设置使用VREF为参考电压,微步分辨率由MSTEP寄存器选择。下面的读指令也是如此,不过寄存器地址不需要加读写位,寄存器本身地址就是读。

读指令:长度为32位,0-7位为帧头,8-15位为设备地址,16-23位为寄存器地址,24-31位为CRC校验。

读指令返回值:长度为64位,0-7位为帧头,8-15位为响应地址,16-23位为寄存器地址,24-55位为读取的数据,56-63位为CRC校验。

注意:CRC校验为标准的LSB-first CRC,是LSB到MSB,计算CRC不能用普通的CRC-8计算。CRC计算可以用手册给的示例进行计算。

void swuart_calcCRC(UCHAR* datagram, UCHAR datagramLength) 
{ 
	int i,j; 
	UCHAR* crc = datagram + (datagramLength-1); // CRC located in last byte of message 
	UCHAR currentByte; 
	*crc = 0; 
	for (i=0; i< (datagramLength-1); i++) {      
		currentByte = datagram[i];                
		// Execute for all bytes of a message 
		// Retrieve a byte to be sent from Array 
	for (j=0; j< 8; j++) { 
		if ((*crc > > 7) ^ (currentByte&0x01))   // update CRC based result of XOR operation 
		{ 
			*crc = (*crc < < 1) ^ 0x07; 
		} 
		else 
		{ 
			*crc = (*crc < < 1); 
		} 
		currentByte = currentByte > > 1; 
	} // for CRC bit 
	} // for message byte 
}

这里整理了一些帧指令,可直接使用。

05 00 80 00 00 00 C1 C9设置启动UART模式和寄存器控制微步,电机正转
05 00 80 00 00 00 C9 B9设置电机反转
05 00 90 00 00 00 00 50设置IRUN和IHOLD都为0,注意:电流不会降到0
05 00 91 00 20 10 04 24设置IRUN=16,IHOLD=4,IHOLDDELAY=0.5s
05 00 91 00 00 00 17 51设置TPOWER DOWN=0.5s
05 00 EC 10 00 00 03 AA设置1/256微步
05 00 EC 11 00 00 03 9B设置1/128微步
05 00 EC 12 00 00 03 31设置1/64微步
05 00 EC 13 00 00 03 00设置1/32微步
05 00 EC 14 00 00 03 64设置1/16微步
05 00 EC 15 00 00 03 55设置1/8微步
05 00 EC 16 00 00 03 FF设置1/4微步
05 00 EC 17 00 00 03 CE设置1/2微步
05 00 EC 18 00 00 03 CD设置全步
05 00 A2 00 00 FF 00 D9以61,440步频正转
05 00 A2 00 00 04 00 A0以1024步频正转
05 00 A2 FF FF FC 00 CE以1024步频反转
05 00 06 6F读IOIN
05 00 6C CA读CHOPCONF
05 00 70 62读PWMCONF
05 00 71 EB读PWM_SCALE
05 00 72 A5读PWM_AUTO

注意:TMC2208/2209模块没有掉电保存功能,配置完参数后如果掉电就会恢复为默认设置。

三、TMC2209串口连接

TMC2209串口采用单线uart,其连接方式如下:

根据手册可知,TMC2209可选择内部时钟或外部时钟,模块的CLK引脚默认下拉到GND,且其内部集成有步进脉冲发生器,可选择使用内部脉冲发生器提供脉冲信号还是使用外部脉冲发生器提供脉冲信号(0x22设置为0为外部脉冲模式,不为0内部脉冲模式),即如果使用外部发生器提供脉冲信号,STEP引脚就需要连接,反之悬空。而其他引脚悬空即可。

四、相关寄存器参数计算说明

看寄存器表,不是所有寄存器都和0x00寄存器那样在寄存器表就明确说明要写入什么数值,写入的数值指的是什么。没有明确说明的需要查看手册找到具体描述来确定需要写入什么数值,而且有些数值需要进行相应计算得出。这里以0x10和0x11寄存器为例说明。

0x10寄存器:
IRUN:电机运行电流
IHOLD:电机静止保持电流
根据上面的0x10寄存器描述可知,IRUN,IHOLD是写入0~31的值来设置电流,即将电流分为32等份。如何计算每等份电流多大,可根据手册给出的公式计算。

其中CS就是需要写入寄存器的值(0-31),RSE为0.11欧,Vfs为设置的参考电压。

IHOLDDELAY:决定电机从运行电流逐步降到静止电流的过渡时间,当检测到静止stst=1且TPOWERDOWN到时后,才开始平滑下降。共有 IRUN - IHOLD个电流步进下降,每一步延迟是2^18 / fclk的IHOLDDELAY倍,TMC2209内部时钟默认为fclk=12MHz,所以t ≈ 21.85ms x IHOLDDELAY。总下降时间:

最终到IHOLDDELAY的时间 = TPOWERDOWN + tramp,IHOLDDELAY取值 = 0~15,0表示无平滑。

0x11寄存器:
TPOWERDOWN:当驱动芯片检测到电机停止转动之后,不会马上切断电机保持电流,而是等待一段时间,这段时间就是TPOWERDOWN设置的延迟,时间设置范围0至5.6s。

TPOWERDOWN取值 = 0~255,0表示无延迟。

通过上面的计算来确定写入的值对应实际IRUN,IHOLD电流,IHOLDDELAY过渡时间,TPOWERDOWN延迟时间是多少。

五、用TMC220X配置器配置寄存器

除了通过对应帧指令配置寄存器外。还可以用TMC220X配置器配置寄存器,配置器只需要知道对应寄存器的作用,直接写入数值配置即可。不用知道该寄存器对应每一位需要写入什么数值,也不需要繁琐的计算,来编写帧指令配置寄存器。当然,TMC220X配置器不是所有寄存器都可以配置,只有一部分寄存器可配置。

TMC220X配置器安装:

  1. 安装脚本沟通器(适用于 Windows、Linux、MacOS)
  2. 下载TMC220X配置器
  3. 使用 ScriptCommunicator(脚本沟通器) 启动 TMC220X.scez 文件
  4. 选择芯片:TMC2208 或 TMC2209
  5. 选择串行端口并单击连接
  6. 配置器中的修改直接传输,即修改数值直接写入到寄存器。

如图所示:左边为相应寄存器,右边为需要写入的数值,设置参数推荐使用配置器来配置。

OTP则是0x05寄存器的配置,具体参数看上面的0x05寄存器配置表。

六、效果展示

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 步进电机
    +关注

    关注

    153

    文章

    3271

    浏览量

    152768
  • uart
    +关注

    关注

    22

    文章

    1321

    浏览量

    106987
  • 通讯控制
    +关注

    关注

    0

    文章

    8

    浏览量

    5599
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请大神们帮我看看ESP32-C3FH4+TMC2209控制4个42步进电机原理图存在的问题哇。谢谢

    我是一个新人,从开始学习到动手画电路图共计2个月(断断续续的学)。自己画了一个ESP32-C3-FH4加4个TMC2209驱动芯片控制4个42步进
    发表于 04-22 17:11

    步进电机也能 FOC?TMC9660ATB+T:没错,两相我也行!

    电机适配门槛极高。但事实并非如此:两相步进电机不仅可以实现FOC控制,通过ADITMC9660ATB+T这款全集成
    的头像 发表于 04-07 15:20 216次阅读
    <b class='flag-5'>步进</b><b class='flag-5'>电机</b>也能 FOC?<b class='flag-5'>TMC</b>9660ATB+T:没错,<b class='flag-5'>两相</b>我也行!

    2A 两相步进驱动选型:静音、省电、高集成,TMC2209-LA 全占了

    不允许。有没有一种驱动芯片,能让电机又安静、又有力、还省电?TMC2209-LA,就是为这个问题而生的。先看硬实力:这颗芯片能做什么参数指标线圈电流(峰值)2.8A
    的头像 发表于 04-02 14:29 158次阅读
    2A <b class='flag-5'>两相</b><b class='flag-5'>步进</b><b class='flag-5'>驱动</b>选型:静音、省电、高集成,<b class='flag-5'>TMC2209</b>-LA 全占了

    TMC262C-LA 两相双极步进电机驱动芯片 10A 大电流 60V 驱动方案!

    262C-LA是一款专注于驱动控制优化的芯片,为两相步进电机带来更细腻的运行表现和更可靠的保护机制。参数速览产品属性参数值产品型号
    的头像 发表于 03-18 13:47 233次阅读
    <b class='flag-5'>TMC</b>262C-LA <b class='flag-5'>两相</b>双极<b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>驱动</b>芯片 10A 大电流 60V <b class='flag-5'>驱动</b>方案!

    瑞盟 MS35779:2.8A两相步进电机驱动芯片!

    科技的一款产品:MS35779。这是一款专为两相步进电机打造的高精度驱动芯片,集细腻的微步控制与灵活的运行模式于一身,让设备在高速与低速下都
    的头像 发表于 03-17 10:59 482次阅读
    瑞盟 MS35779:2.8A<b class='flag-5'>两相</b><b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>驱动</b>芯片!

    国产替代IC vs TMC2209两相步进驱动芯片国产替代选型推荐

    本文将从核心参数对标、关键技术解析、国产替代价值、场景选型大维度阐述一款可替代TMC2209的国产IC的替代边界与技术优势,助力精准选型。
    的头像 发表于 03-06 17:23 3478次阅读
    国产替代IC vs <b class='flag-5'>TMC2209</b>|<b class='flag-5'>两相</b><b class='flag-5'>步进</b><b class='flag-5'>驱动</b>芯片国产替代选型推荐

    拒绝吵到头疼!TMC2208-LA-T步进驱动芯片选型与应用

    、精度与稳定性的实力派——TMC2208-LA-T步进电机驱动芯片,从参数解读到选型技巧,再到多元应用场景,全维度帮你摸清它的核心价值!TMC220
    的头像 发表于 01-13 13:45 478次阅读
    拒绝吵到头疼!<b class='flag-5'>TMC2208</b>-LA-T<b class='flag-5'>步进</b><b class='flag-5'>驱动</b>芯片选型与应用

    TMC2660C步进电机驱动IC:精密控制与高效运行的完美融合

    前言TMC2660C是由Trinamic推出的高集成、智能两相步进电机驱动IC,以“精密控制+低
    的头像 发表于 12-19 18:12 848次阅读
    <b class='flag-5'>TMC</b>2660C<b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>驱动</b>IC:精密<b class='flag-5'>控制</b>与高效运行的完美融合

    3D打印机的完美驱动芯片TMC2208,低成本,高性能,真静音

    3D打印机爱好者和专业用户的选择。TMC2208来自德国汉堡的TRINAMIC公司,这家公司专注于运动控制产品的设计,包括步进和直流无刷系统。TMC22xx系列
    的头像 发表于 12-18 15:18 554次阅读
    3D打印机的完美<b class='flag-5'>驱动</b>芯片<b class='flag-5'>TMC2208</b>,低成本,高性能,真静音

    电机抖动?电流咆哮?TMC2209-LA:不存在的!

    ,它们不仅让设备的精度和稳定性大打折扣,还可能让项目进度条直接“卡死”。TMC2209-LA步进电机驱动芯片凭借其先进的技术特性,为电机
    的头像 发表于 12-10 17:41 1686次阅读
    <b class='flag-5'>电机</b>抖动?电流咆哮?<b class='flag-5'>TMC2209</b>-LA:不存在的!

    常用两相步进电机驱动器参数

    两相步进电机及其驱动器是工业自动化领域的关键组件,其性能参数直接影响设备的定位精度和动态响应。以下从电机本体参数、
    的头像 发表于 11-27 07:41 944次阅读

    基于UART通讯控制TMC2208/2209模块驱动两相四线步进电机

    /2209模块驱动24线步进电机。 一、寄存器说明
    发表于 10-17 11:25

    关于TMC2208TMC2209的区别及基于STM32F103控制TMC2209模块驱动24线步进电机

    本文对TMC2208TMC2209步进电机驱动器对比分析,对比了两款步进
    的头像 发表于 10-09 17:19 2390次阅读
    关于<b class='flag-5'>TMC2208</b>与<b class='flag-5'>TMC2209</b>的区别及基于STM32F103<b class='flag-5'>控制</b><b class='flag-5'>TMC2209</b><b class='flag-5'>模块</b><b class='flag-5'>驱动</b>2<b class='flag-5'>相</b>4<b class='flag-5'>线</b><b class='flag-5'>步进</b><b class='flag-5'>电机</b>

    TMC2209超静音步进驱动IC:“无声”的力量改变生活

    Trinamic的TMC2209超静音两相步进电机驱动器,正在改变这一场景,让科技产品实现“近无声”的运行,为用户带来静谧与高效的双重价值。
    的头像 发表于 09-09 10:10 1918次阅读
    <b class='flag-5'>TMC2209</b>超静音<b class='flag-5'>步进</b><b class='flag-5'>驱动</b>IC:“无声”的力量改变生活

    ADI Trinamic TMC5240x步进电机控制器和驱动器IC

    Adi Trinamic TMC5240x步进电机控制器和驱动器IC配备了串行通信接口(SPI和UART
    的头像 发表于 06-16 10:33 1328次阅读
    ADI Trinamic <b class='flag-5'>TMC</b>5240x<b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>器和<b class='flag-5'>驱动</b>器IC