Go Down

Topic: Arduino Leonardo - SI4703 (Read 508 times) previous topic - next topic

modaristis

Apr 25, 2016, 12:42 pm Last Edit: Apr 25, 2016, 12:50 pm by modaristis
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
Code: [Select]
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.


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:



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

PaulS

Quote
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.
The art of getting good answers lies in asking good questions.

modaristis

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.

Britespark

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.");
 

}


Go Up