Sériový port pro zvídavé

Tento dokument vznikl, když jsem se seznamoval s využitím sériového portu pro svoje aplikace. Rozhodně se nesnaží nahrazovat oficiální dokumentace které je možné najít na internetu v poměrně hojné míře. Například v češtině http://rs232.hw.cz/ nebo angličtině http://www.beyondlogic.org/serial/serial.htm

Zaměřil jsem se zejména na rozbor signálů a na pochopení elektrických vlastností sériového portu.


Klasický sériový port:

Serial interface for inquisitive

This document writenn, when I start become familiar with usage of serial interface for my applications. Purpose of this document is definitely not to replace oficial documentation. It can be found on internet in many variations. For example in czech http://rs232.hw.cz/ or in english http://www.beyondlogic.org/serial/serial.htm

I'm primary focused to understand used signals and electrical features of serial interface.


Serial port:
Sériový port se stává ze dvou částí.
- paralelní část určená pro volitelné potvrzování dat (hand shake)
- sériová část přenášející vlastní data

Předmětem tohoto textu je pouze sériová část.

Z dokumentace víme, že pro komunikaci se využívá asynchronní přenos, data nejsou chráněna žádným zvláštním kódováním a jsou přenášena v úrovních neslučitelných s TTL.
Data jsou přenášena podle následujícího modelu.
Serial interface consist of two parts:
- paralel part for optional data confirmation (hand shaking)
- serial part for data transfer

This text are foxused only to serial part of interface.

We can know from documentation, that communication are asynchronous. Data are not protected by special encoding and is transfered in electric levels not compatible with TTL.
Data are transfered by following model.
První krok je tedy jednoduchý - upravit data na úrovně slučitelné s TTL. To je celkem jednoduchá úloha. Pro naše potřeby se spokojíme s komerčními převodníky typu MAX 232. First step is more easiest - transfer it to levels compatible with TTL. It is easy - we can simply use well known converter based on MAX232 chip.
Tím získáme data odpovídající následujícímu obrázku. Now we have data in followinf form.
Další krok jsou hodiny. Pro naší potřebu použijeme jednoduché hodiny založené na obvodu 74HC4060. Tento obvod umožňuje přímé připojení kristalu a je jednoduché jej řídit.

Obvod představuje binární děličku s vyvedenými některými stupni dělení. Pokud použijeme kristal 2,4576MHz budou vyvedené kmitočty odpovídat rychlostem sériového potru v PC. Viz následující tabulka

Poznámka: jedná se o přímou rychlost. Některé obvody pro realizaci sériové komunikace používají na vstupu dělení 4, proto označují přenosovou rychlost jinak.
Next step is clock generator. We can use simple clock based on chip 74HC4060. This chip enables direct connection of x-tal and is easy to configure it.

Chip represents binari dividor with outed some of dividing levels. With combination of x-tal 2.4576MHz we have outputs with typical serial baud rates for PC. see following table

Note: this is direct speed, some of chips for serial communication using dividor by 4 at the begin. In that case marking outs in different values.

div outspeed 
Q01228800 
Q1614400 
Q2307200 
Q3153600*
Q476800*
Q538400*
Q619200*
Q79600*
Q84800*
Q92400*
Q101200 
Q11600*
Q12300*
Q13150*
Poslední krok je dostatečně dlouhý posuvný registr, do kterého se budou ukládat přijatá data.

Trochu problematické je, že klidový stav je 1. Většina posuvných registrů považuje za klid 0 a jsou vybaveny paralelním nulováním. Proto jsem si jednoduchým invertorem signál otočil. Je proto nutné si pamatovat, že i výstup bude invertovaný.

Budeme potřebovat posuvný registr, do kterého se vejde: start bit + 8 datových bitů + stop bit = 10 bitů. Já jsem použil obvody 74 595 (datové bity) a 74 174 (start, stop).

Nyní již kompletní schéma zařízení.
Last step is long shift register for storing received data.

Little problem is, that quiet mode for bus is logical 1. Most of shift registers using as quiet state logical 0 and contains inputs for paralel reset. It is easy to invert waveform by simple invertor. Do not forget, thar output values will be also inverted.

We need shift register for storing: start bit + 8 data bits + stop bit = 10 bits. I was selected chips 74 595 (for data bits) and 74 174 (for start, stop).

And now we can draw full schematic.
Pro své pokusy jsem si na výstup připojil pouze barevné LED diody a pomocí jednoduchého terminálu si hrál s jejich blikáním. For my test I was only connect solor LED diodes and via simple terminal I was play with blinking of diodes.