串口配置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);
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