You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32F103读取TMC2226寄存器异常问题求助

TMC2226寄存器读取异常问题排查

我根据TMC2226数据手册,已通过STM32的UART4正常实现寄存器写入操作,对应的写寄存器代码及CRC校验代码如下:

void MOTOR_Send_Command(const uint8_t *Data, uint8_t RegAddr) {
    //[0:7]  sync + reserved = 0xA0
    //[8:15] 8 bit node address = 0
    //[16:23]RW+7 bit register addr   W = 1; R = 0
    //[24:55]32 bit data
    //[56:63]CRC
    uint8_t datagram[8] = {0x05, 0x00};
    datagram[2] = RegAddr | 0x80;
    for (int i = 3, j = 0; i < 7; ++i, ++j) {
        datagram[i] = Data[j];
    }
    swuart_calcCRC(datagram, 8);
    HAL_UART_Transmit(&huart4, datagram, 8, 0xFF);
}
void swuart_calcCRC(uint8_t *datagram, uint8_t datagramLength) {
    int i, j;
    uint8_t *crc = datagram + (datagramLength - 1);//在数据的最后开辟一个位
    uint8_t currentByte;

    *crc = 0;

    for (i = 0; i < (datagramLength - 1); i++) {      // Execute for all bytes of a message
        currentByte = datagram[i];                    // Retrieve a byte to be sent from Array
        for (j = 0; j < 8; j++) {
            if ((*crc >> 7) ^ (currentByte & 0x01))   // update CRC based result of XOR operation
            {
                *crc = (*crc << 1) ^ 0x07;
            } else {
                *crc = (*crc << 1);
            }
            currentByte = currentByte >> 1;
        } // for CRC bit
    } // for message byte
}

但读取TMC2226寄存器时遇到问题:仅能读取第一个字节,其余字节无法获取,读寄存器代码如下:

void MOTOR_ReadRegister(uint8_t *data, uint8_t RegAddr) {
    uint8_t datagram[4] = {0x05, 0x00};

    datagram[2] = RegAddr & 0x7F;
    swuart_calcCRC(datagram, 4);
    HAL_UART_Transmit(&huart4, datagram, 4, 0xFF);

    HAL_UART_Receive(&huart4, data, 8, 0xFF);
}

使用串口助手读取到的结果始终为:05 00 00 00 00 00 00 00。

我已尝试以下操作,但均未解决问题:

  • 将代码中datagram[2] = RegAddr & 0x7F;修改为datagram[2] = RegAddr & 0xEF;
  • 通过串口修改SENDDELAY寄存器

读写操作的数据结构示意图:

  • 写操作数据报结构:Write Access Datagram Structure
  • 读操作数据报结构:Read Access Datagram Structure
  • 读操作回复数据报结构:Read Access REPLY DATAGRAM STRUCTURE

请问该问题是与UART4的读取方式有关,还是TMC2226的设置存在错误?恳请提供建议或见解。


内容的提问来源于stack exchange,提问作者Heisenberg Martinez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:03:38