Как проверить, распознает ли Quectel M66 мою команду, отправленную через UART из STM32?

Я использую плату STM32F103C8 и CubeMX для создания кода. Я подключил M66 к STM32 к порту UART2. Я пытаюсь отправить некоторые команды в Quectel M66 через порт UART STM32. Он получает команду, но выбрасывает ненужные символы. Я установил скорость передачи 9600 для всех портов UART. Это мой код

void M66_Check()
{
  char *buffer = "ATI\r\n";
    char *rec_buffer = NULL;
    rec_buffer = (char*)malloc(200 * sizeof(char));
    if(HAL_UART_Transmit(&huart2,buffer,strlen(buffer),200) == HAL_OK)
    {
        printf("AT Command sent successfully\r\n");
        HAL_Delay(1000);
    }
    else
    {
        printf("Not Sent\r\n");
    }
    HAL_UART_Receive(&huart2,rec_buffer,50,200);

    printf("About to print Response from M66 \r\n");
    HAL_Delay(2000);

    printf(rec_buffer);

}

Это то, что я получаю... Результат в шпатлевке Любая помощь будет принята с благодарностью

2 ответа

Есть единственный способ - прочитать ответ и разобрать его. Тогда вы узнаете, была ли команда выполнена нормально.

Но ваш ответ показывает, что ваш UART работает с другой скоростью (9600), чем модем. Если вы ничего не меняли, это должно быть 115200, так как это скорость UART модема по умолчанию

Я обнаружил проблему... Мне нужно было передавать и получать в этих форматах.... Я пропустил те (uint8_t *). Для передачи - HAL_UART_Transmit(&huart2, (uint8_t *) буфер, strlen (буфер), 100);

Получить - HAL_UART_Receive(&huart2, (uint8_t *)rec_buffer,50,2000);

Теперь нет проблем, и я получаю ответ правильно.

Спасибо за вашу помощь...

Другие вопросы по тегам