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

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Mr M
Inlägg: 165
Blev medlem: 20 januari 2006, 21:35:14

Inlägg av Mr M »

Det här är vad jag tror mig ha kommit fram till.

Om vi har två enheter kopplade så här:

PC1 PC2

TX ------------------> RX

RX<------------------- TX

RTS -----------------> CTS

CTS <----------------- RTS

När PC1 är redo att ta emot data från PC2 sätter PC1 sin RTS till space (+3 till +15V). När PC1 vill sluta ta emot data från PC1 sätter den sin RTS till mark (-3 till -15V).

PC2 slutar sända data till Pc1 ifall dess CTS är mark (-3 till -15V).

och...

När PC2 är redo att ta emot data från PC1 sätter PC2 sin RTS till space (+3 till +15V). När PC2 vill sluta ta emot data från PC1 sätter den sin RTS till mark (-3 till -15V).

PC1 slutar sända data till PC2 ifall dess CTS är mark (-3 till -15V).

Kanske så? :-)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Det låter vettigt, ja.

Men, har du själv kontroll på "PC1" och "PC2" ?
Det är ofta enklare att köra en mjukvaruhandskaning som t.ex
Xon/Xoff. Det blir även färre trådar så. Men du kanske inte kan
påverka det. Jag frågade just vad det hela handlade om för att
få ett bättre grepp om vad du var ute efter. D.v.s vad är "PC1" resp "PC2"?

En detalj bara, jag är inte 100% säker på att "space" och "mark" är
rellevanta uttryck för annat än TX och RX linjerna. För styrsignalerna
anges ofta bara "ON" (d.v.s en hög spänning) eller "OFF" (negativ spänning)
så som det ser ut på Maxim sidan.
Mr M
Inlägg: 165
Blev medlem: 20 januari 2006, 21:35:14

Inlägg av Mr M »

Det är en bluetoothmodul som min MCU ska kommunisera via. Så modulen säger till via sin RTS att jag för tillfället inte får skicka ny data till modulen. Samt att min MCU troligen kan deaktivera sin RTS när den inte vill ha data för tillfället. Alltså jag tror det funkar så. Och i databladet står det väldigt sparsamt om detta.



http://www.free2move.se/uploads/downloa ... _rev_c.pdf

http://www.free2move.se/uploads/downloa ... col_v4.pdf
Mindmapper
Inlägg: 7122
Blev medlem: 31 augusti 2006, 16:42:43
Ort: Jamtland

Inlägg av Mindmapper »

Mr M skrev: RTS -----------------> CTS

CTS <----------------- RTS
Exakt så! Kan inte bli tydligare.
Mr M
Inlägg: 165
Blev medlem: 20 januari 2006, 21:35:14

Inlägg av Mr M »

Alltså PC1 = MCU, PC2 = blåtandsmodul

I databladet står det att man måste använde RTS/CTS för att säkerställa kommunikationen mellan MCU och BT-modulen. Men att RTS/CTS inte länkas vidare ut från BT-modulen.
Mindmapper
Inlägg: 7122
Blev medlem: 31 augusti 2006, 16:42:43
Ort: Jamtland

Inlägg av Mindmapper »

PC tar emot snabbare än vad BT sänder, så den riktningen behövs inte handskakas. Förmodligen kan du strunta i den.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK, right... :roll:

> Det är en bluetoothmodul som min MCU ska kommunisera via.

Varför i [valfritt kraftord...] kunde du inte ha kläckt ur dig det redan när
jag (väldigt tidigt i tråden) frågade *VAD* det var du höll på med ?
En massa inlägg och jobb hade kunnats sparats...

Du ska alltså köra mellan en BT-modul och en processor på samma kort ?
Detta handlar inte alls om RS232, det har inte ett smack med RS232 att göra.

Glöm det som har skrivits tidigare i tråden och så startar vi om här... :-)

I första dokumentet sidan 4 står det :

"UART CTS, pin=32, CMOS input, UART clear to send active low"
"UART RTS, pin=31, CMOS output, UART request to send active low"

På sidan 12 står det :

"RTS, Output, active=Low, UART request to send"
"CTS, Input, active=Low, UART clear to send"

