PU2CLR Si4735 Arduino Library  1.1.9
Arduino Library for Si47XX Devices - By Ricardo Lima Caratti
SI4735.h File Reference
#include <Arduino.h>
#include <Wire.h>

Go to the source code of this file.

Data Structures

union  si473x_powerup
 Power Up arguments data type. More...
 
union  si473x_gpio
 Data type for Enables output for GPO1, GPO2 and GPO3. More...
 
union  si473x_gpio_ien
 Data type for Configuring the sources for the GPO2/INT interrupt pin. More...
 
union  si47x_frequency
 Represents how the frequency is stored in the si4735. More...
 
union  si47x_antenna_capacitor
 Antenna Tuning Capacitor data type manupulation. More...
 
union  si47x_set_frequency
 AM Tune frequency data type command (AM_TUNE_FREQ command) More...
 
union  si47x_seek
 Seek frequency (automatic tuning) More...
 
union  si47x_status
 Status response data representation. More...
 
union  si47x_response_status
 Response status command. More...
 
union  si47x_firmware_information
 Data representation for Firmware Information (GET_REV) More...
 
union  si47x_firmware_query_library
 Firmware Query Library ID response. More...
 
union  si47x_tune_status
 Seek station status. More...
 
union  si47x_property
 Data type to deal with SET_PROPERTY command. More...
 
union  si47x_rqs_status
 Radio Signal Quality data representation. More...
 
union  si47x_rds_command
 Data type for RDS Status command and response information. More...
 
union  si47x_rds_status
 Response data type for current channel and reads an entry from the RDS FIFO. More...
 
union  si47x_rds_int_source
 FM_RDS_INT_SOURCE property data type. More...
 
union  si47x_rds_config
 Data type for FM_RDS_CONFIG Property. More...
 
union  si47x_rds_blocka
 Block A data type. More...
 
union  si47x_rds_blockb
 Block B data type. More...
 
union  si47x_rds_date_time
 
union  si47x_agc_status
 
union  si47x_agc_overrride
 
union  si47x_bandwidth_config
 
union  si47x_ssb_mode
 
union  si4735_digital_output_format
 Digital audio output format data structure (Property 0x0102. DIGITAL_OUTPUT_FORMAT). More...
 
struct  si4735_digital_output_sample_rate
 Digital audio output sample structure (Property 0x0104. DIGITAL_OUTPUT_SAMPLE_RATE). More...
 
class  SI4735
 SI4735 Class. More...
 
struct  si473x_powerup.arg
 
struct  si473x_gpio.arg
 
struct  si473x_gpio_ien.arg
 
struct  si47x_frequency.raw
 
struct  si47x_antenna_capacitor.raw
 
struct  si47x_set_frequency.arg
 
struct  si47x_seek.arg
 
struct  si47x_status.refined
 
struct  si47x_response_status.resp
 
struct  si47x_firmware_information.resp
 
struct  si47x_firmware_query_library.resp
 
struct  si47x_tune_status.arg
 
struct  si47x_property.raw
 
struct  si47x_rqs_status.resp
 
struct  si47x_rds_command.arg
 
struct  si47x_rds_status.resp
 
struct  si47x_rds_int_source.refined
 
struct  si47x_rds_config.arg
 
struct  si47x_rds_blocka.refined
 
struct  si47x_rds_blocka.raw
 
struct  si47x_rds_blockb.group0
 
struct  si47x_rds_blockb.group2
 
struct  si47x_rds_blockb.refined
 
struct  si47x_rds_blockb.raw
 
struct  si47x_rds_date_time.refined
 
struct  si47x_agc_status.refined
 
struct  si47x_agc_overrride.arg
 
struct  si47x_bandwidth_config.param
 
struct  si47x_ssb_mode.param
 
struct  si4735_digital_output_format.refined
 

Macros

#define POWER_UP_FM   0
 SI4735 ARDUINO LIBRARY
More...
 
