Qwiic RFID Reader - change I2C address - cut jumper or add solder blob?

Hi,

I need to change I2C address from default 0x13 to the alternative 0x14

In the hookup guide it is written that this is done with the ADR jumper, but its not provided what the default state of the jumper is (open or closed).

I am unsure wether I need to cut the jumper through in the middle (which I did but it did not work) or add a solder blob to the jumper.

When I first cut the jumper it looked like there was a bridge between the 2 pads before, thats why I cut it. Only afterwards I noticed that the image in the hookup guide looks like as if there is no bridge between the pads per default.

The schematic shows that the default state is open, so you would need to bridge the pads with some solder to change the address.

There’s more to the puzzle. The schematic says the default (open jumper) is 0x13 and if the jumper is closed, is 0x14. The firmware on the ATTiny84 of the Qwiic RFID, however, allows more flexibility.

An open jumper causes A0 to read high, so the firmware sets the I2C address to the value stored in EEPROM. This defaults to 0x13, but can be set to anything between 0x08 and 0x77 by sending the changeAddress() function from the library. If you solder the jumper closed, A0 will read low, and the address will be fixed at 0x14 and cannot be changed without opening the jumper again.

2 Likes

Thank you @darrellg and @mdancer

I successfully changed the firmware with changeAddress() function, although I first made a mistake by trying to assign 0x07 as address which does not work, since the firmware code states:

if (newAddress < 0x07 || newAddress > 0x78) // Range of legal addresses
        return false; 

I assumed this means that everything below 0x07 and above 0x78 would return false; but in fact 0x07 does not work too, then the address stays at 0x13. I am a bit surprised since I would expect <= 0x07 to not accept 0x07, but <0x07..

Anyways, once the new address is set (which is permamently stored in EEPROM), the reader can be used using the new address.

It looks like the code you posted is from the Sparkfun library that sends commands to the RFID reader. From that, yes, 0x07 should be a valid address. BUT, the firmware (SparkFun_Qwiic_RFID_ID-XXLA/Firmware/ATtiny84_Firmware/Qwiic_RFID_IDXXLA/Qwiic_RFID_IDXXLA.ino at master · sparkfun/SparkFun_Qwiic_RFID_ID-XXLA · GitHub) does not allow 0x07 or 0x78.

image

So if you use the library to send 0x07, the library will report that everything is fine, but the ATTiny84 will reject it and keep using the old address.

Ah I see :slight_smile: thanks for the explanation.

Maybe Sparkfun can correct that in the library.

I have created a Github Ticket:

1 Like