总结一下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不切换


o_ra
6 声望4 粉丝

记录工作中碰到的问题