MQTT client to test the ENC28J60-EMAC on NUCLEO-F446RE.

Dependencies:   ENC28J60-EMAC

Committer:
hudakz
Date:
Mon Mar 29 09:32:44 2021 +0000
Revision:
5:d9570dbf2f82
Parent:
0:238f0d0c0ba3
MQTT client to test the ENC28J60-EMAC on NUCLEO-F446RE.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hudakz 0:238f0d0c0ba3 1 # mbed OS Ethernet MAC (EMAC) driver for the ENC28J60 Ethernet controller
hudakz 0:238f0d0c0ba3 2 and modules equipped with such chip.
hudakz 0:238f0d0c0ba3 3
hudakz 0:238f0d0c0ba3 4 This is a fork (simplified version) of the ENC28J60-EMAC driver published by Tobias Jaster at
hudakz 0:238f0d0c0ba3 5
hudakz 0:238f0d0c0ba3 6 https://github.com/tobiasjaster/ENC28J60-EMAC-Driver
hudakz 0:238f0d0c0ba3 7
hudakz 0:238f0d0c0ba3 8 Usage:
hudakz 0:238f0d0c0ba3 9
hudakz 0:238f0d0c0ba3 10 1. Connect the ENC28J60 module to the Mbed board as follows:
hudakz 0:238f0d0c0ba3 11
hudakz 0:238f0d0c0ba3 12
hudakz 0:238f0d0c0ba3 13 ------------- SPI interface --------------
hudakz 0:238f0d0c0ba3 14 | |
hudakz 0:238f0d0c0ba3 15 MOSI |----------------------| MOSI
hudakz 0:238f0d0c0ba3 16 | |
hudakz 0:238f0d0c0ba3 17 MISO |----------------------| MISO
hudakz 0:238f0d0c0ba3 18 Mbed | | ENC28J60
hudakz 0:238f0d0c0ba3 19 board SCK |----------------------| SCK module
hudakz 0:238f0d0c0ba3 20 | |
hudakz 0:238f0d0c0ba3 21 CS |----------------------| CS
hudakz 0:238f0d0c0ba3 22 | |
hudakz 0:238f0d0c0ba3 23 GND |----------------------| GND
hudakz 0:238f0d0c0ba3 24 | |
hudakz 0:238f0d0c0ba3 25 ------------- --------------
hudakz 0:238f0d0c0ba3 26
hudakz 0:238f0d0c0ba3 27 2. Import (add) this ENC28J60-EMAC library to your program.
hudakz 0:238f0d0c0ba3 28
hudakz 0:238f0d0c0ba3 29 3. Add a "mbed_app.json" file with the following content
hudakz 0:238f0d0c0ba3 30 to the root directory of your program:
hudakz 0:238f0d0c0ba3 31
hudakz 0:238f0d0c0ba3 32 {
hudakz 0:238f0d0c0ba3 33 "target_overrides": {
hudakz 0:238f0d0c0ba3 34 "*": {
hudakz 0:238f0d0c0ba3 35 "platform.callback-nontrivial": true,
hudakz 0:238f0d0c0ba3 36 "enc28j60-emac.mosi": "D11",
hudakz 0:238f0d0c0ba3 37 "enc28j60-emac.miso": "D12",
hudakz 0:238f0d0c0ba3 38 "enc28j60-emac.sck" : "D13",
hudakz 0:238f0d0c0ba3 39 "enc28j60-emac.cs" : "D10"
hudakz 0:238f0d0c0ba3 40 }
hudakz 0:238f0d0c0ba3 41 }
hudakz 0:238f0d0c0ba3 42 }
hudakz 0:238f0d0c0ba3 43
hudakz 0:238f0d0c0ba3 44 Replace "D11", ..., "D10" with the actual pin names you have selected on the Mbed board
hudakz 0:238f0d0c0ba3 45 to be used for the SPI communication.
hudakz 0:238f0d0c0ba3 46
hudakz 0:238f0d0c0ba3 47 4. To set the MAC address define an array with the desired address bytes and
hudakz 0:238f0d0c0ba3 48 call the "set_hwaddr(mac)" function before calling the network interface "connect" function.
hudakz 0:238f0d0c0ba3 49
hudakz 0:238f0d0c0ba3 50 For example:
hudakz 0:238f0d0c0ba3 51
hudakz 0:238f0d0c0ba3 52 const uint8_t MAC[6] = { 0, 1, 2, 3, 4, 5 };
hudakz 0:238f0d0c0ba3 53 EthernetInterface net;
hudakz 0:238f0d0c0ba3 54
hudakz 0:238f0d0c0ba3 55 int main()
hudakz 0:238f0d0c0ba3 56 {
hudakz 0:238f0d0c0ba3 57 net.get_emac().set_hwaddr(MAC); // set MAC address
hudakz 0:238f0d0c0ba3 58 if (net.connect() != 0) {
hudakz 0:238f0d0c0ba3 59 printf("Error: Unable to connect to the network.\n");
hudakz 0:238f0d0c0ba3 60 return -1;
hudakz 0:238f0d0c0ba3 61 }
hudakz 0:238f0d0c0ba3 62
hudakz 0:238f0d0c0ba3 63 ...
hudakz 0:238f0d0c0ba3 64