kopia lustrzana https://github.com/espressif/esp-idf
examples: freemodbus port serial slave move uart mode settings into example
Update freemodbus component file esp-idf/components/freemodbus/port/portserial.c to remove UART mode settings; Move UART mode settings into esp-idf/examples/protocols/modbus_slave/main/freemodbus.c Move UART pin settings from Component config into example Kconfig.projbuild file Move setup of UART port pins from freemodbus component into example file TW#27721 Closes https://github.com/espressif/esp-idf/issues/2784#issuecomment-443600157pull/2869/head
rodzic
d453cce1b3
commit
5379c941b8
|
@ -1,29 +1,5 @@
|
||||||
menu "Modbus configuration"
|
menu "Modbus configuration"
|
||||||
|
|
||||||
config MB_UART_RXD
|
|
||||||
int "UART RXD pin number"
|
|
||||||
range 0 34
|
|
||||||
default 22
|
|
||||||
help
|
|
||||||
GPIO number for UART RX pin. See UART documentation for more information
|
|
||||||
about available pin numbers for UART.
|
|
||||||
|
|
||||||
config MB_UART_TXD
|
|
||||||
int "UART TXD pin number"
|
|
||||||
range 0 34
|
|
||||||
default 23
|
|
||||||
help
|
|
||||||
GPIO number for UART TX pin. See UART documentation for more information
|
|
||||||
about available pin numbers for UART.
|
|
||||||
|
|
||||||
config MB_UART_RTS
|
|
||||||
int "UART RTS pin number"
|
|
||||||
range 0 34
|
|
||||||
default 18
|
|
||||||
help
|
|
||||||
GPIO number for UART RTS pin. This pin is connected to
|
|
||||||
~RE/DE pin of RS485 transceiver to switch direction.
|
|
||||||
|
|
||||||
config MB_QUEUE_LENGTH
|
config MB_QUEUE_LENGTH
|
||||||
int "Modbus serial task queue length"
|
int "Modbus serial task queue length"
|
||||||
range 0 200
|
range 0 200
|
||||||
|
|
|
@ -231,19 +231,11 @@ BOOL xMBPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate,
|
||||||
xErr = uart_param_config(ucUartNumber, &xUartConfig);
|
xErr = uart_param_config(ucUartNumber, &xUartConfig);
|
||||||
MB_PORT_CHECK((xErr == ESP_OK),
|
MB_PORT_CHECK((xErr == ESP_OK),
|
||||||
FALSE, "mb config failure, uart_param_config() returned (0x%x).", (uint32_t)xErr);
|
FALSE, "mb config failure, uart_param_config() returned (0x%x).", (uint32_t)xErr);
|
||||||
// Set UART pin numbers
|
|
||||||
xErr = uart_set_pin(ucUartNumber, MB_UART_TXD, MB_UART_RXD, MB_UART_RTS, UART_PIN_NO_CHANGE);
|
|
||||||
MB_PORT_CHECK((xErr == ESP_OK), FALSE,
|
|
||||||
"mb set pin failure, uart_set_pin() returned (0x%x).", (uint32_t)xErr);
|
|
||||||
// Install UART driver, and get the queue.
|
// Install UART driver, and get the queue.
|
||||||
xErr = uart_driver_install(ucUartNumber, MB_SERIAL_BUF_SIZE, MB_SERIAL_BUF_SIZE,
|
xErr = uart_driver_install(ucUartNumber, MB_SERIAL_BUF_SIZE, MB_SERIAL_BUF_SIZE,
|
||||||
MB_QUEUE_LENGTH, &xMbUartQueue, ESP_INTR_FLAG_LOWMED);
|
MB_QUEUE_LENGTH, &xMbUartQueue, ESP_INTR_FLAG_LOWMED);
|
||||||
MB_PORT_CHECK((xErr == ESP_OK), FALSE,
|
MB_PORT_CHECK((xErr == ESP_OK), FALSE,
|
||||||
"mb serial driver failure, uart_driver_install() returned (0x%x).", (uint32_t)xErr);
|
"mb serial driver failure, uart_driver_install() returned (0x%x).", (uint32_t)xErr);
|
||||||
// Set driver mode to Half Duplex
|
|
||||||
xErr = uart_set_mode(ucUartNumber, UART_MODE_RS485_HALF_DUPLEX);
|
|
||||||
MB_PORT_CHECK((xErr == ESP_OK), FALSE,
|
|
||||||
"mb serial set mode failure, uart_set_mode() returned (0x%x).", (uint32_t)xErr);
|
|
||||||
#ifndef MB_TIMER_PORT_ENABLED
|
#ifndef MB_TIMER_PORT_ENABLED
|
||||||
// Set timeout for TOUT interrupt (T3.5 modbus time)
|
// Set timeout for TOUT interrupt (T3.5 modbus time)
|
||||||
xErr = uart_set_rx_timeout(ucUartNumber, MB_SERIAL_TOUT);
|
xErr = uart_set_rx_timeout(ucUartNumber, MB_SERIAL_TOUT);
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
menu "Modbus Slave Example Configuration"
|
||||||
|
|
||||||
|
config MB_UART_RXD
|
||||||
|
int "UART RXD pin number"
|
||||||
|
range 0 34
|
||||||
|
default 22
|
||||||
|
help
|
||||||
|
GPIO number for UART RX pin. See UART documentation for more information
|
||||||
|
about available pin numbers for UART.
|
||||||
|
|
||||||
|
config MB_UART_TXD
|
||||||
|
int "UART TXD pin number"
|
||||||
|
range 0 34
|
||||||
|
default 23
|
||||||
|
help
|
||||||
|
GPIO number for UART TX pin. See UART documentation for more information
|
||||||
|
about available pin numbers for UART.
|
||||||
|
|
||||||
|
config MB_UART_RTS
|
||||||
|
int "UART RTS pin number"
|
||||||
|
range 0 34
|
||||||
|
default 18
|
||||||
|
help
|
||||||
|
GPIO number for UART RTS pin. This pin is connected to
|
||||||
|
~RE/DE pin of RS485 transceiver to switch direction.
|
||||||
|
|
||||||
|
endmenu
|
|
@ -114,6 +114,14 @@ void app_main()
|
||||||
// Starts of modbus controller and stack
|
// Starts of modbus controller and stack
|
||||||
ESP_ERROR_CHECK(mbcontroller_start());
|
ESP_ERROR_CHECK(mbcontroller_start());
|
||||||
|
|
||||||
|
// Set UART driver mode to Half Duplex
|
||||||
|
ESP_ERROR_CHECK(uart_set_mode(MB_PORT_NUM, UART_MODE_RS485_HALF_DUPLEX));
|
||||||
|
|
||||||
|
// Set UART pin numbers
|
||||||
|
ESP_ERROR_CHECK(uart_set_pin(MB_PORT_NUM, CONFIG_MB_UART_TXD,
|
||||||
|
CONFIG_MB_UART_RXD, CONFIG_MB_UART_RTS,
|
||||||
|
UART_PIN_NO_CHANGE));
|
||||||
|
|
||||||
// The cycle below will be terminated when parameter holdingRegParams.dataChan0
|
// The cycle below will be terminated when parameter holdingRegParams.dataChan0
|
||||||
// incremented each access cycle reaches the CHAN_DATA_MAX_VAL value.
|
// incremented each access cycle reaches the CHAN_DATA_MAX_VAL value.
|
||||||
for(;holding_reg_params.data_chan0 < MB_CHAN_DATA_MAX_VAL;){
|
for(;holding_reg_params.data_chan0 < MB_CHAN_DATA_MAX_VAL;){
|
||||||
|
|
Ładowanie…
Reference in New Issue