RS-232, is a standard introduced in 1960 for serial communication transmission of data. It formally defines the signals connecting between a DTE (data terminal equipment) such as a computer terminal, and a DCE (data communication equipment), such as a modem. The RS-232 standard had been commonly used in computer serial ports. The standard defines the electrical characteristics and timing of signals, the meaning of signals, and the physical size and pinout of connectors. PC serial port is based on RS-232 standard, you may find signals details in the RS-232 interface pinout.
RS-232, when compared to later interfaces such as RS-422, RS-485 and Ethernet, has lower transmission speed, short maximum cable length, large voltage swing, large standard connectors, no multipoint capability and limited multidrop capability. In modern personal computers, USB has displaced RS-232 from most of its peripheral interface roles. Many computers no longer come equipped with RS-232 ports (although some motherboards come equipped with a COM port header that allows the user to install a bracket with a DE-9 port) and must use either an external USB-to-RS-232 converter or an internal expansion card with one or more serial ports to connect to RS-232 peripherals. Nevertheless, thanks to their simplicity and past ubiquity, RS-232 interfaces are still used — particularly in industrial machines, networking equipment, and scientific instruments where a short-range, point-to-point, low-speed wired data connection is adequate.
This PC serial port interface is single ended (interconnect two devices only, via RS232 serial cable), the data rate is less than 20 kbps. RS232 is the voltage loop serial interface with full-duplex communication represented by voltage levels with respect to system ground. A common ground between the PC and the associated device is necessary. Hot-plug isn't supported, but sometimes allowed. Nowdays only 9-pin connector is still in use for PCs.
|DE-9 Pin||Signal Name||Dir||Description
|1||DCD||Data Carrier Detect|
|4||DTR||Data Terminal Ready|
|5||0V/COM||0V or System Ground|
|6||DSR||Data Set Ready|
|7||RTS||Request to Send|
|8||CTS||Clear to Send|
Note: Direction is DTE (Computer) relative DCE (Modem)
Standard RS232 data packet
RS232 data is usually sent as a packet with 7 or 8 bit words, start, stop, parity bits (may be varied). Sample transmission shown on picture: Start bit (active low, usually between +3v and +15v) followed by data bits, parity bit (depends on protocol used) and finished by stop bit (used to bring logic high, usually between -3v and -15v).
Sample RS232 serial port device. How serial mouse works
Typical PC mouse controlling system has the following parts: sensors -> mouse controller -> communication link -> data interface -> driver -> software. Sensors are the movement detectors which sense the mouse movement and button swiches which sense the button states. Mouse controller reads the state of those sensors and takes acount of current mouse position. When this information changes the mouse controller sends a packet of data to the computer serial data interface controller. The mouse driver in the computer received that data packet and decodes the information from it and does actions based on the information.
PC RS232 serial mouse voltage levels:
Mouse takes standard RS-232C output signals (+-12V) as its input signals. Those outputs are in +12V when mouse is operated. Mouse takes some current from each of the RS-232C port output lines it is connected (about 10mA). Mouse send data to computer in levels that RS-232C receiver chip in the computer can uderstand as RS-232C input levels. Mouse outputs are normally something like +-5V, 0..5V or sometimes +-12V. Mouse electronics normally use +5V voltage.
Serial device hardware implementation
PC serial mouse uses typically DTR and RTS lines for generating +5V power for microcontroller circuit in the mouse. Because typical optomechanical mouse also needs power for 4 leds in the optocoupler movevement detectors, there is not much power to loose. A typical approach is to use diodes to take current from DTR and RTS lines and then feed it through resistor to all of the (infrared) leds in the movement detectors. The positive power supply usually taken from RTS and DTR lines (just after the diodes and before the resistor going to leds). The negative supply for transmitter is taken from TD pin. Typical PC serial port mouse takes 10 mA total current and operates at voltage range of 6-15V. The data itself in sent using standard asynchronous RS-232C serial format:
Start D0 D1 D2 D3 D4 D5 D6 D7 Stop Logic 0 ___ ___ ___ ___ ___ ___ ___ ___ ___ +3..+15V | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Logic 1 | | | | | | | | | | -3..-15V ___| |___|___|___|___|___|___|___|___|____
Serial mouse pinout explanation
|3||TD||Serial data from host to mouse (only for power)|
|2||RD||Serial data from mouse to host|
|7||RTS||Positive voltage to mouse|
|4||DTR||Positive voltage to mouse and reset/detection|
RTS = Request to Send CTS = Clear to Send DSR = Data Set Ready DTR = Data Terminal Ready
When DTR line is toggled, mouse should send one data byte containing letter M (ascii 77) to identify itself. To function correctly, both the RTS and DTR lines must be positive. The lines DTR-DSR and RTS-CTS must NOT be shorted. Implement the RTS toggle function by setting the RTS line negative and positive again. The negative pulse width is at least 100ms. After a cold boot, the RTS line is usually set to a negative level. In this case, setting the RTS line to a positive level is also considered an RTS toggle.
RS232 serial data parameters and packet format
1200bps, 7 databits, 1 stop-bit
Data packet is 3 byte packet. It is send to the computer every time mouse state changes (mouse moves or keys are pressed/released).
D7 D6 D5 D4 D3 D2 D1 D0 1. X 1 LB RB Y7 Y6 X7 X6 2. X 0 X5 X4 X3 X2 X1 X0 3. X 0 Y5 Y4 Y3 Y2 Y1 Y0
Note: The bit marked with X is 0 if the mouse received with 7 databits and 2 stop bits format. It is also possible to use 8 databits and 1 stop bit format for receiving. In this case X gets value 1. The safest thing to get everything working is to use 7 databits and 1 stopbit when receiving mouse information (and if you are making mouse then send out 7 databits and 2 stop bits).
The byte marked with 1. is send first, then the others. The bit D6 in the first byte is used for syncronizing the software to mouse packets if it goes out of sync.
LB is the state of the left button (1 means pressed down); RB is the state of the right button (1 means pressed down); X7-X0 movement in X direction since last packet (signed byte); Y7-Y0 movement in Y direction since last packet (signed byte)