You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Previously CTS was pulled up, this prevented hosts without
hardware flow control from using the default Serial Modem build.
Changing CTS to pull-down allows Serial Modem to send even
when the CTS and RTS pins float.
This relies in DTR as main mechanism for UART control. The host
must first enable its own UART before it enables Serial Modem
UART with DTR.
- With hardware flow control, this means that host drives it's
RTS pin, so there is no difference in operation.
Host should also have a pull-up for it's CTS pin, so when SM
starts driving it's RTS, the host knows that SM is ready to
receive.
- Without hardware flow control, the Serial Modem is able to
send (TX) to host. However, the timing with DTR and when
SM is able to receive needs to be taken into account as
host cannot observe it's CTS. Instead host must monitor the
RI signal, which is de-asserted when SM UART is ready.
Or alternatively, have a sufficient timeout between host
asserting DTR and host's first TX operation.
Important: It is highly recommended to use hardware flow control
with Serial Modem.
Signed-off-by: Markus Lassila <markus.lassila@nordicsemi.no>
Copy file name to clipboardExpand all lines: doc/uart_configuration.rst
+40-7Lines changed: 40 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -44,6 +44,9 @@ The following UART signals are used:
44
44
45
45
The Data Terminal Ready (DTR) and Ring Indicator (RI) signals are the **control signals** used for UART power management, while TX/RX/RTS/CTS are the standard UART signals.
46
46
47
+
.. important::
48
+
The use of |SM| without hardware flow control (RTS/CTS) is `Experimental <Software maturity levels_>`_ and highly discouraged.
49
+
See :ref:`uart_without_flow_control` for more information.
47
50
48
51
Board-specific pin mapping
49
52
**************************
@@ -71,11 +74,11 @@ The following tables shows how to connect the UART pins to the corresponding pin
71
74
* - TX
72
75
- P0.27
73
76
* - RX
74
-
- P0.26
77
+
- P0.26 (pull-up)
75
78
* - RTS
76
79
- P0.14
77
80
* - CTS
78
-
- P0.15
81
+
- P0.15 (pull-down)
79
82
* - DTR
80
83
- P0.08 (Button 1, pull-up, active high)
81
84
* - RI
@@ -103,11 +106,11 @@ The following tables shows how to connect the UART pins to the corresponding pin
103
106
* - TX
104
107
- P0.02
105
108
* - RX
106
-
- P0.03
109
+
- P0.03 (pull-up)
107
110
* - RTS
108
111
- P0.06
109
112
* - CTS
110
-
- P0.07
113
+
- P0.07 (pull-down)
111
114
* - DTR
112
115
- P0.31 (active low, pull-up)
113
116
* - RI
@@ -184,7 +187,7 @@ Host application
184
187
185
188
.. group-tab:: nRF54L15DK
186
189
187
-
The nRF54L15DK host applications use UART30 for Serial Modem communication:
190
+
The nRF54L15DK host applications use UART30 for |SM| communication:
188
191
189
192
.. list-table::
190
193
:header-rows: 1
@@ -249,7 +252,7 @@ When DTR is asserted by the host, the UART is enabled and ready for communicatio
249
252
When DTR is deasserted, the UART is powered down to save power.
250
253
251
254
When the UART is powered down, it releases its high-speed clocks, which are then automatically stopped by the system's power management.
252
-
This achieves the lowest possible power consumption, as the UART is one of the primary power consumers in serial modem configurations.
255
+
This achieves the lowest possible power consumption, as the UART is one of the primary power consumers in |SM| configurations.
253
256
Power consumption can be reduced from hundreds of microamps to just a few microamps when the UART is powered down.
254
257
255
258
UART power management is completely independent of the modem power management (CFUN, PSM, eDRX, and so on).
@@ -278,6 +281,13 @@ Once the host UART is ready and DTR is asserted, the nRF91 enables its UART inte
278
281
The RI signal remains active throughout this process and only returns to inactive once the nRF91 UART is active.
279
282
This coordinated wake-up ensures both ends of the communication link are ready before data transmission begins.
280
283
284
+
**With hardware flow control:** The host can observe its CTS pin (connected to |SM|'s RTS) to know when |SM| is ready to receive data.
285
+
When |SM| starts driving its RTS pin, the host knows that |SM| is ready to receive.
286
+
The host should also have a pull-up on its CTS pin.
287
+
288
+
**Without hardware flow control:** The host must monitor the **RI signal**, which is de-asserted when the |SM| UART becomes ready to receive data.
289
+
Alternatively, the host can implement a sufficient timeout between asserting DTR and initiating its first TX operation.
290
+
281
291
Host-initiated wake-up
282
292
======================
283
293
@@ -289,10 +299,33 @@ The modem detects the DTR assertion and powers up its UART interface, allowing c
289
299
290
300
Sequence diagram showing host-initiated wake-up of the modem
291
301
302
+
.. _uart_without_flow_control:
303
+
304
+
Operating without hardware flow control
305
+
========================================
306
+
307
+
.. important::
308
+
The use of |SM| without hardware flow control (RTS/CTS) is `Experimental <Software maturity levels_>`_ and highly discouraged.
309
+
Hardware flow control ensures reliable communication and prevents timing-related issues.
310
+
Without hardware flow control, there is a risk of data loss in UART communication, especially in high-throughput scenarios.
311
+
312
+
|SM|'s CTS pin is configured with pull-down, allowing |SM| to transmit when CTS and RTS pins are left floating.
313
+
The host can operate without connecting the hardware flow control signals (CTS/RTS).
314
+
315
+
**Key requirements:**
316
+
317
+
* The host must enable its own UART before asserting DTR
318
+
* To detect when |SM| is ready to receive, monitor the RI signal (de-asserted when ready) or use a sufficient timeout after DTR assertion
319
+
* See `Incoming data wake-up`_ for detailed timing information
320
+
321
+
**Buffer configuration:**
322
+
323
+
Increase ``CONFIG_SM_UART_RX_BUF_SIZE`` and possibly ``CONFIG_SM_UART_RX_BUF_COUNT`` to provide sufficient buffer space for your use case.
324
+
292
325
Automatic UART power management using Zephyr's Cellular Modem driver
As the Serial Modem's UART interface power state is controlled by the DTR signal from the host, it is possible to automate the power management using Zephyr's cellular modem driver with Zephyr's CMUX (3GPP TS 27.010) module.
328
+
As the |SM|'s UART interface power state is controlled by the DTR signal from the host, it is possible to automate the power management using Zephyr's cellular modem driver with Zephyr's CMUX (3GPP TS 27.010) module.
296
329
This allows host applications to manage the UART power state automatically.
297
330
See the `Zephyr CMUX Power Saving`_ documentation for more information.
298
331
This configuration is completely done in the host.
0 commit comments