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寄存器配置表。

六、效果展示

审核编辑 黄宇

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

    关注

    152

    文章

    3216

    浏览量

    151535
  • uart
    +关注

    关注

    22

    文章

    1304

    浏览量

    106076
  • 通讯控制
    +关注

    关注

    0

    文章

    8

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    有人能做步进电机驱动板吗

    研制一块PCBA。同时驱动个24线步进电机电机
    发表于 11-25 12:50

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

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

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

    本文对TMC2208TMC2209步进电机驱动器对比分析,对比了两款步进
    的头像 发表于 10-09 17:19 805次阅读
    关于<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 1056次阅读
    <b class='flag-5'>TMC2209</b>超静音<b class='flag-5'>步进</b><b class='flag-5'>驱动</b>IC:“无声”的力量改变生活

    ADI Trinamic TMC2240智能集成步进驱动器数据手册

    Analog Devices TMC2240智能集成步进驱动器是一款高性能步进电机驱动芯片,具有
    的头像 发表于 06-17 10:24 1137次阅读
    ADI Trinamic <b class='flag-5'>TMC</b>2240智能集成<b class='flag-5'>步进</b><b class='flag-5'>驱动</b>器数据手册

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

    Adi Trinamic TMC5240x步进电机控制器和驱动器IC配备了串行通信接口(SPI和UART
    的头像 发表于 06-16 10:33 807次阅读
    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

    ADI Trinamic TMC5272步进电机控制器数据手册

    ADI Trinamic TMC5272步进电机控制器是一款 高性能双轴步进控制器和
    的头像 发表于 06-14 09:36 709次阅读
    ADI Trinamic <b class='flag-5'>TMC</b>5272<b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>器数据手册

    ADI Trinamic TMC5271步进电机控制器数据手册

    ADI Trinamic TMC5271步进电机控制器是一款 高性能、单轴步进控制器和
    的头像 发表于 06-14 09:29 719次阅读
    ADI Trinamic <b class='flag-5'>TMC</b>5271<b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>器数据手册

    ADI Trinamic TMC2210大电流步进电机驱动器IC数据手册

    Analog Devices Inc.的TMC2210步进电机驱动器IC通过封装引脚和附加诊断输出提供配置选项。TMC2210集成了基于25
    的头像 发表于 06-04 10:42 799次阅读
    ADI Trinamic <b class='flag-5'>TMC</b>2210大电流<b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>驱动</b>器IC数据手册

    自制怠速步进电机测试器

    双相四线(或者六线)的步进电机。也就是 说,我们制作一个可以单独控制怠速步进
    发表于 03-21 13:32

    线和三四线的区别

    在电力系统中,三线和三四线种常见的供电方式,它们各自具有独特的特点和应用场景。本文将从基本结构、电压特性、应用领域、优缺点以及保护
    的头像 发表于 03-16 17:59 4837次阅读
    三<b class='flag-5'>相</b>三<b class='flag-5'>线</b>和三<b class='flag-5'>相</b><b class='flag-5'>四线</b>的区别

    步进电机—4线,6线,8线电机怎么接线

    正确连接步进电机,实现精准控制。 一、4线步进电机接线方法
    的头像 发表于 02-26 09:08 1.2w次阅读
    <b class='flag-5'>步进</b><b class='flag-5'>电机</b>—4<b class='flag-5'>线</b>,6<b class='flag-5'>线</b>,8<b class='flag-5'>线</b>的<b class='flag-5'>电机</b>怎么接线

    浅谈瑞盟科技·MS32007——低压 5V 多通道电机驱动

    MS32007 是一款多通道电机驱动芯片,其中包含步进电机驱动,一路直流
    的头像 发表于 12-24 14:44 1979次阅读
    浅谈瑞盟科技·MS32007——低压 5V 多通道<b class='flag-5'>电机</b><b class='flag-5'>驱动</b>器

    基于STM32F405RGT6的TMC2660步进电机驱动器,附带原理图+PCB

    驱动电路主要包括以下部分,信号接口电路,逻辑控制电路,功率开关电路,保护电路。TMC2660是步进电机
    的头像 发表于 12-14 19:24 3467次阅读
    基于STM32F405RGT6的<b class='flag-5'>TMC</b>2660<b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>驱动</b>器,附带原理图+PCB