PaulStoffregen / Ethernet

Ethernet library for Teensy (Wiznet W5100 / W5200 / W5500)
http://www.pjrc.com/teensy/td_libs_Ethernet.html
130 stars 83 forks source link

Register addresses for W5500 are not correct #47

Open gudnimg opened 4 years ago

gudnimg commented 4 years ago

https://github.com/arduino-libraries/Ethernet/issues/140

See https://github.com/arduino-libraries/Ethernet/issues/84 I want to break the issue into a smaller part since the original issue has more proposed changes than this.

This issue relates only to the wrong addresses and nothing more.

The register addresses for W5500 can be found in the datasheet (v1.0.9) at page 29 / 66 (I posted an image below)


Current w5100.h

__GP_REGISTER16(RTR, 0x0017);      // Timeout address
__GP_REGISTER8 (RCR, 0x0019);      // Retry count
__GP_REGISTER8 (RMSR, 0x001A);     // Receive memory size (W5100 only)
__GP_REGISTER8 (TMSR, 0x001B);     // Transmit memory size (W5100 only)
__GP_REGISTER8 (PATR, 0x001C);     // Authentication type address in PPPoE mode
__GP_REGISTER8 (PTIMER, 0x0028);   // PPP LCP Request Timer
__GP_REGISTER8 (PMAGIC, 0x0029);   // PPP LCP Magic Number
__GP_REGISTER_N(UIPR, 0x002A, 4);  // Unreachable IP address in UDP mode (W5100 only)
__GP_REGISTER16(UPORT, 0x002E);    // Unreachable Port address in UDP mode (W5100 only)

Proposed changes to w5100.h

__GP_REGISTER16(RTR, 0x0019);           // Timeout address
__GP_REGISTER8 (RCR, 0x001B);           // Retry count
__GP_REGISTER8 (PTIMER, 0x001C);        // PPP LCP Request Timer
__GP_REGISTER8 (PMAGIC, 0x001D);        // PPP LCP Magic Number
__GP_REGISTER_N(PHAR, 0x001E, 6);       // PPP Destination MAC address
__GP_REGISTER16(PSID, 0x0024);          // PPP Session ID
__GP_REGISTER16(PMRU, 0x0026);          // PPP Maximum Segment Size
__GP_REGISTER_N(UIPR, 0x0028, 4);       // Unreachable IP address in UDP mode (W5500 only)
__GP_REGISTER16(UPORT, 0x002C);         // Unreachable Port address in UDP mode (W5500 only)
__GP_REGISTER8 (PHYCFGR_W5500, 0x002E); // PHY Configuration register, default: 10111xxx

Notice above how

This would fix an issue where setRetransmissionTime() has no effect on W5500.

Quick view at the register map for W5500: image

For comparison here are the W5100 registers

image