Как проверить, распознает ли 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);
Теперь нет проблем, и я получаю ответ правильно.
Спасибо за вашу помощь...