Jack Hansdampf
/
MQTT_HelloENC28J60
MQTT client to test the ENC28J60-EMAC on NUCLEO-L152RE
README.md@0:238f0d0c0ba3, 2021-03-26 (annotated)
- Committer:
- hudakz
- Date:
- Fri Mar 26 16:15:14 2021 +0000
- Revision:
- 0:238f0d0c0ba3
MQTT client to test the ENC28J60-EMAC on NUCLEO-F446RE.
Who changed what in which revision?
User | Revision | Line number | New 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 |