无法使用STM32 G431RB运行剑齿虎2X32,通信问题



我在使用sabertooth 2x32驱动电机时遇到了麻烦。

我在G431rb和Sabertooth 2x32之间使用Arduino。一切都很好,但不稳定。我决定删除Arduino,但无法处理Sabertooh 2x32和G431rb之间的通信。

我检查了信号从Hercules dekstop应用程序上的arduino到驱动程序。我试图用USART发送这些,但我没有得到任何响应。

uint8_t openRightSS[5] = {0x31, 0x32, 0x30, 0x0D, 0x0A};
// i got these hex numbers from hercules, when they sent to motor driver, motor driver works
HAL_UART_Transmit(&huart3, openRightSS,5,100);

我有一些来自Dimension Engineering(用于Sabertooth 2x32分组串行通信)网站的资源。有一些关于CRC和校验和的信息,但是我也不能实现它们。

我发现的最后一件事是用不同的方式发送数据(?)

void driveForwardMotor1(uint8_t address, uint8_t speed)
{
HAL_UART_Transmit(&huart3, address, strlen(address), 1000);
HAL_UART_Transmit(&huart3, 0, 1, 1000);
HAL_UART_Transmit(&huart3, speed, strlen(speed), 1000);
HAL_UART_Transmit(&huart3, ((address + 0 + speed) & (0b01111111)), strlen((address + 0 + speed) & (0b01111111)), 1000);
}
void driveBackwardMotor1(uint8_t address, uint8_t speed)
{
HAL_UART_Transmit(&huart3, address, strlen(address), 1000);
HAL_UART_Transmit(&huart3, 1, 1, 1000);
HAL_UART_Transmit(&huart3, speed, strlen(speed), 1000);
HAL_UART_Transmit(&huart3, ((address + 1 + speed) & (0b01111111)), strlen((address + 1 + speed) & (0b01111111)), 1000);
}
void driveForwardMotor2(uint8_t address, uint8_t speed)
{
HAL_UART_Transmit(&huart3, address, strlen(address), 1000);
HAL_UART_Transmit(&huart3, 4, 1, 1000);
HAL_UART_Transmit(&huart3, speed, strlen(speed), 1000);
HAL_UART_Transmit(&huart3, ((address + 4 + speed) & (0b01111111)), strlen((address + 4 + speed) & (0b01111111)), 1000);
}
void driveBackwardMotor2(uint8_t address, uint8_t speed)
{
HAL_UART_Transmit(&huart3, address, strlen(address), 1000);
HAL_UART_Transmit(&huart3, 5, 1, 1000);
HAL_UART_Transmit(&huart3, speed, strlen(speed), 1000);
HAL_UART_Transmit(&huart3, ((address + 5 + speed) & (0b01111111)), strlen((address + 5 + speed) & (0b01111111)), 1000);
}

已解决。我从hercules收到的数据不工作(不知道为什么)。我试着看看arduino通过另一个arduino发送给剑齿虎板的内容。它们是不同的十六进制数据数组,我用这个代码尝试了它们,它工作了uint8_t forward[4] = {0x80, 0x00, 0x78, 0x78}; while(counter<3 { HAL_UART_Transmit(&huart3, forward, strlen(forward), 100); counter++; }

最新更新