总结一下 tmc2209 在 diag 脚输入堵转状态的配置
1. 串口配置
串口波特率会主动适配,最大值最小值和 2209 的外部时钟有关系,大略 9600 到 500k 都能适配,应用半双工通信,发完再收,以 stm32 为例
TMC_uart_write_datagram_t *tmc_uart_read (trinamic_motor_t driver, TMC_uart_read_datagram_t *datagram){memset(read_res.data, 0, 8);
HAL_HalfDuplex_EnableTransmitter(&huart1);
HAL_UART_Transmit(&huart1, datagram->data, 4, MOTO_MTMC2209_SEND_RECV_TIME_OUT);
HAL_HalfDuplex_EnableReceiver(&huart1);
int ret = HAL_UART_Receive(&huart1, read_res.data, 8, MOTO_MTMC2209_SEND_RECV_TIME_OUT);
return &read_res;
}
残缺代码能够参考 tmc2209 库
2. 堵转检测
2209 的堵转只有在有肯定速度时候才会开始检测,必须满足 TCOOLTHRS >= tstep > TPWMTHRS
具体大于多少开始通过堵转检测通过 TCOOLTHRS 来配置的,能够通过 tstop 来配置,tstop 是一个脉冲外部的时钟周期数,能够通过 0x12 读取到,而后将 TCOOLTHRS 间接配置一个比 tstop 大一点的值
TPWMTHRS 是速度太高了是否切换到通知模式,能够设置成 0 不切换