Go Down

Topic: MFRC522 with Arduino Due on i2c (Read 410 times) previous topic - next topic

Vvamp

Hey guys,

For a school project I have to connect an RFID reader to my Arduino Due and control it over i2c.
Code-wise, I got it covered. The thing is, I can't seem to get the connections working.

According to some research I did, it seems the only way to get i2c working on this chip is to desolder the chip and cut a few wires. I'm not confident enough in my soldering skill to even attempt such a thing, as these wires are extremely small and I don't want to risk breaking it(it's cheap, but I currently don't have that much funds to spend and the delivery time would be really annoying as my deadline is only a few weeks away.

It would just seem really odd to me that this chip supports i2c, as covered in the docs, but to be able to use it I'd have to modify the chip.

Link to chip documentation: MFRC522.pdf

Currently I connected the chip to my arduino like this:
RFID-RC522Arduino Due
SDAPin 20
SCK(also tried mosi, which seems to be the SCL for i2c)Pin 21
GNDGND
3.3v3.3v


So, my question is, how can I connect the rfid chip to my arduino? And do I really have to resolder it and cut some wires?


ard_newbie

I don't see why you should have to cut some wires  :o

However, since you can select between I2C, SPI or UART, the datasheet (chap 8.1.1) states that for I2C you have to connect pin 1 from RC522 to select I2C. As I understand the datasheet, Table 5 gives the necessary connections to select I2C plus the I2C slave address.

Note that SDA/SCL of the DUE have already pull-ups unlike SDA1/SCL1. In MFRC522 datasheet, I see nowhere that this IC has integrated pull-ups for I2C --> SDA/SCL should be selected on the DUE.

After wiring correctly the MFRC522 with the DUE, you could start with an I2C scanner to check the DUE "sees" the I2C slave at the right address selected from your wiring.

Vvamp

#2
Jul 14, 2019, 08:28 pm Last Edit: Jul 14, 2019, 08:41 pm by Vvamp
Thanks for your reply!

As far as I know, the pins(like pin 1) are on the microcontroller thing(the black square). I can't connect things to them directly. I have 8 pins I can connect wires to, and I'm not sure how I'd be able to use those to select the i2c from that.

When I try to google it, all that comes up are people that are managing to get i2c working by either re-soldering some wires, or by drilling a hole at a certain place(reference, near the bottom of the page)

I can take a picture of the module itself to show what it is I'm working with if you want.

edit: here's a quote from a forum post where this was discussed.
Nice work @Netoperz

For I2C you definitely need to cut the trace grounding I2C (pin 1), but you don't have to unsolder the IC.
Just drill a neat little hole from the bottom side of the PC through the trace.
I used a 0.9 mm drill in a pin vise (that's a little holder like a jeweler's screwdriver, no motor).
Just drill carefully until you hit the copper, then keep on drilling until the copper is gone.
The location is just on the bottom of where the nice photos show the cut trace.

Photo shows location of drill hole, to the upper right of the center of the chip.

ard_newbie

#3
Jul 15, 2019, 06:27 am Last Edit: Jul 15, 2019, 06:56 am by ard_newbie
As per MFRC522 datasheet, pin 1 (I2C) has to be connected to 3.3V (logic level 1) to enable I2C communications.

Since your breakout board (MIFARE MFRC522 I guess)  is configured for SPI communication only, the schematic I found:

https://www.sunrom.com/p/mifare-rfid-readerwriter-1356mhz-rc522

shows that pin 1 is connected to GND (logic level 0). So yes, you have to cut this connection and connect pin 1 to 3.3V as shown in this thread:

https://forum.arduino.cc/index.php?topic=442750.0

Pin EA can be left as it is because you don't need all I2C addresses.


Ask your professor why you would not be using the SPI protocol with this board, since this board is primarily made to be used with SPI ! or be prepared to cut traces on the breakout board.

Go Up