Sida 1 av 2

Hur funkar RTS och CTS på RS232 i full duplex?

Postat: 7 februari 2008, 21:21:15
av Mr M
Hur funkar RTS och CTS på RS232 i full duplex?

Någon här som kan berätta? :-)

Postat: 7 februari 2008, 21:23:35
av Icecap
Hmmmm... andra träffen på Google...

Letade på "rs232 handshake"

Postat: 7 februari 2008, 21:37:29
av Mr M
Hmmm, inte så mycket hjälp tyvärr. Skulle vilja ha mer grafer med signaler. :-/

Hittade något här:

http://www.moxa.si/Title_Pages/Multipor ... Boards.pdf

, på sidan 2.

Men jag undrar vad de menar med "raises", menar dom "mark" eller "space" på nivån?

Postat: 7 februari 2008, 21:54:48
av Micke_s
Mr M: Behövs hårdvaruhandskakning längre. vilken enhet som helst klarar ju mycket högre hastigheter än vad UART har.

Postat: 7 februari 2008, 21:56:20
av sodjan
Om du talar om vad som är problemet så kanske det
är enklare att förstå vad du vill veta...

> Men jag undrar vad de menar med "raises"

Höjer.

Postat: 7 februari 2008, 22:15:01
av rehnmaak
Med reservation för polariteten på signalerna (jag kommer aldrig ihåg om de ska vara 1 eller 0) så sätter man RTS hög om man vill att andra ändan ska sluta sända och man själv ska sluta sända så fort som möjligt om CTS är hög. Ett bra sätt är att sätta RTS hög när mottagarbufferten är 80% full och lägger RTS låg när bufferten når 20%.

Postat: 7 februari 2008, 22:34:09
av Mr M
Micke_s skrev:Mr M: Behövs hårdvaruhandskakning längre. vilken enhet som helst klarar ju mycket högre hastigheter än vad UART har.
Ja, annars skulle jag väll inte fråga :-P

Postat: 7 februari 2008, 22:34:55
av Mr M
sodjan skrev:Om du talar om vad som är problemet så kanske det
är enklare att förstå vad du vill veta...

> Men jag undrar vad de menar med "raises"

Höjer.
Ok, tack för ingenting (fattar engelska).

Postat: 7 februari 2008, 22:38:39
av Mr M
rehnmaak skrev:Med reservation för polariteten på signalerna (jag kommer aldrig ihåg om de ska vara 1 eller 0) så sätter man RTS hög om man vill att andra ändan ska sluta sända och man själv ska sluta sända så fort som möjligt om CTS är hög. Ett bra sätt är att sätta RTS hög när mottagarbufferten är 80% full och lägger RTS låg när bufferten når 20%.
Menar du "hög" som att du har positiv spänning på RS232, alltså inte negativ?

Postat: 7 februari 2008, 22:51:17
av Mr M
Här hittade jag något :-)
Then when a DTE (such as a PC) wants to stop the flow into it, it negates RTS. Negated "Request To Send" (-12 volts) means "request NOT to send to me" (stop sending). When the PC is ready for more bytes it asserts RTS (+12 volts) and the flow of bytes to it resumes. Flow control signals are always sent in a direction opposite to the flow of bytes that is being controlled. DCE equipment (modems) works the same way but sends the stop signal out the CTS pin. Thus it's RTS/CTS flow control using 2 lines.

Postat: 7 februari 2008, 22:54:43
av sodjan
> Menar du "hög" som att du har positiv spänning på RS232, alltså inte negativ?

Det framgår av dokumentet som Icecap länkade till (i *första* svaret) :

"ON refers to a high RS-232 voltage level (+5V to +15V),
and OFF refers to a low RS-232 voltage level (-5V to -15V)."

"Hög" = "ON" i rehnmaak's inlägg.

> Ja, annars skulle jag väll inte fråga
> Ok, tack för ingenting (fattar engelska).

Inte riktigt rätt attityd när man ber om hjälp... :-)

Postat: 7 februari 2008, 22:55:45
av rehnmaak
Som jag skrev, jag kommer aldrig ihåg vilken polaritet det är på signalerna... Dessutom är signalerna inverterade på RS232 linan jämfört med signalerna på UART:en.

Postat: 7 februari 2008, 23:01:39
av oJsan
Om man först läser i pdf:en:
The “idle” state (MARK) is
negative with respect to the common ground, and the “active” state (SPACE) is positive with respect to the common ground"


...och sedan på maxim's sida:
When the host system (DTE) is ready to transmit data to the peripheral system (DCE), RTS is turned ON

..så bör man komma fram till samma sak.

Vad som kanske "rör till det" är förmodligen att "TTL-varianten" (PIC/AVR etc.) är tvärtom jämfört med RS232... idle-state (MARK) brukar då vara +5V och active-state (SPACE) är logisk 0V.

Postat: 7 februari 2008, 23:02:57
av oJsan
rehnmaak skrev:Som jag skrev, jag kommer aldrig ihåg vilken polaritet det är på signalerna... Dessutom är signalerna inverterade på RS232 linan jämfört med signalerna på UART:en.
Är det inte tvärtom, om man ska vara korrekt. Att UART:ens nivå är inverterade jämfört med nivån på RS232?

Edit: Ehmm.. tror att jag svamlar nu, gonatt. =)

Postat: 7 februari 2008, 23:07:33
av sodjan
oJsan> Att UART:ens nivå är inverterade jämfört med nivån på RS232?

rehnmaak> Dessutom är signalerna inverterade på RS232 linan jämfört med signalerna på UART:en.

Exakt *vad* är det för skillnad på det ??? :-) :-)

D.v.s att "1" är en inverterad "0", eller att "0" är en inverterad "1" ?

oJsan> The “idle” state (MARK) is negative with respect to the common ground,

Jo, men det är inte så självklart att "idle" eller "mark" = "1" (eller "hög" om man vill).
Och att "active" (eller "Space") är = "0"... :-)

OBS, detta gäller på TX och RX !