boards: opta: RS485 support
This set of changes enables the RS485 hardware connected to usart3 and
provides some overlays that allow for easily running the modbus
rtu_client and rtu_server samples on Opta.
Signed-off-by: Federico Di Gregorio <fog@dndg.it>
diff --git a/boards/arduino/opta/arduino_opta-common.dtsi b/boards/arduino/opta/arduino_opta-common.dtsi
index add572d..580688e 100644
--- a/boards/arduino/opta/arduino_opta-common.dtsi
+++ b/boards/arduino/opta/arduino_opta-common.dtsi
@@ -91,3 +91,15 @@
&rng {
status = "okay";
};
+
+&usart3 {
+ pinctrl-0 = <&usart3_tx_pb10 &usart3_rx_pb11 &usart3_cts_pb13 &usart3_de_pb14>;
+ pinctrl-names = "default";
+ current-speed = <115200>;
+ /* The RS485 is often used with the ModBus protocol. */
+ modbus0 {
+ compatible = "zephyr,modbus-serial";
+ de-gpios = <&gpiob 14 GPIO_ACTIVE_HIGH>;
+ re-gpios = <&gpiob 13 GPIO_ACTIVE_LOW>;
+ };
+};
diff --git a/boards/arduino/opta/doc/index.rst b/boards/arduino/opta/doc/index.rst
index 01badd3..8c6aa78 100644
--- a/boards/arduino/opta/doc/index.rst
+++ b/boards/arduino/opta/doc/index.rst
@@ -67,6 +67,8 @@
+-----------+------------+-------------------------------------+
| ETHERNET | on-board | eth |
+-----------+------------+-------------------------------------+
+| RS485 | on-board | uart |
++-----------+------------+-------------------------------------+
The ``arduino_opta/stm32h747xx/m4`` board target
supports the following hardware features:
diff --git a/samples/subsys/modbus/rtu_client/boards/arduino_opta_stm32h747xx_m7.overlay b/samples/subsys/modbus/rtu_client/boards/arduino_opta_stm32h747xx_m7.overlay
new file mode 100644
index 0000000..1838da4
--- /dev/null
+++ b/samples/subsys/modbus/rtu_client/boards/arduino_opta_stm32h747xx_m7.overlay
@@ -0,0 +1,12 @@
+/*
+ * Copyright (c) 2024 DNDG srl
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+&usart3 {
+ modbus0 {
+ status = "okay";
+ };
+ status = "okay";
+};
diff --git a/samples/subsys/modbus/rtu_server/boards/arduino_opta_stm32h747xx_m7.overlay b/samples/subsys/modbus/rtu_server/boards/arduino_opta_stm32h747xx_m7.overlay
new file mode 100644
index 0000000..1838da4
--- /dev/null
+++ b/samples/subsys/modbus/rtu_server/boards/arduino_opta_stm32h747xx_m7.overlay
@@ -0,0 +1,12 @@
+/*
+ * Copyright (c) 2024 DNDG srl
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+&usart3 {
+ modbus0 {
+ status = "okay";
+ };
+ status = "okay";
+};
diff --git a/tests/subsys/modbus/boards/arduino_opta_stm32h747xx_m7.overlay b/tests/subsys/modbus/boards/arduino_opta_stm32h747xx_m7.overlay
new file mode 100644
index 0000000..1838da4
--- /dev/null
+++ b/tests/subsys/modbus/boards/arduino_opta_stm32h747xx_m7.overlay
@@ -0,0 +1,12 @@
+/*
+ * Copyright (c) 2024 DNDG srl
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+&usart3 {
+ modbus0 {
+ status = "okay";
+ };
+ status = "okay";
+};