#define POWER_UP_AM   1
 
#define POWER_UP_WB   3
 
#define POWER_PATCH   15
 
#define SI473X_ADDR_SEN_LOW   0x11
 
#define SI473X_ADDR_SEN_HIGH   0x63
 
#define POWER_UP   0x01
 
#define GET_REV   0x10
 
#define POWER_DOWN   0x11
 
#define SET_PROPERTY   0x12
 
#define GET_PROPERTY   0x13
 
#define GET_INT_STATUS   0x14
 
#define FM_TUNE_FREQ   0x20
 
#define FM_SEEK_START   0x21
 
#define FM_TUNE_STATUS   0x22
 
#define FM_AGC_STATUS   0x27
 
#define FM_AGC_OVERRIDE   0x28
 
#define FM_RSQ_STATUS   0x23
 
#define FM_RDS_STATUS   0x24
 
#define FM_RDS_INT_SOURCE   0x1500
 
#define FM_RDS_INT_FIFO_COUNT   0x1501
 
#define FM_RDS_CONFIG   0x1502
 
#define FM_RDS_CONFIDENCE   0x1503
 
#define FM_BLEND_STEREO_THRESHOLD   0x1105
 
#define FM_BLEND_MONO_THRESHOLD   0x1106
 
#define FM_BLEND_RSSI_STEREO_THRESHOLD   0x1800
 
#define FM_BLEND_RSSI_MONO_THRESHOLD   0x1801
 
#define FM_BLEND_SNR_STEREO_THRESHOLD   0x1804
 
#define FM_BLEND_SNR_MONO_THRESHOLD   0x1805
 
#define FM_BLEND_MULTIPATH_STEREO_THRESHOLD   0x1808
 
#define FM_BLEND_MULTIPATH_MONO_THRESHOLD   0x1809
 
#define AM_TUNE_FREQ   0x40
 
#define AM_SEEK_START   0x41
 
#define AM_TUNE_STATUS   0x42
 
#define AM_RSQ_STATUS   0x43
 
#define AM_AGC_STATUS   0x47
 
#define AM_AGC_OVERRIDE   0x48
 
#define GPIO_CTL   0x80
 
#define GPIO_SET   0x81
 
#define SSB_TUNE_FREQ   0x40
 
#define SSB_TUNE_STATUS   0x42
 
#define SSB_RSQ_STATUS   0x43
 
#define SSB_AGC_STATUS   0x47
 
#define SSB_AGC_OVERRIDE   0x48
 
#define DIGITAL_OUTPUT_FORMAT   0x0102
 
#define DIGITAL_OUTPUT_SAMPLE_RATE   0x0104
 
#define REFCLK_FREQ   0x0201
 
#define REFCLK_PRESCALE   0x0202
 
#define AM_DEEMPHASIS   0x3100
 
#define AM_CHANNEL_FILTER   0x3102
 
#define AM_AUTOMATIC_VOLUME_CONTROL_MAX_GAIN   0x3103
 
#define AM_MODE_AFC_SW_PULL_IN_RANGE   0x3104
 
#define AM_MODE_AFC_SW_LOCK_IN_RANGE   0x3105
 
#define AM_RSQ_INTERRUPTS   0x3200
 
#define AM_RSQ_SNR_HIGH_THRESHOLD   0x3201
 
#define AM_RSQ_SNR_LOW_THRESHOLD   0x3202
 
#define AM_RSQ_RSSI_HIGH_THRESHOLD   0x3203
 
#define AM_RSQ_RSSI_LOW_THRESHOLD   0x3204
 
#define AM_SOFT_MUTE_RATE   0x3300
 
#define AM_SOFT_MUTE_SLOPE   0x3301
 
#define AM_SOFT_MUTE_MAX_ATTENUATION   0x3302
 
#define AM_SOFT_MUTE_SNR_THRESHOLD   0x3303
 
#define AM_SOFT_MUTE_RELEASE_RATE   0x3304
 
