Grove FM Receiver constant NACK from 0x10?

I was trying to follow along with the example in the wiki for the Grove I2C FM Receiver v1.1 and couldn’t get it to work (produced ID of 0xFFFF and didn’t respond to button/pot).

Wrote my own program just to see what endTransmission was returning when trying to writing to address 0x10 and kept getting a * 2:received NACK on transmit of address. So I ran the I2C scanner and found the module was at address 0x60. Changed the example to use the new address and still didn’t work.

Thinking maybe it was a faulty chip, I ran a scanner on a new module (I had two) - same address 0x60. After some searching and trying out several other libraries/examples on the RDA5807M, found out that the RDA5807M also has a clone built in of a TEA5767 that works off of address 0x60 (even though the datasheet nor wiki seems to make no mention of this). Installed the library for TEA5767 (just search for TEA5767 by Simon Monk in the library manager), ran the example, and it all is well with the world!

First - could anyone please explain how a chip labelled RDA5807 (I busted out the magnifier as well just to make sure the board had the correct chip on it) is running with code for another chip without (it seems) any mention of it anywhere?

Second - the RDA chip does seem to have advanced features (e.g. bass boost & RDS reading) - is there any way to get that to work with an Arduino? Are both my boards just bad?

Thanks.


This is the specification of the chip, which clearly states that the I2C address is 0x10. Please check your hardware connection and the link of I2C to ensure that the underlying software and hardware are normal.

I did reference the datasheet in my original post. My questions are why does it work at 0x60 and how were we supposed to find out that information if it is not in the datasheet? Sorry if the post title was a bit misleading.

Thanks for replying.

@mikefromstorming I understand your question, I also feel very strange, how do you use the hardware?Do you have any pictures?

Sure - using the grove beginner kit - not much to mess up :slight_smile:. Here is a pic of my setup.

Here is the results of the I2C scanner running on the board above:

and here is the example from the library that I found that works:grove fm working

Do you have any other Arduino UNO/Seeeduino? It may be that I2C devices directly interfere with each other, which is my guess, but it needs to be tested.

So tried the I2C scanner sketch on a dfrobot romeo v2.2 (a Leonardo clone) and I’m getting all three addresses for the fm receiver 0x10, 0x11, and 0x60 now!

I don’t have another Uno clone like the Seeeduino in the Grove beginner kit so I can’t confirm if it is just a difference in the ATmega328p and the ATmega32u4.

Any thoughts why 0x10 and 0x11 don’t work on the Seeeduino Lotus but do work on a Leonardo clone?

0x10 and 0x11 are available to work on Seeeduino Lotus, but Grove Beginner Kit is overloaded with equipment, resulting in abnormal bus communication.