

The SI470X is a low-power FM radio receiver IC designed for portable applications. It features a built-in digital signal processing (DSP) engine that ensures high-quality audio reception. The chip supports various audio formats and is controlled via an I2C interface, making it highly versatile and easy to integrate into microcontroller-based systems. Its compact design and low power consumption make it ideal for use in portable devices such as MP3 players, smartphones, and handheld radios.








| Parameter | Value |
|---|---|
| Operating Voltage | 2.7V to 5.5V |
| Operating Current | 19 mA (typical) |
| Frequency Range | 76 MHz to 108 MHz |
| Audio Output | Analog stereo |
| Interface | I2C |
| Sensitivity | -110 dBm |
| Signal-to-Noise Ratio | 60 dB (typical) |
| Package Type | QFN-20 |
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | GND | Ground |
| 2 | VDD | Power supply input |
| 3 | RFGND | RF ground |
| 4 | LOUT | Left audio output |
| 5 | ROUT | Right audio output |
| 6 | SCLK | I2C clock input |
| 7 | SDIO | I2C data input/output |
| 8 | RST | Reset pin (active low) |
| 9 | ANTENNA | FM antenna input |
| 10 | GPIO1 | General-purpose I/O pin 1 |
| 11 | GPIO2 | General-purpose I/O pin 2 |
| 12-20 | NC | Not connected |
Below is an example of how to interface the SI470X with an Arduino UNO to receive FM radio signals.
| SI470X Pin | Arduino UNO Pin |
|---|---|
| VDD | 3.3V |
| GND | GND |
| SCLK | A5 (SCL) |
| SDIO | A4 (SDA) |
| RST | Digital Pin 2 |
| LOUT/ROUT | Audio Amplifier |
#include <Wire.h>
#include <SI470X.h> // Include the SI470X library
SI470X radio; // Create an instance of the SI470X class
void setup() {
Wire.begin(); // Initialize I2C communication
Serial.begin(9600); // Initialize serial communication for debugging
pinMode(2, OUTPUT); // Set the reset pin as output
digitalWrite(2, LOW); // Hold the SI470X in reset
delay(100); // Wait for 100ms
digitalWrite(2, HIGH); // Release the reset pin
if (!radio.begin()) {
Serial.println("Failed to initialize SI470X!");
while (1); // Halt if initialization fails
}
radio.setFrequency(101.1); // Set the FM frequency to 101.1 MHz
Serial.println("Radio initialized and tuned to 101.1 MHz");
}
void loop() {
// Continuously monitor signal strength
int signalStrength = radio.getSignalStrength();
Serial.print("Signal Strength: ");
Serial.println(signalStrength);
delay(1000); // Wait for 1 second before updating
}
SI470X library in the Arduino IDE before uploading the code.setFrequency() function to tune to your desired FM station.No Audio Output
I2C Communication Failure
Poor Signal Reception
Chip Not Initializing
Q: Can the SI470X receive AM radio signals?
A: No, the SI470X is designed specifically for FM radio reception.
Q: What is the maximum distance for FM signal reception?
A: The reception range depends on the strength of the FM transmitter and the quality of the antenna. Typically, it can range from a few kilometers to tens of kilometers.
Q: Can I use the SI470X with a 5V microcontroller?
A: Yes, but ensure proper level shifting for the I2C lines if the microcontroller operates at 5V logic levels.
Q: Is an external crystal oscillator required?
A: No, the SI470X has an internal oscillator, but an external reference clock can be used for improved performance if needed.