User Tools

Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

lab:lab5 [2016/05/25 18:02]
andrei [dot] voinescu [at] upb [dot] ro [2. Tema laboratorului]
lab:lab5 [2017/02/24 10:06] (current)
Line 8: Line 8:
  
 ENC28J60 incorporeaza urmatoarele module: ENC28J60 incorporeaza urmatoarele module:
-        *   Interfata SPI - canal de comunicatie cu controllerul gazda.+        *   Interfata SPI - canal de comunicatie cu controller-ul gazda.
         *   Registri de control - controlul si monitorizarea ENC28J60.         *   Registri de control - controlul si monitorizarea ENC28J60.
         *   Memorie Ram dual port - buffer pentru pachetele receptionate si trimise.         *   Memorie Ram dual port - buffer pentru pachetele receptionate si trimise.
Line 24: Line 24:
  
 == 1.1.1. Registre de control == == 1.1.1. Registre de control ==
-Acestea asigura interfata principala intre controllerul gazda si logica controllerului Ethernet. Scriere si citirea acestor registre se poate face in mod direct de controllerul gazda utilizand SPI, acesta avand astfel controlul asupra operatiilor executate de ENC28J60.+Acestea asigura interfata principala intre controller-ul gazda si logica controller-ului Ethernet. Scriere si citirea acestor registre se poate face in mod direct de controller-ul gazda utilizand SPI, acesta avand astfel controlul asupra operatiilor executate de ENC28J60.
  
 Registrele de control sunt in general grupate in registre de tip ETH, MAC si MII (Media Independent Interface). Ne putem da seama din ce categorie face parte un registru uitandu-ne la prefixul numelui sau. Registrele de control sunt in general grupate in registre de tip ETH, MAC si MII (Media Independent Interface). Ne putem da seama din ce categorie face parte un registru uitandu-ne la prefixul numelui sau.
Line 38: Line 38:
           *  0 = logica de transmisie este idle           *  0 = logica de transmisie este idle
         *   RXEN: Receive Enable bit         *   RXEN: Receive Enable bit
-          *  1 = pachetele care nu au fost filtrate vor fi scrise in bufferul de receive+          *  1 = pachetele care nu au fost filtrate vor fi scrise in buffer-ul de receive
           *  0 = toate pachetele vor fi ignorate           *  0 = toate pachetele vor fi ignorate
         *   BSEL1:BSEL0: Bank Select bits         *   BSEL1:BSEL0: Bank Select bits
Line 50: Line 50:
 == 5.1.2. Ethernet buffer == == 5.1.2. Ethernet buffer ==
  
-Bufferul Ethernet reprezinta acea zona de memorie in/din care ENC28J60 va scrie/citi pachetele receptionate sau transmise. Capacitatea bufferului este de 8Kbytes si este impartit in doua zone distincte pentru pachete receptionate si transmise. Dimensiunea si locatia celor doua zone de memorie +Buffer-ul Ethernet reprezinta acea zona de memorie in/din care ENC28J60 va scrie/citi pachetele receptionate sau transmise. Capacitatea buffer-ului este de 8Kbytes si este impartit in doua zone distincte pentru pachete receptionate si transmise. Dimensiunea si locatia celor doua zone de memorie 
-sunt configurabile de catre controllerul gazda prin intermediul SPI.+sunt configurabile de catre controller-ul gazda prin intermediul SPI.
  
-        *   **Receiver Buffer** - este organizat ca un buffer circular FIFO, controlat de hardware. Perechile de registri ERXSTH:ERXSTL si ERXNDH:ERXNDL sunt folositi ca pointeri spre inceputul si sfarsitul bufferului. Hardware-ul are grija ca pachetele sa fie dispuse in mod circular in spatiul dintre cei doi pointeri. +        *   **Receiver Buffer** - este organizat ca un buffer circular FIFO, controlat de hardware. Perechile de registri ERXSTH:ERXSTL si ERXNDH:ERXNDL sunt folositi ca pointeri spre inceputul si sfarsitul buffer-ului. Hardware-ul are grija ca pachetele sa fie dispuse in mod circular in spatiul dintre cei doi pointeri. 
-        *  ** Transmit Buffer** - orice spatiu care nu este folosit pentru receive din cei 8Kbytes, este folosit ca buffer de transmit. Cand controllerul gazda vrea sa trimita un pachet, pune in registrii ETXST si ETXND adresele de inceput si de sfarsit ale respectivului pachet. Hardware-ul NU verifica daca acesti pointeri sunt in spatiul de transmit. Este responsabilitatea controllerului gazda ca adresele furnizate sa fie corecte.+        *  ** Transmit Buffer** - orice spatiu care nu este folosit pentru receive din cei 8Kbytes, este folosit ca buffer de transmit. Cand controller-ul gazda vrea sa trimita un pachet, pune in registrii ETXST si ETXND adresele de inceput si de sfarsit ale respectivului pachet. Hardware-ul NU verifica daca acesti pointeri sunt in spatiul de transmit. Este responsabilitatea controller-ului gazda ca adresele furnizate sa fie corecte.
  
 {{:pm:lab:lab6_fig4.jpg|}} {{:pm:lab:lab6_fig4.jpg|}}
