Thank you for the clarification.In my final system, the UART has to be converted to RS422, so unfortunately I cannot use RTS/CTS hardware flow control on the complete communication path. I performed some measurements with an oscilloscope. I agree now that the UART itself can reach approximately 4.25 Mbaud. My remaining questions are mainly about the electrical loading of the UART pins and real-time scheduling. I used the following Python code for these tests. During the experiments, I varied the timeout value and also tested both with and without the read() operation as experimental variables.
For Fig. 1 and Fig. 2, I tested a direct loopback on the Jetson UART. Fig. 1 shows TX measured with TX and RX disconnected, while Fig. 2 shows TX when TX and RX are connected for loopback. After connecting RX, the LOW level no longer reaches close to 0 V. I also noticed that when I added several additional Dupont wires, the received data became unreliable. Therefore, I suspect that the UART pins may be relatively sensitive to capacitive loading(oscilloscope probe) or additional wiring.
For Fig. 3 and Fig. 4, I connected a TTL-to-RS422 converter based on the SP3490E and powered the converter. I measured the TXD and RXD signals on the TTL side. Again, the LOW level was significantly raised compared with the unloaded TX signal.
According to the carrier-board documentation, the header signals appear to pass through TI TXB0108 level translators. Could the drive characteristics of the TXB0108 be responsible for this behavior when an external UART/RS422 transceiver is connected? Would you recommend adding an external buffer/driver between the Jetson UART pins and the RS422 transceiver instead of driving the transceiver input directly from the header?
I also observed another behavior during the RS422 loopback test.In Fig. 5 and Fig. 6, when I continuously call only write() and comment out read(), the spacing between transmitted data blocks becomes irregular. When I enable read() again, the spacing becomes much more regular.
Interestingly, in a Jetson-only TX-RX loopback test, both the write-only and write+read cases behave normally, so this phenomenon seems to appear mainly after the external RS422 converter is connected.
My second question concerns deterministic timing. My target application runs periodically, and I tested different timeout/write_timeout values. Most cycles complete normally, but occasionally a timeout still occurs. For a hard or near-hard real-time application, are there recommended Jetson configurations for UART communication, for example:
- PREEMPT_RT / Jetson Real-Time Kernel
- real-time thread priority (
SCHED_FIFO)
- CPU affinity / isolated CPU core
- UART interrupt or DMA-related settings
In particular, can /dev/ttyTHS1 be used with a bounded and deterministic latency, or should occasional scheduling jitter still be expected even with the real-time kernel?
Thank you again for your help.