Demo for the RawEthernet library: ENC28J60 ethernet controller optimized for speed. TCP/IP overhead is removed. Only plain Ethernet frames are used for communication.

Dependencies:   RawEthernet mbed

main.cpp

Committer:
hudakz
Date:
2018-08-20
Revision:
0:f1193d5dfe26

File content as of revision 0:f1193d5dfe26:

#include "mbed.h"
#include "RawEthernet.h"

#define BUF_SIZE 100

uint8_t  len;
uint8_t  buf[BUF_SIZE];

// Ethernet settings
uint8_t  myMac[6] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06};     // MAC address of this slave device
uint8_t  myIp[4] = {192, 168, 1, 191};                        // Dummy IP used to tell LAN switches about the existence of this device
uint8_t  remoteMac[6] = {0x52, 0x4f, 0x47, 0x49, 0x45, 0x52}; // MAC oddress of the master PC

DigitalOut  led1(LED1);
RawEthernet rawEthernet(PB_5, PB_4, PB_3, PB_6, myMac, myIp); // mosi, miso, sck, cs

int main()
{
    rawEthernet.linkTo(remoteMac);

    while (true) {
        len = rawEthernet.receive(buf, BUF_SIZE);
        if (len != 0) {
            // toggle LED to acknowledge reception of data
            led1 = !led1;
            
            // do some stuff with data

            // in this test echo the received data to the sender           
            rawEthernet.send(buf, len);
        }
    }
}