It was really a faulty cable. I don't know if the problem is the chipset itself or a wire. Anyway, I bought a new cable with a different chipset and everything is ok now!
This is the faulty one
Bus 002 Device 008: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
This is the one that worked
Bus 002 Device 006: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
UART stands for Universal Asynchronous Receiver/Transmitter and is a way computers can "talk" to each other over a serial line. It is asynchronous because there is no separate clock line like there is for other serial protocols like SPI and I2C. Each byte is preceded by a start bit and followed by one or two stop bits (usually one).
Typically speeds are 9600, 19200, 57600, or 115200 baud, although some UARTs can go over a million baud. Baud rate is essentially bits per second, so a baud rate of 115,200 means you are sending 11,500 bytes per second since each byte has the overhead of one start bit and one stop bit.
Besides talking directly with another computer chip, UARTs are sometimes used to communicate with other peripherals. For example, it is very common to use a UART to communicate with a wireless modem, be it cell radio or Bluetooth using "AT" commands.
The outputs of a UART (Tx = transmit, Rx = receive) are at the same logic levels (usually 3.3v or 5v) as the rest of the circuit. The idle state of a UART line is a logic high. To connect two microcontrollers together in close proximity, you can tie the Tx lead of one UART to the Rx lead of another and vice versa.
However UARTs are also commonly used to drive RS-232 interfaces, which allow the signals to travel for several hundred feet. For this, you need a level-shifting circuit, since RS-232 uses different voltages than the logic levels on the PCB -- namely logic high becomes a negative voltage (typically -5v to -12v), and logic low becomes a positive voltage (typically +5v to +12v).
Do NOT connect the Tx and Rx leads of a UART directly to a RS-232 cable.
UARTs are usually included inside a microcontroller set of I/O peripherals, and there will be a number of registers associated with the UART. The UART will usually have a dedicated set of library routines provided by the microcontroller's manufacturer to access them. These will include a routine (or routines) to initiate the UART, such as setting its baud rate and other characteristics such as the character size (7 or 8 bits), parity, and stop bits (you can almost always ignore these last three items).
Then there will be routines to write a character, and read a character. At 115,200 baud, there can be a character coming in every 100 µs. So you often need to use an interrupt routine to collect them into a buffer so the base level of your firmware can process them later. UARTs often provide FIFO's (anywhere from four characters to 128 or more), so it is less likely you will miss a character.
There can be several UARTs in the same microcontroller, one PIC32 I have worked with had six of them. (Usually the pins for the UARTs are shared with other peripherals like SPI and I2C, so that meant you can have a few UARTs, a couple SPI and a couple of I2C interfaces, or a lot of UARTs, but none of the others). If one does run out of UARTs on the microcontroller, you can get them in separate ICs, usually interfaced via I2C or SPI interfaces.
Best Answer
Stop bits are effectively an idle signal - sending 2 stop bits just means that the receiver will sees an extra 1 bit gap between the characters.
Serial asynchronous data format is: idle (high) start bit (low) data bits (anything) optional parity (anything) stop bit (high) idle(high)
The receiver recognises the start of a character being sent as the first low transition on an idle line (start bit). No of stop bits is irrelevant.
RTS / CTS control signals are control signals they do not have any stop bits.