I actually had a doubt about what is the difference between the RTS signal and DTR signal ? I already know this that the DTR signal is used to auto reset when we use Arduino and similar MCUs. Can anyone say what is the major difference between these signals and what is their active state ?
3 Answers
Electrically they are both the same. The difference is what they are used for.
DTR means Data Terminal Ready and indicates that the connected device is ready to receive data.
Data Terminal Ready (DTR) is a control signal in RS-232 serial communications, transmitted from data terminal equipment (DTE), such as a computer, to data communications equipment (DCE), for example a modem, to indicate that the terminal is ready for communications and the modem may initiate a communications channel.
RTS means Request To Send and indicates to the connected device that it wants to send data.
The DTE asserts RTS to indicate a desire to transmit to the DCE, and in response the DCE asserts CTS to grant permission, once synchronization with the DCE at the far end is achieved.
Basically DTR is used to indicate the presence of some equipment, and RTS is one half of hardware flow control (along with CTS) to start and stop communication.
On USB communication (e.g., using FT232 USB to UART adaptor, etc) the meaning is less clear. DTR is asserted when the port is opened (usually) and RTS is most likely not asserted at all. It's at the whim of the operating system and/or the driver whether DTR is automatically asserted or not, and whether RTS is even implemented.
-
I'd only add that the FTDI cables (at least the ones I have, from two different vendors) bring out CTS and RTS and assert RTS when the port is opened.– JRobertMay 6, 2017 at 20:28
-
@Majenko Some devices such as an ESP device really needs DTR and RTS signal so how do they communicate through UART ICs. Do they both work the same ? May 7, 2017 at 1:04
-
1Very few devices these days use RTS and CTS for anything. Many mcus don't even have them. They were used more when devices couldn't keep up with the speed of serial communication. Now everything is so fast and serial is so slow CTS and RTS are almost redundant.– MajenkoMay 7, 2017 at 7:59
DTS and RTS are used on esp8266 boards with USB (Wemos, NodeMcu) to reset the board and to set io 0 low for bootloader mode. You can see it in source code of esptool.py. Sometimes you want a reset without going to bootloader mode.
RTS = either CH_PD/EN or nRESET (both active low = chip in reset
DTR = GPIO0 (active low = boot to flasher)
As a counter point, industrial systems utilize the UART protocol at much higher rates - 10 Mbits for example. RTS/CTS can prove very useful when a large data set is being received at a higher rate. We have clients using LVDS and RS-485 IO types for the higher speeds. DTR/DSR is occasionally used to see if the other equipment is on-line but this signal pair is in the rare to use category.