Unable to get UART2 working.

dezire
Posts: 1
Joined: Fri Nov 29, 2024 5:10 am

Unable to get UART2 working.

Postby dezire » Fri Nov 29, 2024 5:20 am

I am working with Simcomm A7672s which communicates over UART.
This code works in arduino IDF but when I tried to convert it to ESP-IDF I can't get the code working. I am extreamly new to microcontrollers and the low lever stuff. Any help is deeply appriciated.

Code: Select all

void setup() {
  Serial.begin(115200); // Initialize Serial Monitor
  Serial2.begin(115200, SERIAL_8N1, 17, 16); // Initialize hardware Serial for ESP32 communication
  Serial.setTimeout(1000); // Set a timeout for Serial input
}

void loop() {
  // Check if any data is available on Serial Monitor
  if (Serial.available() > 0) {
    // Read the input from Serial Monitor
    char input = Serial.read();
    // Check if the input is 'S'
    if (input) {
      Serial2.println(input);
      // Wait for ESP32 to respond
      delay(1000); // Adjust delay according to response time
      // Print the response from ESP32 to Serial Monitor
      waitForResponse();

    }
  }
}

void waitForResponse() {
  // Wait for response from ESP32
  unsigned long timeout = millis() + 10000; // Timeout after 10 seconds
  while (!Serial2.available() && millis() < timeout) {
    // Wait for data to be available or timeout
  }
  // Print the response from ESP32 to Serial Monitor
  while (Serial2.available()) {
    Serial.write(Serial2.read());
  }
}
Here is the code I wrote in ESP-IDF.

Code: Select all

#include "driver/uart.h"
#include "esp_log.h"
#include "freertos/FreeRTOS.h"
#include "freertos/queue.h"
#include "freertos/task.h"
#include "portmacro.h"
#include "soc/clk_tree_defs.h"
#include <stdio.h>
#include <string.h>
static const char *TAG = "status";

#define UART_NUM UART_NUM_2
#define BUF_SIZE (2048)

void app_main(void) {
  esp_log_level_set(TAG, ESP_LOG_INFO);

  /* Configure parameters of an UART driver,
   * communication pins and install the driver */
  uart_config_t uart_config = {
      .baud_rate = 115200,
      .data_bits = UART_DATA_8_BITS,
      .parity = UART_PARITY_DISABLE,
      .stop_bits = UART_STOP_BITS_1,
      .flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
      .source_clk = UART_SCLK_APB
  };
  ESP_ERROR_CHECK(
      uart_set_pin(UART_NUM, 17, 16, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE));
  uart_param_config(UART_NUM, &uart_config);
  ESP_ERROR_CHECK(uart_driver_install(UART_NUM, BUF_SIZE, 0, 0, NULL, 0));
  char data[128];
  int length = 0;
  while (1) {
    vTaskDelay(3000 / portTICK_PERIOD_MS);
    uart_write_bytes(UART_NUM, "AT", strlen("AT"));
    ESP_ERROR_CHECK(uart_get_buffered_data_len(UART_NUM, (size_t *)&length));
    ESP_LOGI(TAG, "Length: %d", length);
    if (length > 0) {
      uart_read_bytes(UART_NUM, data, length, 5000 / portTICK_PERIOD_MS);
      data[length] = '\0';
      ESP_LOGI(TAG, "Data: %s", data);
    }
  }
}

Who is online

Users browsing this forum: Baidu [Spider], Bing [Bot], Google [Bot] and 60 guests