Jste zde

SPI rozhraní použité na SIPO obvod

Možnosti rozšíření nejrůznějších implementací SPI jsou široké. Tento článek probírá možnosti serioparalelních výstupů, připojených na SPI.

Úvod - SPI rozhraní

O komunikačním rozhraní SPI (Serial Peripheral Interface) bylo již napsáno poměrně hodně příspěvků i na HW serveru (např. „SPI řešené se dvěma  mikroprocesory AT89C2051“) . Je to velmi rozšířené jednosměrné nebo obousměrné komunikační rozhraní pro připojení celé řady periferních obvodů k mikroprocesoru (mP), které bývá ještě navíc vybaveno vodičem pro výběr periferního obvodu (CE - Chip Enable). 

V praxi existuje několik variant SPI, princip přenosu dat je v podstatě stejný. Na rozdíl od paralelního přenosu dat se zde používá jen jeden vodič pro přenos dat a druhý pro potvrzení platnosti těchto dat na straně výstupu. Znamená to, že tento přenos se musí uskutečnit bit po bitu sériově. Zásadní vlastností tohoto přenosu je také skutečnost, že vysílací strana nikdy nečeká, zda přijímací strana všechna data bezchybně přijala. To musí být řešeno většinou volbou vhodného přenosového protokolu. Podrobnějším popisem rozhraní SPI se zabývat nebudeme, lze jej najít v literatuře. Jedna z možných realizací SPI rozhraní pouze programovými prostředky je uvedena v již zmíněném příspěvku „SPI řešené se dvěma  mikroprocesory AT89C2051“. Navíc některé mP již mají standardní SPI vestavěno. Předložený článek ukazuje na použití SIPO obvodu, které nemá typizované SPI rozhraní, ale z hlediska potřebného časování je možné toto rozhraní pro jeho obsluhu použít.
 

Možnosti technického řešení - serioparalelní výstup

Sérioparalelní převodníky (SIPO - Seriál Input Paralel Output) se používají především ke zvýšení počtu výstupních bitů v mikroprocesorových systémech. Konkrétní připojení více SIPO obvodů k rozhraní SPI je možné dvěma způsoby, sériovým nebo paralelním řazením. Každé má své výhody a nevýhody, jejichž souhrn je uveden v tabulce 1.

obr.  1. Schématické znázornění sériového připojení SIPO obvodů k SPI

Na  obrázku 1 je uvedeno schéma zapojení pro sériové řazení. Výstup SDAT ze zdroje signálu SPI je připojen na vstup SDIN prvního obvodu, výstup sériové linky prvního obvodu SDOU je připojen na vstup sériové linky druhého obvodu a tak to pokračuje dál. Výstup posledního obvodu není nikam připojen. Vstupy hodin SCLK jsou spojeny paralelně a je na ně přiveden hodinový kmitočet SPI zdroje. Pro „výběr“ všech obvodů současně se používá jeden jediný signál CE. Programová obsluha takto řazených obvodů představuje obsluhu nx8 klopných obvodů typu D řazených za sebou. Znamená to tedy, že se všechny klopné obvody překlápí vždy buď na nástupní nebo sestupnou hranu hodinového signálu SCLK a přebírají stavy předchozích výstupů předřazených D klopných obvodů. Pro obsluhu všech n obvodů to představuje sériové vyslání nx8 bitů.

obr.  2. Schématické znázorněné paralelního připojení SIPO obvodů k SPI

Na obrázku 2 je uvedeno schéma zapojení pro paralelní řazení SIPO obvodů k SPI rozhraní mP. Výstup SDAT ze zdroje signálu SPI, jakož i výstup hodinového kmitočtu SLCK jsou paralelně přivedeny na všechny datové vstupy SDIN, resp. hodinové vstupy SCLK SIPO obvodů. Signály „výběru“ obvodů CE jsou zde připojeny samostatně na „adresový“ port mikroprocesoru (CE1, CE2, ..., CEn). Programová obsluha v tomto případě provede výstup dat pouze 8 bitů, podle zvoleného (a vybraného) SIPO obvodu.
 

Sériové řazení
Paralelní řazení 
Výhody Nevýhody Výhody Nevýhody
- Připojení pouze 3-mi vodiči - Nutno vyslat vždy nx8 bitů
- Delší čas na obsluhu (nxT8bitů)
- Nutnost pamatovat si v mP vždy nx8-mi bitových údajů.
- Stačí vyslat vždy jen 8 bitů
- Čas obsluhy je vždy jen T8bitů
- Není potřebné si pamatovat vyslané údaje
- Připojení 2+n vodiči
tab.  1. Porovnání výhod a nevýhod sériového a paralelního připojení SIPO obvodů k mPS

Možnosti použití obvodu SIPO 74HCT595 

