我参加了ART-Pi扩展板设计的活动,做了一个TMC5160步进电机驱动的扩展板,并PR了一个TMC5160驱动的库,简要介绍一下这个库的使用。
在RT-Thread Studio中新建一个基于ART-Pi开发板的工程。
添加tmc51xx库。
TMC5160采用SPI接口通讯,配置该端口。
// void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) @ stm32h7xx_hal_msp.c
else if(hspi->Instance==SPI2)
{
/* USER CODE BEGIN SPI2_MspInit 0 /
/ USER CODE END SPI2_MspInit 0 /
/ Peripheral clock enable */
__HAL_RCC_SPI2_CLK_ENABLE();
__HAL_RCC_GPIOI_CLK_ENABLE();
/**SPI2 GPIO Configuration
PI1 ------> SPI2_SCK
PI2 ------> SPI2_MISO
PI3 ------> SPI2_MOSI
/
GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);
/ USER CODE BEGIN SPI2_MspInit 1 /
/ USER CODE END SPI2_MspInit 1 */
}
TMC5160 有3种模式:
SPI口直接配置步进电机的速度或者位置。
SPI口只配置参数,通过 dir和step管脚控制运行。
不使用SPI,直接由管脚配置参数,通过 dir和step管脚控制运行。
本例采用第二种方式。
while(1)
{
rt_thread_mdelay(1);
rt_pin_write(TMC5160_PIN_STEP, PIN_HIGH);
rt_thread_mdelay(1);
rt_pin_write(TMC5160_PIN_STEP, PIN_LOW);
}
注:需要在 rtconfig.h 中加入 #define BSP_USING_SPI2
如何才能在添加库的时候选择使用哪个SPI?而不是手动添加BSP_USING_SPI2。
原作者:apeng2012
更多回帖