关于rust:tmc2209堵转的问题

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理