Как проверить, распознает ли Quectel M66 мою команду, отправленную через UART из STM32? - PullRequest
0 голосов
/ 09 мая 2019

Я использую плату 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 ]

0 голосов
/ 10 мая 2019

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

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

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

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

0 голосов
/ 09 мая 2019

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

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

...