Управление потоком между устройством ESP32 и RS323
Я пытаюсь связаться с устройством RS232 с ESP32 (Heltec Wifi/LoRa 32 v2) моя проблема заключается в том, что я не получаю никакого ответа от устройства, делая некоторые исследования, я думаю, что проблема может быть управление потоком, потому что я не использую эти контакты и модули, которые я использовал, также не имеют этих контактов. Знаете ли вы способ, по крайней мере, припаять контакты DB9, чтобы иметь своего рода управление потоком для связи устройств?
@user63626, 👍1
Обсуждение1 ответ
Вы можете использовать вызовы ESP-IDF, чтобы правильно настроить UART для аппаратной последовательной связи на выводах 4 и 5 (и, возможно, также на других выводах).
В приведенном ниже примере вам просто нужно:
- назначьте
UART_CLIENT_RTS
иUART_CLIENT_CTS
на нужные вам контакты - измените
uart_config_t
на параметры, соответствующие вашему устройству RS232 - установите
для
параметра
flow_ctrl значение UART_HW_FLOWCTRL_RTS,UART_HW_FLOWCTRL_CTS
,UART_HW_FLOWCTRL_CTS_RTS
илиUART_HW_FLOWCTRL_MAX
#define BUFFER_SIZE 1024
#define UART_CLIENT_TXD (GPIO_NUM_4)
#define UART_CLIENT_RXD (GPIO_NUM_5)
#define UART_CLIENT_RTS (GPIO_NUM_?) // Установите это
#define UART_CLIENT_CTS (GPIO_NUM_?) // Установите это
uart_port_t uartNum = UART_NUM_1;
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_CTS_RTS
};
uart_param_config(uartNum, &uart_config);
uart_set_pin(uartNum, UART_CLIENT_TXD, UART_CLIENT_RXD, UART_CLIENT_RTS, UART_CLIENT_CTS);
uart_driver_install(uartNum, BUFFER_SIZE * 2, 0, 0, NULL, 0);
Связь может осуществляться с помощью различных методов uart_write_*
и uart_read_*
, как определено в документации.
- Связь между двумя ESP32, USART против RS232 с MAX3232
- Последовательная связь между ESP8266 и Arduino Uno
- Контакты RX и TX на esp32
- Ардуино для чтения с преобразователя RS232 в последовательный модуль TTL
- Как связаться с датчиком через порты RX/TX Arduino?
- Как прочитать входящие ШЕСТНАДЦАТИРИЧНОЕ значение из serial метод read ()?
- Программирование Arduino Micro через RX/TX
- Serial Comm. проблема синхронизации между Arduino и Pyserial
С каким устройством вы пытаетесь общаться?, @StarCat
Также: вы используете конвертер TTL->RS232?, @StarCat
На это можно ответить, только взглянув на лист данных "устройства RS232". Вы можете эмулировать управление потоком RTS/CTS, подключив их к двум неиспользуемым выводам GPIO, а затем позаботиться о них в своем собственном коде при отправке данных туда и обратно. Кроме того, реальный интерфейс RS232 взаимодействует на уровнях сигнала между 3 и 15 В, поэтому, если вы не совсем уверены, что "устройство RS232" отвечает на уровне сигнала менее 3,6 В, вам обязательно понадобится переключатель уровней. Лучше использовать специальный экран RS232 для этого-это единственный ответ, который я могу дать из информации в вопросе., @orithena