Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2014:enc28j60

Toto je starší verze dokumentu!


Ethernet řadič ENC28J60

Milan Kotulek 2015/01/17 13:34


Zadání:

Připojte řadič ENC28J60 k desce FRDM-KL25Z, zprovozněte TCP/IP stack a vytvořte jednoduchý TELNET server, pomocí kterého bude možné příkazy ovládat RGB LED.


Cílem projektu je vytvořit jednoduchý TELNET server. Základním prvkem je vývojový kit FRDM-KL25Z propojený s obvodem ENC28J60 pomocí sběrnice SPI. Ten dokáže komunikovat přes ethernet s PC.

Blokové schéma

Zpracování

Projekt byl zpracován v prostředí mbed.ogr. V plánu bylo využití jeho výhod, neboli komunitně vytvářených programů. Našel jsem několik projektů o kterých jsem si myslel, že půjdou využít nakonec však žádný ze zde vytvořených nevyhovovalo. Nejblíže tomu co je cílem tohoto projektu je tento projekt, jenž je obsluhou obvodu ENC28J60. Je založen na autorově knihovně pro ENC28J60 desku. Plně potporuje TCP / IP a UDP připojení jak klienta tak serveru, ARP, ICMP, DHCP a DNS.


S jeho implementací jsem narazil na problém, když jsem ho použil objevila se spousta varování snimiž jsem si nevěděl rady. Zkusil jsem je ignorovat a vyzkoušet zda program něco dělá. Lehce se ztrácím v kódu c++, ale je vidět, že obsahuje kontrolu zda je program v běhu a data jsou posílána. Sprovoznil jsem sériovou komunikaci přes COM a zjištoval kde je problém. Nepodařilo se mi však najít kde je problém. Rozhodl jsem se tak pro psaní vlastního programu.


ENC28J60 komunikuje po rozhraní SPI. Celkově se využívá pouze sedmi instrukcí. Kontroler má však celkem 32 registrů dělených do 4 bank, jež se vybírají nastavením ve dvou nejvýznačnějších registrech ECON1/ECON2. Chtěl jsem taky využít mbed SDK funce pro SPI implemetované v knihovně mbed.h, ale ikdyž je u ní napsáno „Number of bits per SPI frame (4 - 16)“ tak tomu tak není. Dovolí zapisovat jen 8 bitů. Tak jsem zkusil přečíst kontrolní regist jak ukazuje obrázek vlevo. Další problém. Jak něco přečíst? přímo funkce na to není a návod v knihovně doporučuje postup ukázaný níže. Vyzkoušel jsem ho tedy i se změnou adresy a nic. Takto se číst nedá.

    spi.format(8,0);// Setup the spi for 8 bit data, high steady state clock,
    spi.frequency(1000000);// second edge capture, with a 1MHz clock rate
 
cs = 0;// Select the device by seting chip select low
    spi.write(0x1F);  // Send 0x--, the command to read the --- register
 
    int read = spi.write(0x00); // Send a dummy byte to receive the contents of the WHOAMI register
    pc.printf("register read= 0x%X\n\r", read);

Inicializace - nastavení bufferu - receive filter -ost? -MAC nastaveni


Závěr:

Při tvorbě tohoto projektu mě zastavila neznalost C++ a obsáhlost nastavení ENC28J60. Podařilo se mi vše zapojit a propojit. Dále jsem chtěl využít výhodn online prostředí mbed a to komunitního vývoje, ale program zde již napsaný pro ovládání ENC28J60 je tak složitý, že jsem ho se svou skromnou znalostí C++ nedokázal upravit do provozuschopné podoby. Měl jsem se radši pustit do vlastního projektu od začátku v offline prostředí s čistým C jazykem. Takto jsem stihl pouze sepsat základní nastavení posílané po SPI.


2014/enc28j60.1421592940.txt.gz · Poslední úprava: 2015/01/18 15:55 autor: Milan Kotulek