How to detect whether the chip is a 5100s or a 5500


How can a driver detect whether a w5100s or w5500 is present? Each chip has a different chip version register. Is there a set of register calls that can reliably differentiate between the two chips?



The W5500 and W5100S chips have a version register.
Both appear when a register value is read, and the
0x51 for the W5100S and 0x04 for the W5500
will be returned.

[RO] [0x0080] [0x51]

[R] [0x0039] [0x04]

Thank youcc

Hi Louis,

Thanks for your reply. May I ask a follow up question?

Assuming that the registers are read immediately after the chip has been reset:

  1. Reading 0x0039 on a 5500 returns 0x04 and on a 5100s it returns 0x00 because the PSIDR defaults to 0x0000 ?
  2. Reading 0x0080 on a W5100s returns 0x51. Is it impossible for this register to return 0x51 on a 5500 (this address is in the reserved range) ?

Thanks again,

Reading the version register of the W5100S chip returns a value of 0x51, and reading the version register of the W5500 chip returns a value of 0x04.
It does not return a value of 0x55 on the W5500.