串口配置TMC2209电机驱动模块

串口配置TMC2209电机驱动模块

本文主要记录TMC2209调试过程,通过串口助手配置TMC2209的寄存器实现转速,方向,细分数等寄存器设置。
1.首先要实现uart配置TMC2209寄存器就要先知道串口发送数据的格式和接收数据的格式。
在这里插入图片描述
在这里插入图片描述
写数据和读数据格式按照上图格式配置即可。
CRC采用CRC_8校验,相关校验代码如下
在这里插入图片描述
TMC2209串口采用单线连接,串口连接方式如下
在这里插入图片描述
电机控制方向和细分模式选择(外部细分和内部细分)位都在通用寄存器中。
在这里插入图片描述
可见第三位是配置电机方向的,第七位是配置电机细分模式的,这里我们选择内部细分,因为内部细分比外部细分选择细分数更多。
在这里插入图片描述
只需发送上述指令就配置了电机方向与内部细分模式的打开,配置为0x89,0x81.(记得后面一定要加上CRC_8校验位)
在这里插入图片描述
1.为写入配置通用寄存器配置方向和内部细分模式。
2.为读取通用寄存器指令
3.为读取返回来的信息
(记得串口要关闭发送新行,否则会失败)
采用上述方法依次可以配置内部速度寄存器,细分个数,观测电流值等高级设置
在这里插入图片描述
内部速度寄存器
在这里插入图片描述
配置MERS细分个数寄存器,需要打开内部细分模式后配置。
更多详细的配置大家可以看数据手册。
在linux平台上写操作可以参考如下代码

//uart写操作
void UART_writeInt(unsigned char address, unsigned int value)
{
	char writeData[8];

	writeData[0] = 0x05;                         // Sync byte
	writeData[1] = 0x00;                        // Slave address
	writeData[2] = address | 0x80;      // Register address with write bit set
	writeData[3] = value >> 24;                  // Register Data
	writeData[4] = value >> 16;                  // Register Data
	writeData[5] = value >> 8;                   // Register Data
	writeData[6] = value & 0xFF;                 // Register Data
	writeData[7] = Calc_CRC8(writeData, 7);    // Cyclic redundancy check

	//printf("CRC=%x\n",writeData[7]);
	//serialFlush (fd);                  //清空缓冲区
	write(fd,writeData,8);
}

版权声明:本文为CSDN博主「你真的好烦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42138944/article/details/122079622

生成海报
点赞 0

你真的好烦

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

[STM32学习]——一文搞懂I2C总线

目录 I2C总线的概念 I2C最重要的功能包括: I2C的物理层 I2C主要特点: I2C的高阻态 I2C物理层总结: I2C的协议层 初始(空闲)状态 开始

串口之间的文件传输

一、实验目的 将两台笔记本电脑,借助 usb转rs232 模块和杜邦线,建立起串口连接。然后用串口助手等工具软件(带文件传输功能)将一台笔记本上的一个大文件(图片、视频和压