Újra itt

     Egészségügy állapotomra hivatkozva volt egy pár nap kimaradás, sajnos. Viszont most azon vagyok, hogy bepótoljam. A mai téma a soros kommunikáció lesz. Persze nem az a Wikipediás , hanem egy kicsit hardverközelibb.

     Korábban irtam volt a wireless modulról, illetve a kameráról is. Hardveres témában az volt a következő a "to do" listámon, hogy az FPGA bordomat bővítsem mégegy RS232-es egységgel, hogy mindkettővel tudjak valós időben kommunikálni. (Persze a tesztelési fázis alatt az is elég, ha az egyik soros eszközön leolvasott adatokat el tudom küldeni a másik soros eszközönk keresztűl a számítógépnek...)

    A következő konfigurációból indultunk ki. Adott egy Nexys 2-s fejlesztőpanel:

Ezen felül rendelkezünk még egy RS232-es PMOD-al is,


valamint rendelkezésünkre áll a Xilinx SDK fejlesztőkörnyezet (újabb harminc napos licenszel). Kell még továbbá két darab soros átalakító kábel (mert a laptopon nincs soros bemenet). Egyiket egy rossz egérrel cseréltem, a másik jött a WiFly dobozban. Ha ezek mind megvannak, akkor már a nehezén túljutottunk.

     Most jön a kódolás. Létrehozunk egy új projektet, beállítjuk a fejlesztőpanelt, kiválasztjuk a perifériákat (itt az egyik soros eszközt, ami a fejlesztőpanelen rajta van, azt be is tudjuk rakni -automatice-). Ha elkészült a projekt, kigeneráljuk a download.bit-et, hogy lássuk, biztosan működik-e. (Nem egyszer szívtam meg, hogy már ez sem működött. Persze a saját kárán tanul az ember...) Ha működik, akkor hozzáadunk az IP Catalog-ból egy XPS Uart (Lite) IP-t,


hozzákötjük a Master PLB buszhoz, beállítjuk a lefoglalható memóriaterületet (64Kb), megadunk neki egy stílusos nevet (az én esetemben ez "RS232_SECOND" lett) és a portoknál beállítjuk, hogy az RX és TX külső elérésü portok lesznek. Ha ezt jól csináltuk, az External Ports alatt a következő látvány tárul a szemünk elé :

Persze a piros nyilacska nem lesz ott :P . Ezután a következő lépés a system.ucf-be beírni, hogy ezek a külsőnek deklarált portok a valóságban hová is fognak mutatni. Ez már elég trükkös, mert sok helyről kell összenézni az adatokat (nomeg kell ide a csillagok együttállása meg egy 38 jegyű prímszám is ahhoz, hogy működjön...). Nálam ez így nézett ki:

Itt az M14-M16 kombinációt eltalálni majdnem olyan nehéz, mint az ötöslottó. Ezután kiegészítjük a programunkat a következő sorokkal :


//(...)
#include "xuartlite.h"

//====================================================

#define BAUDRATE 9600
#define USE_PARITY 0
#define PARITY_ODD 1
#define DATABITS 8

//====================================================

int main (void) {
//(...)

unsigned int i;

char hello[12]="Masik soros.";

XUartLite Second_Rs;

XUartLite_Config UART_Configuration;
UART_Configuration.DeviceId = XPAR_RS232_SECOND_DEVICE_ID;
UART_Configuration.RegBaseAddr = XPAR_RS232_SECOND_BASEADDR;
UART_Configuration.BaudRate = BAUDRATE;
UART_Configuration.UseParity = USE_PARITY;
UART_Configuration.ParityOdd = PARITY_ODD;
UART_Configuration.DataBits = DATABITS; 

 //UART init:
XUartLite_CfgInitialize (&Second_Rs, &UART_Configuration, XPAR_RS232_SECOND_BASEADDR) ;


   xil_printf("-- Egyik soros port --\r\n");
    
    while(XUartLite_IsSending(&Second_Rs));
    
    i = XUartLite_Send(&Second_Rs, (Xuint8*)(hello), 12);

   return 0;
}

     Persze a kód nem teljes, csak a fontosabb kiegészítéseket másoltam ide be. S ha minden jól működött és szerencsénk volt (és a megfelelő 38 jegyű prímszámot választottuk), akkor az egyik soros porton megjelenik az
"-- Egyik soros port --"
másikon pedig a

"Masik soros."

szöveg. Ha valamit nem jól csináltunk és épp nem a mi munkánkkal vannak elfoglalva az Istenek, akkor még azt is meg kell nézni, hogy hogyan állnak a jumperek a PMod-on. A Pmod-ról annyit kell még tudni, hogy kétféleképpen lehet konfigurálni. Az egyik működési forma a háromszálas (RXD, TXD, GND), a másik az ötszálas (CTS, RTS, RXD, TXD, GND). Mi az előbbit részesítjük előnyben. Emiatt az egyes jumper nyitott állapotban, a kettes pedig zárt állapotban kell legyen, hogy a működés esélyeit növeljük.

(A képeket köszönjük a Digilentnek. Sajnos az én fényképezőgépemmel nem sikerült ilyen szépet készíteni...)

     Röviden ennyi volt a mai teljesítmény. Pénteken felmegyek az egyetemre, s ha a rektorúr ott lesz, utánakérdezek a neuronháló tanításnak.

0 megjegyzés:

Megjegyzés küldése

Return top