Silicon Labs Si4735 LW/SW/AM/FM Stereo/RDS single-chip receiver HAL library for Arduino
C++ Other
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 52 commits ahead, 4 commits behind jjcarrier:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Arduino Si4735 (and family) Library

Written by Ryan Owens for SparkFun Electronics on 5/17/2011
Altered by Wagner Sartori Junior <> on 9/13/2011
Actively being developed by Jon Carrier <>
Refactoring, cosmetic changes and I2C mode by Radu - Eosif Mihailescu <> 3/29/2012
Painstaking hardware testing by Todd Scott Canaday <> 4/03/2012
I2C bug fixes pointed out by Ray Dees 4/03/2012
Bug spotting in begin() -> setMode() interaction by Albert Tejera 5/24/2012

This library is intended for use with the SparkFun Si4735 Shield or Breakout
Board, however it should work with most Si47xx chips that share the same command
language. At the time of this writing, the list includes: Si4704->Si4707,
Si471x, Si472x, Si473x, Si4784 and Si4785.

Originally released under the 'Buy Me a Beer' license (if we ever meet, you
buy me a beer).

To the furthest extent that this is legally possible, the fork maintained by
Radu - Eosif Mihailescu and published here
is hereby released under the LGPL version 3.
To the furthest extent that this is legally enforceable, the copyright remains
with the authors listed above.

See the example sketches to learn how to use the library in your code. Note
that the RDS decoding functionality has moved to the RDSDecoder library.

 * The Si4735 is a 3.3V I/O chip whereas the Arduino Uno/Mega are 5V I/O. This
   means you will need to use logic level shifters if you are trying to use
   the Breakout Board version with the latter.
   If you're using the Shield, you should be OK save for a few fatal design
   mistakes SparkFun introduced. There are various ways to work around those, my
   personal recommendation is that you go for a real level shifter.
   Please note that BOB-12009 is cheaper than BOB-11771 mainly because it's a
   lot slower. For casual applications speed shouldn't matter, but if you need
   to push the SPI interface to its limit, go for the expensive version if you
   need to translate between a 5V I/O Arduino and the Si4735. On the same vein,
   ONLY the BOB-11955 will work for logic level shifting in I2C mode.
 * If you're using the Breakout Board, make sure you tell the code whether or
   not you connected a 32768Hz oscillator to the RCLK and DCLK pins. See the
   schematic for the Shield for reference.
 * Quick connection reference:
   SPI Mode, Si4735 -> Arduino:
     SDIO      -> MOSI    (Arduino output)
     GPO1      -> MISO    (Arduino input)
     SCLK      -> SCK     (Arduino output)
     #SEN      -> SS      (Arduino output)
     #RESET    -> D9      (Arduino output)
     GPO2/#INT -> D2/INT0 (Arduino bidirectional)
   I2C Mode, Si4735 -> Arduino:
     SDIO      -> SDA     (Arduino bidirectional)
     SCLK      -> SCL     (Arduino output)
     #SEN      -> tied high or low, tell the code which one with
     #RESET    -> D9      (Arduino output)
     GPO1      -> left floating
     GPO2/#INT -> D2/INT0 (Arduino input)
                  or (left floating or tied high, if not using interrupts)

For general questions and updates on this library please contact the fork
maintainer at <>.