文章目录[隐藏]
串口配置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
暂无评论