移植Trinamic API 到STM32,可以和TMC-IDE通信(TMC5160,TMC5130)

1. 硬件环境

  1. STM32开发板STM32F030C8Tx(淘宝比较多的开发板),我随便买了一个,Debug工具STlink-V2,也不贵。
  2. TMC5160BOB

     

2. 软件环境

  1. IDE 工具 Visual Studio + GDB
  2. STM32CubeMX
     

3. 代码准备

  1.    STM32 逻辑控制工程(官网Git Hub可下载ADI Trinamic · GitHub),如果打不开,我上传了之前下载的一份,版本可能会比较老,不过移植步骤是一样的。我目前也打不开Github了,尴尬,csdn下载地址【免费】TrinamicEvalSystemcodes资源-CSDN文库
  2. Trinamic API(官网Git Hub可下载,上面连接中包含该API)
  3. 使用STM32CubeMx生成控制底层控制代码,主要是SPI的配置,系统和始终根据开发板晶振设置即可。

  4. 怎么使用Visual Studio + VisualGDB搭建开发环境,可以参考另外一篇文章
    Visual Studio+VisualGDb

4. 开始移植

     Visual Studio + VisualGDB加载好STM32工程后,将所需的控制工程EvalSystemcodes所用文件代码加入工程中,不需要的代码可以删除掉,最主要的就是把底层控制SPI的接口,替换成当前STM32中的SPI控制接口。

  4.1 本例使用是TM5130的控制代码,和TM5160基本可以通用,只有个别寄存器有差别,主要是把这个寄存器读写接口换成自己的spi读写。

void tmc5130_readWriteArray(uint8_t channel, uint8_t *data, uint32_t length)
{
	
	for (uint32_t i = 0; i < length; i++)
	{
		data[i] = spiReadWriteByte(channel, data[i], (i == (length - 1)) ? 1 : 0);
	}
}

4.2 本例中STM32的SPI读写函数如下,spi配置见上面第三章。

uint8_t spiReadWriteByte(uint8_t channel, uint8_t data, uint8_t lastTransfer)
{
	uint8_t retry = 0;
	if (channel == 0)
	{
		LL_GPIO_ResetOutputPin(SPI1_CS_Motor_GPIO_Port, SPI1_CS_Motor_Pin);
		LL_GPIO_SetOutputPin(SPI1_CS2_Motor_GPIO_Port, SPI1_CS2_Motor_Pin);
	}
	else
	{
		LL_GPIO_SetOutputPin(SPI1_CS_Motor_GPIO_Port, SPI1_CS_Motor_Pin);
		LL_GPIO_ResetOutputPin(SPI1_CS2_Motor_GPIO_Port, SPI1_CS2_Motor_Pin);
	}
	
	if (!LL_SPI_IsEnabled(SPI1))
		return 0;
		
	while (!LL_SPI_IsActiveFlag_TXE(SPI1)) 
	{
		retry++;
		if (retry > 200)return 0;	
	}
	//LL_SPI_SetTransferDirection()
	LL_SPI_TransmitData8(SPI1, data); 	
	
	retry = 0;
	while (LL_SPI_IsActiveFlag_BSY(SPI1))
	{
		retry++;
		if (retry > 200)return 0;
	}
	
	retry = 0;
	while (!LL_SPI_IsActiveFlag_RXNE(SPI1))
	{
		retry++;
		if (retry > 200)return 0;
	}
	
	if (lastTransfer)
	{
		LL_GPIO_SetOutputPin(SPI1_CS_Motor_GPIO_Port, SPI1_CS_Motor_Pin);
		LL_GPIO_SetOutputPin(SPI1_CS2_Motor_GPIO_Port, SPI1_CS2_Motor_Pin);
	}
		
	return LL_SPI_ReceiveData8(SPI1);
}

5. 注意事项

5.1该工程移植,主要使用逻辑控制,主要是和上位机通信部分的选择,我选的的UART 通信,控制部分,我使用的代码结构如下:

5.2芯片控制模块,该模块主要是TMC AP代码,根据自己选用的芯片选择就好,本例选用的TM5130来移植。

5.3除了,底层控制代码,其他编译不过的都可以先注释掉,随着控制接口以及芯片手册的熟悉,可以根据需求再逐步加进来。

### 如何在TMCL-IDE中设置配置TMC2226步进电机驱动器 #### 使用TMCL-IDE进行初始设置 安装并打开TMCL-IDE软件后,通过USB线缆将计算机与目标硬件(如集成有TMC2226的开发板)相连。确认设备被正确识别,在TMCL-IDE界面上应该能够看到已连接的目标装置列表。 #### 配置基本参数 进入“Command”选项卡输入特定于TMC2226的TMCL命令来调整必要的操作参数。虽然具体到TMC2226的数据未直接提及[^1],但是可以根据相似型号的经验来进行合理推测。对于大多数Trinamic驱动器而言,常见的初始化配置包括但不限于: - **设定电流限值**:利用`IHOLD_IRUN`寄存器定义保持电流(IHOLD) 运行电流(IRUN),这有助于保护电机免受过热损害。 - **微步步距细分**:借助`MSCNT` 或者 `CHOPCONF` 寄存器中的相应位域指定每全步内的细分数目,从而实现更平滑的位置控制。 ```tmcl set axis parameter 0x10 100 ; 设置 IHOLD_IRUN 参数为例程展示 (实际数值需依据应用需求确定) ``` #### 测试运动性能 完成上述基础配置之后,可以通过发送简单的移动指令测试电机响应情况。例如采用绝对位置定位(`MoveTo`)或相对距离前进(`MoveBy`)的方式验证是否按照预期工作。 #### 数据监控与优化 利用TMCL-IDE内置图表工具观察实时反馈曲线,比如速度、加速度变化趋势等;必要时进一步精细化调节内部算法系数以达到最佳动态表现。 尽管这里主要基于其他系列产品的描述进行了概括说明[^4],针对TMC2226的具体细节可能有所差异,请参照官方文档获取最准确指导信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值