#define AM_SOFT_MUTE_ATTACK_RATE   0x3305
 
#define AM_SEEK_BAND_BOTTOM   0x3400
 
#define AM_SEEK_BAND_TOP   0x3401
 
#define AM_SEEK_FREQ_SPACING   0x3402
 
#define AM_SEEK_SNR_THRESHOLD   0x3403
 
#define AM_SEEK_RSSI_THRESHOLD   0x3404
 
#define AM_AGC_ATTACK_RATE   0x3702
 
#define AM_AGC_RELEASE_RATE   0x3703
 
#define AM_FRONTEND_AGC_CONTROL   0x3705
 
#define AM_NB_DETECT_THRESHOLD   0x3900
 
#define AM_NB_INTERVAL   0x3901
 
#define AM_NB_RATE   0x3902
 
#define AM_NB_IIR_FILTER   0x3903
 
#define AM_NB_DELAY   0x3904
 
#define RX_VOLUME   0x4000
 
#define RX_HARD_MUTE   0x4001
 
#define GPO_IEN   0x0001
 
#define SSB_BFO   0x0100
 
#define SSB_MODE   0x0101
 
#define SSB_RSQ_INTERRUPTS   0x3200
 
#define SSB_RSQ_SNR_HI_THRESHOLD   0x3201
 
#define SSB_RSQ_SNR_LO_THRESHOLD   0x3202
 
#define SSB_RSQ_RSSI_HI_THRESHOLD   0x3203
 
#define SSB_RSQ_RSSI_LO_THRESHOLD   0x3204
 
#define SSB_SOFT_MUTE_RATE   0x3300
 
#define SSB_SOFT_MUTE_MAX_ATTENUATION   0x3302
 
#define SSB_SOFT_MUTE_SNR_THRESHOLD   0x3303
 
#define SSB_RF_AGC_ATTACK_RATE   0x3700
 
#define SSB_RF_AGC_RELEASE_RATE   0x3701
 
#define SSB_RF_IF_AGC_ATTACK_RATE   0x3702
 
#define SSB_RF_IF_AGC_RELEASE_RATE   0x3703
 
#define LSB_MODE   1
 
#define USB_MODE   2
 
#define SI473X_RDS_OUTPUT_ONLY   0b00000000
 
#define SI473X_ANALOG_AUDIO   0b00000101
 
#define SI473X_DIGITAL_AUDIO1   0b00001011
 
#define SI473X_DIGITAL_AUDIO2   0b10110000
 
#define SI473X_ANALOG_DIGITAL_AUDIO   0b10110101
 
#define FM_CURRENT_MODE   0
 
#define AM_CURRENT_MODE   1
 
#define SSB_CURRENT_MODE   2
 
#define MAX_DELAY_AFTER_SET_FREQUENCY   30
 
#define MAX_DELAY_AFTER_POWERUP   10
 
#define MIN_DELAY_WAIT_SEND_LOOP   300
 

Macro Definition Documentation

◆ POWER_UP_FM

#define POWER_UP_FM   0

SI4735 ARDUINO LIBRARY

This is an Arduino library for the SI47XX, BROADCAST AM/FM/SW RADIO RECEIVER IC family from Silicon Labs.

This library is intended to provide an easier interface for controlling the SI47XX by using Arduino platform.

The communication used by this library is I2C.

