Home Code S14703 fm radio example

S14703 fm radio example

by shedboy71

The Si4702/03 integrates the complete tuner function from antenna input to stereo audio output for FM broadcast radio reception

The Si4703-C incorporates a digital processor for the European Radio Data System (RDS) and the US Radio Broadcast Data System (RBDS) including all required symbol decoding, block synchronization, error
detection, and error correction functions. RDS enables data such as station identification and song name to be displayed to the user. The Si4703-C offers a detailed RDS view and a standard view,
allowing adopters to selectively choose granularity of RDS status, data, and block errors

The Si4702/03-C19’s patented digital low-IF architecture reduces external components and eliminates the need for factory adjustments. The receive (RX) section integrates a
low noise amplifier (LNA) supporting the worldwide FM broadcast band (76 to 108 MHz). An automatic gain control (AGC) circuit controls the gain of the LNA to optimize sensitivity and rejection of strong interferers

https://www.silabs.com/Support%20Documents/TechnicalDocs/Si4702-03-C19-short.pdf

Si4702_03_BD

Features

  • Worldwide FM band support (76–108 MHz)
  • Seek tuning
  • Automatic frequency control (AFC)
  • Automatic gain control (AGC)
  • Excellent overload immunity
  • Programmable de-emphasis (50/75 µs)
  • Adaptive noise suppression

 

Connection

  • 3V      of      Arduino -> VCC     of    Si4703
  • GND  of      Arduino ->  GND   of     Si4703
  • A5     of      Arduino ->  SCLK  of     Si4703
  • A4     of      Arduino -> SDIO   of     Si4703
  • D2     of      Arduino ->  RST    of      Si4703

 

Code

I used the Sparkfun library at https://github.com/sparkfun/Si4703_FM_Tuner_Evaluation_Board

There is also a an excellent library which caters for a couple of FM radio ICs from https://github.com/mathertel/Radio , i tested this as well

This example is hard coded for a set frequency – 97.9 which is radio 1

#include <SparkFunSi4703.h>
#include <Wire.h>
 
int resetPin = 2;
int SDIO = A4;
int SCLK = A5;
 
Si4703_Breakout radio(resetPin, SDIO, SCLK);
int channel;
int volume;
 
 
void setup()
{
  Serial.begin(9600);
  Serial.println("\n\nSi4703_Breakout Test Sketch");
  radio.powerOn();
  radio.setVolume(1);
}
 
void loop()
{
 
  channel = 979; // BBC R1
  radio.setChannel(channel);
  displayInfo();
}
 
void displayInfo()
{
   Serial.print("Channel:"); 
   Serial.print(channel); 
   Serial.print(" Volume:");
   Serial.println(volume); 
}

 

Links
Si4703 FM Tuner Evaluation Board Radio Tuner Board

Share

You may also like

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More