总结一下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不切换
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。