Arduino Leonardo - SI4703

Hello, I'm trying to use a SI4703 breakout board with an Arduino Leonardo but cant get it working. I've tried many libraries out there (Sparkfun, SI's, another one I can't remember) but with all libraries I get the same problem. First of all I tweaked the code to match Leonardo's Pin so I have this connections:

| Breakout | | Leonardo | | - | - | | SDIO | | D2 | | SCLK | | D3 | | RST | | D4 | | Vdd | | 3.3V | | GND | | GND |

I also changed the sketch to include

while(!Serial){

}

On my Serial Monitor I see the setup's output but I cannot control the chip (with the commands shown) and the monitor freezes until I restart the board. |469x500

After some digging into code I think I found out that the software stucks on the chip init phase when trying to read the registers. Do you have any idea on what's going on? Here's my breakout: |375x500 |375x500

and for code I used SI's library after changing Wire.recieve() -> Wire.read() and Wire.send() -> Wire.write().

and for code I used SI's library after changing Wire.recieve() -> Wire.read() and Wire.send() -> Wire.write().

That doesn't tell us much about YOUR code. Post it.

Maybe i wasn’t so clear. I used the example with some tweaks. Here’s the Library files and the sketch with all the changes I made. I also included some comments about the changes and where the problem I think is.

Si4703_Radio_Test.ino (2.06 KB)

Si4703_Breakout.h (3.97 KB)

Si4703_Breakout.cpp (8.02 KB)

Hi there,

I know I’m replying to a thread several years ago…but I have exactly the same problem, and despite much scouring this is the only other example I’ve found with the same symptom.

I’m using the same library Si4703_Breakout.h with code examples off Sparkfun, Instructables, and Github including …Radio_Test… above. I’ve also tried another Si4703 library I found on Github, but same result.

By playing around with ordering in setup() I’ve identified the code stalls at the initialisation call to radio.powerOn(). I’ve left out loop() below as I’m not getting there, the code I’m using is below.

Board is an Arduino Duemilanove (seems to work well on all other projects, and is used on several published projects I’ve seen).

#include <Si4703_Breakout.h>
#include <Wire.h>

const int resetPin = 2;
const int SDIO = A4;
const int SCLK = A5;

Si4703_Breakout radio(resetPin, SDIO, SCLK);
int channel;
int volume;
char rdsBuffer[10];

void setup()
{
Serial.begin(9600);
Serial.println("\n\nSi4703_Breakout Test Sketch");
Serial.println("===========================");
radio.powerOn();

Serial.println(“a b Favourite stations”);
Serial.println("+ - Volume (max 15)");
Serial.println(“u d Seek up / down”);
Serial.println(“r Listen for RDS Data (15 sec timeout)”);
radio.setVolume(0);
Serial.println(“Send me a command letter.”);

}

Hello, I too have run into the problem described above. However, I am using an Arduino Due.

I have the SparkFun library and example. The only modification is commenting out the CHIPID declaration in the.h file. The CHIPID does not appear to be referenced anywhere than the declaration and has a conflict with some code native to the Due.

Any luck resolving the issues?

thanks for any help. Chris