Obvod HCT595 jako SIPO, umožňuje převádět vstupní sériová data do paralelní výstupní podoby. Tento převodník je tvořen 8-mi klopnými obvody typu „D“, zapojenými do série, přičemž vstup prvního (SDIN) a výstup posledního (SDIN) je vyveden. Dále obsahuje výstupní 8-bitovou „paměť“ a nezbytné nastavovací, resp. nulovací obvody. Pro správnou funkci je nezbytný vstup SCLK - vstup sériových hodin, jehož funkce je shodná s funkcí SCLK PSI rozhraní a zajišťuje překlopení těchto klopných obvodů. Přesun dat mezi „pracovními“ klopnými obvody typu „D“ a výstupní pamětí je prováděno signálem LATCH. Ve většině katalozích je tento signál charakterizován krátkým impulsem „H“, „L“, „H“ na konci přenesených dat do pracovních klopných obvodů. Pokud programátor napíše ovládací program, který bude přesně kopírovat požadované změny na vodičích SDATA, SCLK a LATCH, není o čem diskutovat, bude snad jen delší doba vykonávání. Pro připojení ke standardnímu SPI rozhraní, které se v současnosti stává součástí jednočipového mikroprocesoru, začíná být trošku problém, jak se signálem LATCH. Pokud by se připojil jen jeden SIPO obvod, tady by problém nebyl, v okamžiku připojení více obvodů (sériově nebo paralelně řazené) již tento problém může nastat. Na ?. je uvedeno základní připojení SIPO obvodu HCT595 k SPI ADuC812. Pokud využijeme i signálu RESET, tak musí být „invertován“ k signálu pro mikroprocesor. Tento signál nám zajistí „nulování“ výstupních klopných obvodů po zapnutí napájení. Pokud jej nechceme použít připojíme PIN SRCLR na +5V a programově zajistíme po naběhnutí napájení prvotní nastavení vnitřních klopných obvodů.

obr.  3. Základní připojení SIPO k SPI ADuC812

Předložený článek ukazuje na jednu z možností, jak tento problém řešit. Zaměřuje se na paralelní připojení více SIPO obvodů k mikroprocesoru ADuC812. Na obrázku 4 je uvedeno elektrické schéma zapojení pro připojení až 8-mi obvodů HCT595 na sériovou linku SPI, přičemž vhodným programovým nastavením SPI rozhraní v mP lze dosáhnout rychlosti obsluhy cca 3.5ms při použití  krystalu o hodnotě "jen" 11.0592MHz. 
Uvedené zapojení může, ale také nemusí využívat požadavku na přerušení. To záleží na celé koncepci konkrétní programové vybavení.
 

obr.  4. Elektrické schéma zapojení 8-mi SIPO obvodů HCT595 k SPI ADuC812 

Komentovaný výpis programu bez použití přerušení


; Pripojeni 8 obvodu 595 a adresoveho dekoderu na SPI ADuC812
;=========
ADR0		BIT	P0.0		;adresa dekoderu
ADR1		BIT 	P0.1		;adresa dekoderu
ADR2		BIT 	P0.2		;adresa dekoderu
CE_SP	      BIT   P0.3		;spolecny vyber
ADRESA	DATA	020H		;pametove misto s adresou vybraneho SIPO
.
.
.    nastaveni configuracniho registru
.
MOV SPICON,#00110000B
;           |||||||+---;SPR0 - Bit rate select
;           ||||||+----;SPR1
;           |||||+-----;CPHA - SCLK Phase Select
;           ||||+------;CPOL - SCLK Polarity Select
;           |||+-------;SPIM - Master Mode Select
;           ||+--------;SPE  - PSI Enable Bit
;           |+---------;WCOL - Write Collosion Error Flag
;           +----------;ISPI - SPI Interupt Bit;
;
.
.
.
.    v registru Acc jsou vysilana data
.
ANL P0,#11111000B			;maska na adesove bity
ORL P0,ADRESA			;nastaveni adresy vybraneho obvodu
CLR CE_SP				;vyber CE SIPO obvodu
MOV SPIDAT,A			;data do SPI registru
NOP					;cekame dle konfigurace
NOP
SETB CE_SP				;konec vyberu obvodu SIPO
.


Komentář k údajům konfiguračního registru SPICON

Nastavení konfiguračního registru v mP ADuC812 určuje všechny parametry SPI rozhraní. Především bity SPR0 a SPR1 určují rychlost přenosu dat na výstup SDATA a velikost periody hodinového signálu SCLK. Zde je nastaven na nejvyšší rychlost tj. 0.361ms (obvod HCT595 zvládne zpracovat hodinové impulsy o šířce periody 0.041ms). Bit CPHA určuje fázi na výstupu SCLK a bit SPOL pak polaritu těchto hodin, oba jsou nastaveny n „L“. Bit SPIM určuje režim MASTER-SLAVE SPI v mP a bit SPE povoluje případný režim pod přerušením. 
Časové výsledky s takto zapojenými SIPO obvody jsou sejmuty logickým analyzátorem na ?. Z nich lze snadno odvodit čas potřebný na výstup 8-mi bitů.
 
 

obr.  5. Časové průběhy v popisované aplikaci SIPO obvodů 

Závěr 

Předložený příspěvek ukazuje na skutečnost, že při použití „jen“ 4 bitů portu a vestavěné  SPI získáme až 8 x 8 bitů výstupních portů. Uvedený příklad použití je určitě použitelný u jiných mP, které mají vestavěné SPI. Bude nutné jen upravit čekání po zápisu dat nebo pracovat v přerušovacím režimu.
 
 

ODKAZY a DOWNLOAD


 
Hodnocení článku: