mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'feature/freemodbus_move_rs485_mode_control_v3.2' into 'release/v3.2'
examples: freemodbus port serial slave move uart mode settings into example (backport v3.2) See merge request idf/esp-idf!4015
This commit is contained in:
commit
155f034b1e
@ -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);
|
||||||
|
27
examples/protocols/modbus_slave/main/Kconfig.projbuild
Normal file
27
examples/protocols/modbus_slave/main/Kconfig.projbuild
Normal file
@ -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;){
|
||||||
|
Loading…
x
Reference in New Issue
Block a user