serial port settings fixed
This commit is contained in:
parent
e8e8876686
commit
94af947d1f
|
|
@ -552,7 +552,7 @@ const rest_var_t SystemVariables[] =
|
|||
{ 0, "serial_enab", &SysConfig.serialSettings.Flags.IsSerialEnabled, VAR_BOOL, RW, 0, 1 },
|
||||
{ 0, "serial_bridge", &SysConfig.serialSettings.Flags.IsBridgeEnabled, VAR_BOOL, RW, 0, 1 },
|
||||
{ 0, "serial_mode", &funct_serial_mode, VAR_FUNCT, R, 1, 2 },
|
||||
{ 0, "serial_baud", &SysConfig.serialSettings.BaudRate, VAR_INT, RW, 1200, 4096000 },
|
||||
{ 0, "serial_baud", &SysConfig.serialSettings.BaudRate, VAR_INT, RW, 1200, 8192000 },
|
||||
|
||||
{ 0, "serial_bits", &SysConfig.serialSettings.DataBits, VAR_INT, RW, 0, 3 },
|
||||
{ 0, "serial_parity", &SysConfig.serialSettings.Parity, VAR_INT, RW, 0, 3 },
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@
|
|||
#include "driver/gpio.h"
|
||||
|
||||
#define TAG "serial_port"
|
||||
#define UART_READ_TOUT (100) // 3.5T * 8 = 28 ticks, TOUT=3 -> ~24..33 ticks
|
||||
#define UART_READ_TOUT (80) // 3.5T * 8 = 28 ticks, TOUT=3 -> ~24..33 ticks
|
||||
#define PATTERN_CHR_NUM (3) /*!< Set the number of consecutive and identical characters received by receiver which defines a UART pattern*/
|
||||
|
||||
#define UART_TX_QUEUE_SIZE (5)
|
||||
|
|
@ -119,7 +119,6 @@ void serial_RX_task(void *arg)
|
|||
case UART_DATA:
|
||||
if (event.timeout_flag)
|
||||
{
|
||||
|
||||
bzero(rxbuf, CONFIG_WEBGUIAPP_UART_BUF_SIZE);
|
||||
uart_get_buffered_data_len(CONFIG_WEBGUIAPP_UART_PORT_NUM, (size_t *)&buffered_size);
|
||||
if (buffered_size)
|
||||
|
|
@ -136,7 +135,6 @@ void serial_RX_task(void *arg)
|
|||
}
|
||||
else
|
||||
ReceiveHandlerAPI();
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -218,8 +216,7 @@ void static serial_TX_task(void *arg)
|
|||
while (1)
|
||||
{
|
||||
xQueueReceive(UARTtxQueueHandle, &DSS, portMAX_DELAY);
|
||||
if (uart_write_bytes(CONFIG_WEBGUIAPP_UART_PORT_NUM, DSS.raw_data_ptr, DSS.data_length)
|
||||
!= DSS.data_length)
|
||||
if (uart_write_bytes(CONFIG_WEBGUIAPP_UART_PORT_NUM, DSS.raw_data_ptr, DSS.data_length) != DSS.data_length)
|
||||
ESP_LOGE(TAG, "RS485 write data failure");
|
||||
free(DSS.raw_data_ptr);
|
||||
if (uart_wait_tx_done(CONFIG_WEBGUIAPP_UART_PORT_NUM, pdMS_TO_TICKS(1000)) != ESP_OK)
|
||||
|
|
@ -239,42 +236,77 @@ void InitSerialPort(void)
|
|||
};
|
||||
|
||||
//uart_config.data_bits = (uint8_t)GetSysConf()->serialSettings.DataBits;
|
||||
//uart_config.parity = (uint8_t) GetSysConf()->serialSettings.Parity;
|
||||
|
||||
switch (GetSysConf()->serialSettings.DataBits)
|
||||
{
|
||||
case 0:
|
||||
uart_config.data_bits = UART_DATA_5_BITS;
|
||||
break;
|
||||
case 1:
|
||||
uart_config.data_bits = UART_DATA_6_BITS;
|
||||
break;
|
||||
case 2:
|
||||
uart_config.data_bits = UART_DATA_7_BITS;
|
||||
break;
|
||||
case 3:
|
||||
uart_config.data_bits = UART_DATA_8_BITS;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
switch (GetSysConf()->serialSettings.Parity)
|
||||
{
|
||||
case 0:
|
||||
uart_config.parity = UART_PARITY_DISABLE;
|
||||
break;
|
||||
case 2:
|
||||
uart_config.parity = UART_PARITY_EVEN;
|
||||
break;
|
||||
case 3:
|
||||
uart_config.parity = UART_PARITY_ODD;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
switch (GetSysConf()->serialSettings.StopBits)
|
||||
{
|
||||
case 1:
|
||||
uart_config.stop_bits = UART_STOP_BITS_1;
|
||||
break;
|
||||
case 2:
|
||||
uart_config.stop_bits = UART_STOP_BITS_1_5;
|
||||
break;
|
||||
case 3:
|
||||
uart_config.stop_bits = UART_STOP_BITS_2;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
// uart_config.stop_bits = (uint8_t) GetSysConf()->serialSettings.StopBits;
|
||||
|
||||
ESP_LOGI(TAG, "UART data_bits:%d parity:%d stop_bits:%d",
|
||||
GetSysConf()->serialSettings.DataBits,
|
||||
GetSysConf()->serialSettings.Parity,
|
||||
GetSysConf()->serialSettings.StopBits);
|
||||
ESP_LOGI(TAG, "UART data_bits:%d parity:%d stop_bits:%d", GetSysConf()->serialSettings.DataBits, GetSysConf()->serialSettings.Parity, GetSysConf()->serialSettings.StopBits);
|
||||
|
||||
ESP_ERROR_CHECK(
|
||||
uart_driver_install(CONFIG_WEBGUIAPP_UART_PORT_NUM, CONFIG_WEBGUIAPP_UART_BUF_SIZE * 2, 0, 20, &uart_event_queue, 0));
|
||||
ESP_ERROR_CHECK(uart_param_config(CONFIG_WEBGUIAPP_UART_PORT_NUM, &uart_config));
|
||||
ESP_ERROR_CHECK(uart_set_pin(CONFIG_WEBGUIAPP_UART_PORT_NUM,
|
||||
CONFIG_WEBGUIAPP_UART_TXD, CONFIG_WEBGUIAPP_UART_RXD, CONFIG_WEBGUIAPP_UART_RTS, -1));
|
||||
ESP_ERROR_CHECK_WITHOUT_ABORT(uart_driver_install(CONFIG_WEBGUIAPP_UART_PORT_NUM, CONFIG_WEBGUIAPP_UART_BUF_SIZE * 2, 0, 20, &uart_event_queue, 0));
|
||||
ESP_ERROR_CHECK_WITHOUT_ABORT(uart_param_config(CONFIG_WEBGUIAPP_UART_PORT_NUM, &uart_config));
|
||||
ESP_ERROR_CHECK_WITHOUT_ABORT(uart_set_pin(CONFIG_WEBGUIAPP_UART_PORT_NUM, CONFIG_WEBGUIAPP_UART_TXD, CONFIG_WEBGUIAPP_UART_RXD, CONFIG_WEBGUIAPP_UART_RTS, -1));
|
||||
|
||||
#ifdef CONFIG_WEBGUIAPP_UART_MODE_UART
|
||||
ESP_ERROR_CHECK(uart_set_mode(CONFIG_WEBGUIAPP_UART_PORT_NUM, UART_MODE_UART));
|
||||
ESP_ERROR_CHECK_WITHOUT_ABORT(uart_set_mode(CONFIG_WEBGUIAPP_UART_PORT_NUM, UART_MODE_UART));
|
||||
#elif CONFIG_WEBGUIAPP_UART_MODE_RS485
|
||||
ESP_ERROR_CHECK(uart_set_mode(CONFIG_WEBGUIAPP_UART_PORT_NUM, UART_MODE_RS485_HALF_DUPLEX));
|
||||
ESP_ERROR_CHECK_WITHOUT_ABORT(uart_set_mode(CONFIG_WEBGUIAPP_UART_PORT_NUM, UART_MODE_RS485_HALF_DUPLEX));
|
||||
#endif
|
||||
|
||||
ESP_ERROR_CHECK(uart_enable_rx_intr(CONFIG_WEBGUIAPP_UART_PORT_NUM));
|
||||
ESP_ERROR_CHECK(uart_set_rx_timeout(CONFIG_WEBGUIAPP_UART_PORT_NUM, UART_READ_TOUT));
|
||||
//ESP_ERROR_CHECK(uart_enable_pattern_det_baud_intr(CONFIG_UART_PORT_NUM, '+', PATTERN_CHR_NUM, 9, 0, 0));
|
||||
ESP_ERROR_CHECK_WITHOUT_ABORT(uart_enable_rx_intr(CONFIG_WEBGUIAPP_UART_PORT_NUM));
|
||||
ESP_ERROR_CHECK_WITHOUT_ABORT(uart_set_rx_timeout(CONFIG_WEBGUIAPP_UART_PORT_NUM, UART_READ_TOUT));
|
||||
// ESP_ERROR_CHECK_WITHOUT_ABORT(uart_enable_pattern_det_baud_intr(CONFIG_UART_PORT_NUM, '+', PATTERN_CHR_NUM, 9, 0, 0));
|
||||
uart_pattern_queue_reset(CONFIG_WEBGUIAPP_UART_PORT_NUM, 20);
|
||||
|
||||
UARTtxQueueHandle = NULL;
|
||||
UARTtxQueueHandle = xQueueCreateStatic(UART_TX_QUEUE_SIZE,
|
||||
sizeof(UART_DATA_SEND_STRUCT),
|
||||
UARTtxQueueStorageArea,
|
||||
&xStaticUARTtxQueue);
|
||||
UARTtxQueueHandle = xQueueCreateStatic(UART_TX_QUEUE_SIZE, sizeof(UART_DATA_SEND_STRUCT), UARTtxQueueStorageArea, &xStaticUARTtxQueue);
|
||||
|
||||
xTaskCreate(serial_TX_task, "serial_tx", 1024 * 2, (void *)0, 7, NULL);
|
||||
xTaskCreate(serial_RX_task, "serial_rx", 1024 * 4, (void *)0, 12, NULL);
|
||||
ESP_LOGI(TAG, "Serial port initialized on UART%d with baudrate %d", CONFIG_WEBGUIAPP_UART_PORT_NUM,
|
||||
GetSysConf()->serialSettings.BaudRate);
|
||||
ESP_LOGI(TAG, "Serial port initialized on UART%d with baudrate %d", CONFIG_WEBGUIAPP_UART_PORT_NUM, GetSysConf()->serialSettings.BaudRate);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user