Line 61: Line 61:
 == 1.1.3. Registri PHY == == 1.1.3. Registri PHY ==
  
-Permit configurarea si controlul modulului Nivel Fizic. Spre deosebire de registrii de control si de bufferul Ethernet, registrii PHY nu pot fi modificati in mod direct de controllerul gazda prin SPI. Pentru a avea acces la acestia, controllerul ii poate accesa indirect prin intremediul registrilor de control de tip MII.+Permit configurarea si controlul modulului Nivel Fizic. Spre deosebire de registrii de control si de buffer-ul Ethernet, registrii PHY nu pot fi modificati in mod direct de controller-ul gazda prin SPI. Pentru a avea acces la acestia, controller-ul ii poate accesa indirect prin intremediul registrilor de control de tip MII.
  
 === 1.2. Implementarea SPI la ENC28J60 === === 1.2. Implementarea SPI la ENC28J60 ===
  
-Controllerul Ethernet ENC28J60 este proiectat pentru a se conecta cu usurinta la portul de SPI al celor mai multe microcontrollere.+Controller-ul Ethernet ENC28J60 este proiectat pentru a se conecta cu usurinta la portul de SPI al celor mai multe microcontroller-e.
  
 {{:pm:lab:lab6_fig5.jpg|}} {{:pm:lab:lab6_fig5.jpg|}}
  
-Functionarea ENC28J60 depinde in totalitate de comenzile primite de la controllerul gazda, de aceea in continuare ne vom uita la forma pe care o au aceste comenzi SPI.+Functionarea ENC28J60 depinde in totalitate de comenzile primite de la controller-ul gazda, de aceea in continuare ne vom uita la forma pe care o au aceste comenzi SPI.
  
 {{:pm:lab:lab6_fig6.jpg|}} {{:pm:lab:lab6_fig6.jpg|}}
  
 **Generalitati legate de comenzile SPI:** **Generalitati legate de comenzile SPI:**
-      *   Comenzile sunt luate in considerare de ENC28J60 doar in momentul in care acesta este selectat -> controllerul gazda pune linia CS (SS) pe 0+      *   Comenzile sunt luate in considerare de ENC28J60 doar in momentul in care acesta este selectat -> controller-ul gazda pune linia CS (SS) pe 0
       *   O comanda se termina, punandu-se linia CS pe 1       *   O comanda se termina, punandu-se linia CS pe 1
-      *  ** Primul byte trimis de controllerul gazda spre cip este format din:**+      *  ** Primul byte trimis de controller-ul gazda spre cip este format din:**
                *   3 biti reprezentand codul operatiei                *   3 biti reprezentand codul operatiei
                *   5 biti reprezentand:                *   5 biti reprezentand:
-                       *   o constanta in cazul scrierii / citirii din bufferul Ethernet+                       *   o constanta in cazul scrierii / citirii din buffer-ul Ethernet
                        *   adresa unuia dintre cei 32 registri de control ai bank-ului curent in cazul accesului la un registru de control                        *   adresa unuia dintre cei 32 registri de control ai bank-ului curent in cazul accesului la un registru de control
 Sa analizam urmatoarele comenzi: Sa analizam urmatoarele comenzi:
       *  ** Read Control Register (RCR):**       *  ** Read Control Register (RCR):**
-               * Controllerul trimite doar un byte+               * Controller-ul trimite doar un byte
                     *   daca se doreste citirea dintr-un registru ETH, imediat dupa primirea comezii, ENC28J60 va incepe transmisia continutului registrului respectiv pe SO -> primul byte primit de controller pe linia de MISO va fi chiar informatia dorita (continutul registrului)                     *   daca se doreste citirea dintr-un registru ETH, imediat dupa primirea comezii, ENC28J60 va incepe transmisia continutului registrului respectiv pe SO -> primul byte primit de controller pe linia de MISO va fi chiar informatia dorita (continutul registrului)
                     *   daca se doreste citirea dintr-un registru MAC sau MII, prima data ENC28J60 va trimite un byte dummy, si abia apoi continutul registrului respectiv.                     *   daca se doreste citirea dintr-un registru MAC sau MII, prima data ENC28J60 va trimite un byte dummy, si abia apoi continutul registrului respectiv.
      *   ** Write Control Register (WCR):**      *   ** Write Control Register (WCR):**
-       *   Controllerul va trimite 2 octeti, despre primul am vorbit, iar al doilea este byte-ul care va fi scris la adresa registrului specificat.+       *   Controller-ul va trimite 2 octeti, despre primul am vorbit, iar al doilea este byte-ul care va fi scris la adresa registrului specificat.
 ==== 2. Tema laboratorului ==== ==== 2. Tema laboratorului ====
  
Line 106: Line 106:
         *   enc28j60.c: implementara functiilor de citire si scriere in/din ENC28J60.         *   enc28j60.c: implementara functiilor de citire si scriere in/din ENC28J60.
         *   main.c: configurarea ceasului (vezi laboratorul 2)         *   main.c: configurarea ceasului (vezi laboratorul 2)
 +
lab/lab5.1464199359.txt.gz · Last modified: 2016/05/25 18:02 by andrei [dot] voinescu [at] upb [dot] ro