This file contains: const (#define), Defined Data type and Methods declarations

You can see a complete documentation on https://github.com/pu2clr/SI4735

The are more than 20 examples on https://github.com/pu2clr/SI4735/tree/master/examples

See also
https://pu2clr.github.io/SI4735/
Si47XX PROGRAMMING GUIDE AN332: https://www.silabs.com/documents/public/application-notes/AN332.pdf
AN332 REV 0.8 UNIVERSAL PROGRAMMING GUIDE; AMENDMENT FOR SI4735-D60 SSB AND NBFM PATCHES
Author
PU2CLR - Ricardo Lima Caratti
Date
2019-2020

◆ POWER_UP_AM

#define POWER_UP_AM   1

◆ POWER_UP_WB

#define POWER_UP_WB   3

◆ POWER_PATCH

#define POWER_PATCH   15

◆ SI473X_ADDR_SEN_LOW

#define SI473X_ADDR_SEN_LOW   0x11

◆ SI473X_ADDR_SEN_HIGH

#define SI473X_ADDR_SEN_HIGH   0x63

◆ POWER_UP

#define POWER_UP   0x01

◆ GET_REV

#define GET_REV   0x10

◆ POWER_DOWN

#define POWER_DOWN   0x11

◆ SET_PROPERTY

#define SET_PROPERTY   0x12

◆ GET_PROPERTY

#define GET_PROPERTY   0x13

◆ GET_INT_STATUS

#define GET_INT_STATUS   0x14

◆ FM_TUNE_FREQ

#define FM_TUNE_FREQ   0x20

◆ FM_SEEK_START

#define FM_SEEK_START   0x21

◆ FM_TUNE_STATUS

#define FM_TUNE_STATUS   0x22

◆ FM_AGC_STATUS

#define FM_AGC_STATUS   0x27

◆ FM_AGC_OVERRIDE

#define FM_AGC_OVERRIDE   0x28

◆ FM_RSQ_STATUS

#define FM_RSQ_STATUS   0x23

◆ FM_RDS_STATUS

#define FM_RDS_STATUS   0x24

◆ FM_RDS_INT_SOURCE

#define FM_RDS_INT_SOURCE   0x1500

◆ FM_RDS_INT_FIFO_COUNT

#define FM_RDS_INT_FIFO_COUNT   0x1501

◆ FM_RDS_CONFIG

#define FM_RDS_CONFIG   0x1502

◆ FM_RDS_CONFIDENCE

#define FM_RDS_CONFIDENCE   0x1503

◆ FM_BLEND_STEREO_THRESHOLD

#define FM_BLEND_STEREO_THRESHOLD   0x1105

◆ FM_BLEND_MONO_THRESHOLD

#define FM_BLEND_MONO_THRESHOLD   0x1106

◆ FM_BLEND_RSSI_STEREO_THRESHOLD

#define FM_BLEND_RSSI_STEREO_THRESHOLD   0x1800

◆ FM_BLEND_RSSI_MONO_THRESHOLD

#define FM_BLEND_RSSI_MONO_THRESHOLD   0x1801

◆ FM_BLEND_SNR_STEREO_THRESHOLD

#define FM_BLEND_SNR_STEREO_THRESHOLD   0x1804

◆ FM_BLEND_SNR_MONO_THRESHOLD

#define FM_BLEND_SNR_MONO_THRESHOLD   0x1805

◆ FM_BLEND_MULTIPATH_STEREO_THRESHOLD

#define FM_BLEND_MULTIPATH_STEREO_THRESHOLD   0x1808

◆ FM_BLEND_MULTIPATH_MONO_THRESHOLD

#define FM_BLEND_MULTIPATH_MONO_THRESHOLD   0x1809

◆ AM_TUNE_FREQ

#define AM_TUNE_FREQ   0x40

◆ AM_SEEK_START

#define AM_SEEK_START   0x41

◆ AM_TUNE_STATUS

#define AM_TUNE_STATUS   0x42

◆ AM_RSQ_STATUS

#define AM_RSQ_STATUS   0x43

◆ AM_AGC_STATUS

#define AM_AGC_STATUS   0x47

◆ AM_AGC_OVERRIDE

#define AM_AGC_OVERRIDE   0x48

◆ GPIO_CTL

#define GPIO_CTL   0x80

◆ GPIO_SET

#define GPIO_SET   0x81

◆ SSB_TUNE_FREQ

#define SSB_TUNE_FREQ   0x40

◆ SSB_TUNE_STATUS

#define SSB_TUNE_STATUS   0x42

◆ SSB_RSQ_STATUS

#define SSB_RSQ_STATUS   0x43

◆ SSB_AGC_STATUS

#define SSB_AGC_STATUS   0x47

◆ SSB_AGC_OVERRIDE

#define SSB_AGC_OVERRIDE   0x48

◆ DIGITAL_OUTPUT_FORMAT

#define DIGITAL_OUTPUT_FORMAT   0x0102

◆ DIGITAL_OUTPUT_SAMPLE_RATE

#define DIGITAL_OUTPUT_SAMPLE_RATE   0x0104

◆ REFCLK_FREQ

#define REFCLK_FREQ   0x0201

◆ REFCLK_PRESCALE

#define REFCLK_PRESCALE   0x0202

◆ AM_DEEMPHASIS

#define AM_DEEMPHASIS   0x3100

◆ AM_CHANNEL_FILTER

#define AM_CHANNEL_FILTER   0x3102

◆ AM_AUTOMATIC_VOLUME_CONTROL_MAX_GAIN

#define AM_AUTOMATIC_VOLUME_CONTROL_MAX_GAIN   0x3103

◆ AM_MODE_AFC_SW_PULL_IN_RANGE

#define AM_MODE_AFC_SW_PULL_IN_RANGE   0x3104

◆ AM_MODE_AFC_SW_LOCK_IN_RANGE

#define AM_MODE_AFC_SW_LOCK_IN_RANGE   0x3105

◆ AM_RSQ_INTERRUPTS

#define AM_RSQ_INTERRUPTS   0x3200

◆ AM_RSQ_SNR_HIGH_THRESHOLD

#define AM_RSQ_SNR_HIGH_THRESHOLD   0x3201

◆ AM_RSQ_SNR_LOW_THRESHOLD

#define AM_RSQ_SNR_LOW_THRESHOLD   0x3202

◆ AM_RSQ_RSSI_HIGH_THRESHOLD

#define AM_RSQ_RSSI_HIGH_THRESHOLD   0x3203

◆ AM_RSQ_RSSI_LOW_THRESHOLD

#define AM_RSQ_RSSI_LOW_THRESHOLD   0x3204

◆ AM_SOFT_MUTE_RATE

#define AM_SOFT_MUTE_RATE   0x3300

◆ AM_SOFT_MUTE_SLOPE

#define AM_SOFT_MUTE_SLOPE   0x3301

◆ AM_SOFT_MUTE_MAX_ATTENUATION

#define AM_SOFT_MUTE_MAX_ATTENUATION   0x3302

◆ AM_SOFT_MUTE_SNR_THRESHOLD

#define AM_SOFT_MUTE_SNR_THRESHOLD   0x3303

◆ AM_SOFT_MUTE_RELEASE_RATE

#define AM_SOFT_MUTE_RELEASE_RATE   0x3304

◆ AM_SOFT_MUTE_ATTACK_RATE

#define AM_SOFT_MUTE_ATTACK_RATE   0x3305

◆ AM_SEEK_BAND_BOTTOM

#define AM_SEEK_BAND_BOTTOM   0x3400

◆ AM_SEEK_BAND_TOP

#define AM_SEEK_BAND_TOP   0x3401

◆ AM_SEEK_FREQ_SPACING

#define AM_SEEK_FREQ_SPACING   0x3402

◆ AM_SEEK_SNR_THRESHOLD

#define AM_SEEK_SNR_THRESHOLD   0x3403

◆ AM_SEEK_RSSI_THRESHOLD

#define AM_SEEK_RSSI_THRESHOLD   0x3404

◆ AM_AGC_ATTACK_RATE

#define AM_AGC_ATTACK_RATE   0x3702

◆ AM_AGC_RELEASE_RATE

#define AM_AGC_RELEASE_RATE   0x3703

◆ AM_FRONTEND_AGC_CONTROL

#define AM_FRONTEND_AGC_CONTROL   0x3705

◆ AM_NB_DETECT_THRESHOLD

#define AM_NB_DETECT_THRESHOLD   0x3900

◆ AM_NB_INTERVAL

#define AM_NB_INTERVAL   0x3901

◆ AM_NB_RATE

#define AM_NB_RATE   0x3902

◆ AM_NB_IIR_FILTER

#define AM_NB_IIR_FILTER   0x3903

◆ AM_NB_DELAY

#define AM_NB_DELAY   0x3904

◆ RX_VOLUME

#define RX_VOLUME   0x4000

◆ RX_HARD_MUTE

#define RX_HARD_MUTE   0x4001

◆ GPO_IEN

#define GPO_IEN   0x0001

◆ SSB_BFO

#define SSB_BFO   0x0100

◆ SSB_MODE

#define SSB_MODE   0x0101

◆ SSB_RSQ_INTERRUPTS

#define SSB_RSQ_INTERRUPTS   0x3200

◆ SSB_RSQ_SNR_HI_THRESHOLD

#define SSB_RSQ_SNR_HI_THRESHOLD   0x3201

◆ SSB_RSQ_SNR_LO_THRESHOLD

#define SSB_RSQ_SNR_LO_THRESHOLD   0x3202

◆ SSB_RSQ_RSSI_HI_THRESHOLD

#define SSB_RSQ_RSSI_HI_THRESHOLD   0x3203

◆ SSB_RSQ_RSSI_LO_THRESHOLD

#define SSB_RSQ_RSSI_LO_THRESHOLD   0x3204

◆ SSB_SOFT_MUTE_RATE

#define SSB_SOFT_MUTE_RATE   0x3300

◆ SSB_SOFT_MUTE_MAX_ATTENUATION

#define SSB_SOFT_MUTE_MAX_ATTENUATION   0x3302

◆ SSB_SOFT_MUTE_SNR_THRESHOLD

#define SSB_SOFT_MUTE_SNR_THRESHOLD   0x3303

◆ SSB_RF_AGC_ATTACK_RATE

#define SSB_RF_AGC_ATTACK_RATE   0x3700

◆ SSB_RF_AGC_RELEASE_RATE

#define SSB_RF_AGC_RELEASE_RATE   0x3701

◆ SSB_RF_IF_AGC_ATTACK_RATE

#define SSB_RF_IF_AGC_ATTACK_RATE   0x3702

◆ SSB_RF_IF_AGC_RELEASE_RATE

#define SSB_RF_IF_AGC_RELEASE_RATE   0x3703

◆ LSB_MODE

#define LSB_MODE   1

◆ USB_MODE

#define USB_MODE   2

◆ SI473X_RDS_OUTPUT_ONLY

#define SI473X_RDS_OUTPUT_ONLY   0b00000000

◆ SI473X_ANALOG_AUDIO

#define SI473X_ANALOG_AUDIO   0b00000101

◆ SI473X_DIGITAL_AUDIO1

#define SI473X_DIGITAL_AUDIO1   0b00001011

◆ SI473X_DIGITAL_AUDIO2

#define SI473X_DIGITAL_AUDIO2   0b10110000

◆ SI473X_ANALOG_DIGITAL_AUDIO

#define SI473X_ANALOG_DIGITAL_AUDIO   0b10110101

◆ FM_CURRENT_MODE

#define FM_CURRENT_MODE   0

◆ AM_CURRENT_MODE

#define AM_CURRENT_MODE   1

◆ SSB_CURRENT_MODE

#define SSB_CURRENT_MODE   2

◆ MAX_DELAY_AFTER_SET_FREQUENCY

#define MAX_DELAY_AFTER_SET_FREQUENCY   30

◆ MAX_DELAY_AFTER_POWERUP

#define MAX_DELAY_AFTER_POWERUP   10

◆ MIN_DELAY_WAIT_SEND_LOOP

#define MIN_DELAY_WAIT_SEND_LOOP   300