Samma sak (i princip) på på sidan 5 i det andra dokumentet.

Där har du nivåerna helt klara eller hur ?
Eftersom vi här talar om vanliga CMOS UART nivårt så är
"low" = "0" = 0V precis som vanligt. Glöm RS232 nivåerna...

På samma sida står även :
"Uses RS232 protocol but voltage levels are 0V to VDD, (requires external RS232 transceiver IC)"

Vilket du alltså i detta fall inte borde behöva.

> I databladet står det att man måste använde RTS/CTS för att säkerställa kommunikationen mellan MCU och BT-modulen.

Njae, det står (på sidan 19 i det första dokumentet) :

"The remaining two signals, UART_CTS and UART_RTS, can be used to
implement RS232 hardware flow control..."

Notera : "*CAN* be used..."

På lite längre ner på samma sida i samma dokument :

"Flow Control : RTS/CTS or None"

Så du skulle kunna köra utan CTS/RTS om bara din firmware i processorn ser
till att "hänga med" hela tiden. Och du kommer säkert inte att köra
3 Mbaud, vilket är max för modulen, eller hur ? :-)

> PC tar emot snabbare än vad BT sänder,

Vilken "PC" ?
Mindmapper
Inlägg: 7122
Blev medlem: 31 augusti 2006, 16:42:43
Ort: Jamtland

Inlägg av Mindmapper »

PC1 kanske? Tur att någon (sodjan) är läskunnig i varje fall :roll:
Mr M
Inlägg: 165
Blev medlem: 20 januari 2006, 21:35:14

Inlägg av Mr M »

Hmm, nu är det ju ni som inte läser noga :-P

Det står i databladen att man MÅSTE använda hårdvaruflödeskontroll då man konfigurerar BT-modulen. Samt att man på denna modell INTE kan stänga av hådrvaruflödeskontrollen mellan MCUn och BT-modulen.

Det står även att RTS och CTS inte länkas vidare från modulen via RF. Där får man fixa någon annan flödeskontroll.


Jag ville bara veta om nivåerna refererade till CMOS eller RS232 så jag sedan vista vad som krävdes. Jag vet att ag ska köra CMOS så därför kan jag invertera det jag vet om RS232.

:-)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Ah, OK, det är möjligt.
Jag såg bara att hårdvaru flödeskontroll gick att stänga av.

Men, även om HW-flödeskontroll är "på", så betyder det ju inte att
man måste "använda" det. Om man är säker på att man kör i en
hastiget där båda sidor hela tiden hänger med, så kan man lägga
pinnarna hårt till "on". Och som sagt, jag tror inte att du kommer
att köra i närheten av 3 Mbaud.

> Det står även att RTS och CTS inte länkas vidare från modulen via RF.
> Där får man fixa någon annan flödeskontroll.

Verkar ganska normalt. På den nivån får man ha felkontroll/flödeskontroll
inbyggt i det protokoll man använder. D.v.s inbyggt i själva datat som sänds.

> Jag ville bara veta om nivåerna refererade till CMOS eller RS232

OK, då var det alltså DU som inte hade läst så noga... :-)
Det var ju ganska tydligt i databladet.

Och *om* det nu var tolkningen av databladet som var problemet,
var i jösse namn hade du inte länkerna till PDF'erna i *FÖRSTA* inlägget ??
Mr M
Inlägg: 165
Blev medlem: 20 januari 2006, 21:35:14

Inlägg av Mr M »

Jag tyckte inte signaleringen framgick ur databladet. Men nu har jag hittat ett bättre datablad över en BT-modul från Analog Devices.

http://www.amber-wireless.de/pdf/LMX9830_SW_UG_1.1.pdf

På sidan 15 står det "skitabra" hur det funkar. :-)

Att man ska behöva titta i ett annat datablad tycker jag är dåligt, ska det behöva vara på det här sättet!! (som Sverker skulle ha sagt på Pluss). :shock:
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Bra! Satt precis och funderade på samma sak (använder F2M03GLA). :P
Mr M
Inlägg: 165
Blev medlem: 20 januari 2006, 21:35:14

Inlägg av Mr M »

Vill bara meddela att modulen fungerar

:)
Skriv svar