 |
PU2CLR Si4735 Arduino Library
2.0.7
Arduino Library for Si47XX Devices - By Ricardo Lima Caratti
|
Go to the documentation of this file.
29 #define POWER_PATCH 15
32 #define SI473X_ADDR_SEN_LOW 0x11
33 #define SI473X_ADDR_SEN_HIGH 0x63
37 #define POWER_DOWN 0x11
38 #define SET_PROPERTY 0x12
39 #define GET_PROPERTY 0x13
40 #define GET_INT_STATUS 0x14
43 #define FM_TUNE_FREQ 0x20
44 #define FM_SEEK_START 0x21
45 #define FM_TUNE_STATUS 0x22
46 #define FM_AGC_STATUS 0x27
47 #define FM_AGC_OVERRIDE 0x28
48 #define FM_RSQ_STATUS 0x23
49 #define FM_RDS_STATUS 0x24
51 #define FM_NB_DETECT_THRESHOLD 0x1900
52 #define FM_NB_INTERVAL 0x1901
53 #define FM_NB_RATE 0x1902
54 #define FM_NB_IIR_FILTER 0x1903
55 #define FM_NB_DELAY 0x1904
58 #define FM_RDS_INT_SOURCE 0x1500
59 #define FM_RDS_INT_FIFO_COUNT 0x1501
60 #define FM_RDS_CONFIG 0x1502
61 #define FM_RDS_CONFIDENCE 0x1503
63 #define FM_DEEMPHASIS 0x1100
64 #define FM_BLEND_STEREO_THRESHOLD 0x1105
65 #define FM_BLEND_MONO_THRESHOLD 0x1106
66 #define FM_BLEND_RSSI_STEREO_THRESHOLD 0x1800
67 #define FM_BLEND_RSSI_MONO_THRESHOLD 0x1801
68 #define FM_BLEND_SNR_STEREO_THRESHOLD 0x1804
69 #define FM_BLEND_SNR_MONO_THRESHOLD 0x1805
70 #define FM_BLEND_MULTIPATH_STEREO_THRESHOLD 0x1808
71 #define FM_BLEND_MULTIPATH_MONO_THRESHOLD 0x1809
72 #define FM_CHANNEL_FILTER 0x1102
73 #define FM_SOFT_MUTE_MAX_ATTENUATION 0x1302
76 #define FM_SEEK_BAND_BOTTOM 0x1400
77 #define FM_SEEK_BAND_TOP 0x1401
78 #define FM_SEEK_FREQ_SPACING 0x1402
79 #define FM_SEEK_TUNE_SNR_THRESHOLD 0x1403
80 #define FM_SEEK_TUNE_RSSI_THRESHOLD 0x1404
84 #define NBFM_TUNE_FREQ 0x50
85 #define NBFM_TUNE_STATUS 0x52
86 #define NBFM_RSQ_STATUS 0x53
87 #define NBFM_AGC_STATUS 0x57
88 #define NBFM_AGC_OVERRIDE 0x58
93 #define NBFM_MAX_TUNE_ERROR 0x5108
94 #define NBFM_RSQ_INT_SOURCE 0x5200
95 #define NBFM_RSQ_SNR_HI_THRESHOLD 0x5201
96 #define NBFM_RSQ_SNR_LO_THRESHOLD 0x5202
97 #define NBFM_RSQ_RSSI_HI_THRESHOLD 0x5203
98 #define NBFM_RSQ_RSSI_LO_THRESHOLD 0x5204
99 #define NBFM_VALID_SNR_THRESHOLD 0x5403
100 #define NBFM_VALID_RSSI_THRESHOLD 0x5404
104 #define AM_TUNE_FREQ 0x40
105 #define AM_SEEK_START 0x41
106 #define AM_TUNE_STATUS 0x42
107 #define AM_RSQ_STATUS 0x43
108 #define AM_AGC_STATUS 0x47
109 #define AM_AGC_OVERRIDE 0x48
110 #define GPIO_CTL 0x80
111 #define GPIO_SET 0x81
115 #define SSB_TUNE_FREQ 0x40
116 #define SSB_TUNE_STATUS 0x42
117 #define SSB_RSQ_STATUS 0x43
118 #define SSB_AGC_STATUS 0x47
119 #define SSB_AGC_OVERRIDE 0x48
123 #define DIGITAL_OUTPUT_FORMAT 0x0102
124 #define DIGITAL_OUTPUT_SAMPLE_RATE 0x0104
125 #define REFCLK_FREQ 0x0201
126 #define REFCLK_PRESCALE 0x0202
127 #define AM_DEEMPHASIS 0x3100
128 #define AM_CHANNEL_FILTER 0x3102
129 #define AM_AUTOMATIC_VOLUME_CONTROL_MAX_GAIN 0x3103
130 #define AM_MODE_AFC_SW_PULL_IN_RANGE 0x3104
131 #define AM_MODE_AFC_SW_LOCK_IN_RANGE 0x3105
132 #define AM_RSQ_INTERRUPTS 0x3200
133 #define AM_RSQ_SNR_HIGH_THRESHOLD 0x3201
134 #define AM_RSQ_SNR_LOW_THRESHOLD 0x3202
135 #define AM_RSQ_RSSI_HIGH_THRESHOLD 0x3203
136 #define AM_RSQ_RSSI_LOW_THRESHOLD 0x3204
137 #define AM_SOFT_MUTE_RATE 0x3300
138 #define AM_SOFT_MUTE_SLOPE 0x3301
139 #define AM_SOFT_MUTE_MAX_ATTENUATION 0x3302
140 #define AM_SOFT_MUTE_SNR_THRESHOLD 0x3303
141 #define AM_SOFT_MUTE_RELEASE_RATE 0x3304
142 #define AM_SOFT_MUTE_ATTACK_RATE 0x3305
143 #define AM_SEEK_BAND_BOTTOM 0x3400
144 #define AM_SEEK_BAND_TOP 0x3401
145 #define AM_SEEK_FREQ_SPACING 0x3402
146 #define AM_SEEK_SNR_THRESHOLD 0x3403
147 #define AM_SEEK_RSSI_THRESHOLD 0x3404
148 #define AM_AGC_ATTACK_RATE 0x3702
149 #define AM_AGC_RELEASE_RATE 0x3703
150 #define AM_FRONTEND_AGC_CONTROL 0x3705
151 #define AM_NB_DETECT_THRESHOLD 0x3900
152 #define AM_NB_INTERVAL 0x3901
153 #define AM_NB_RATE 0x3902
154 #define AM_NB_IIR_FILTER 0x3903
155 #define AM_NB_DELAY 0x3904
157 #define RX_VOLUME 0x4000
158 #define RX_HARD_MUTE 0x4001
163 #define GPO_IEN 0x0001
164 #define SSB_BFO 0x0100
165 #define SSB_MODE 0x0101
166 #define SSB_RSQ_INTERRUPTS 0x3200
167 #define SSB_RSQ_SNR_HI_THRESHOLD 0x3201
168 #define SSB_RSQ_SNR_LO_THRESHOLD 0x3202
169 #define SSB_RSQ_RSSI_HI_THRESHOLD 0x3203
170 #define SSB_RSQ_RSSI_LO_THRESHOLD 0x3204
171 #define SSB_SOFT_MUTE_RATE 0x3300
172 #define SSB_SOFT_MUTE_MAX_ATTENUATION 0x3302
173 #define SSB_SOFT_MUTE_SNR_THRESHOLD 0x3303
174 #define SSB_RF_AGC_ATTACK_RATE 0x3700
175 #define SSB_RF_AGC_RELEASE_RATE 0x3701
176 #define SSB_IF_AGC_RELEASE_RATE 0x3703
177 #define SSB_IF_AGC_ATTACK_RATE 0x3702
180 #define SSB_RF_IF_AGC_ATTACK_RATE 0x3702
181 #define SSB_RF_IF_AGC_RELEASE_RATE 0x3703
188 #define SI473X_RDS_OUTPUT_ONLY 0b00000000
189 #define SI473X_ANALOG_AUDIO 0b00000101
190 #define SI473X_DIGITAL_AUDIO1 0b00001011
191 #define SI473X_DIGITAL_AUDIO2 0b10110000
192 #define SI473X_ANALOG_DIGITAL_AUDIO 0b10110101
195 #define FM_CURRENT_MODE 0
196 #define AM_CURRENT_MODE 1
197 #define SSB_CURRENT_MODE 2
198 #define NBFM_CURRENT_MODE 3
203 #define MAX_DELAY_AFTER_SET_FREQUENCY 30
204 #define MAX_DELAY_AFTER_POWERUP 10
205 #define MIN_DELAY_WAIT_SEND_LOOP 300
206 #define MAX_SEEK_TIME 8000
208 #define DEFAULT_CURRENT_AVC_AM_MAX_GAIN 36
210 #define XOSCEN_CRYSTAL 1
211 #define XOSCEN_RCLK 0
328 } si47x_antenna_capacitor;
351 } si47x_set_frequency;
368 uint8_t RESERVED1 : 2;
371 uint8_t RESERVED2 : 4;
391 } si47x_seek_am_complement;
455 } si47x_response_status;
489 } si47x_firmware_information;
525 } si47x_firmware_query_library;
542 uint8_t RESERVED2 : 6;
586 uint8_t RSSIILINT : 1;
587 uint8_t RSSIHINT : 1;
590 uint8_t MULTLINT : 1;
591 uint8_t MULTHINT : 1;
593 uint8_t BLENDINT : 1;
622 uint8_t MIN_GAIN_INDEX;
625 } si47x_frontend_agc_control;
641 uint8_t STATUSONLY : 1;
668 uint8_t RDSSYNCLOST : 1;
669 uint8_t RDSSYNCFOUND : 1;
671 uint8_t RDSNEWBLOCKA : 1;
672 uint8_t RDSNEWBLOCKB : 1;
715 uint8_t RDSSYNCLOST : 1;
716 uint8_t RDSSYNCFOUND : 1;
718 uint8_t RDSNEWBLOCKA : 1;
719 uint8_t RDSNEWBLOCKB : 1;
724 } si47x_rds_int_source;
796 uint16_t address : 2;
800 uint16_t programType : 5;
801 uint16_t trafficProgramCode : 1;
802 uint16_t versionCode : 1;
803 uint16_t groupType : 4;
807 uint16_t address : 4;
808 uint16_t textABFlag : 1;
809 uint16_t programType : 5;
810 uint16_t trafficProgramCode : 1;
811 uint16_t versionCode : 1;
812 uint16_t groupType : 4;
816 uint16_t content : 4;
817 uint16_t textABFlag : 1;
818 uint16_t programType : 5;
819 uint16_t trafficProgramCode : 1;
820 uint16_t versionCode : 1;
821 uint16_t groupType : 4;
869 uint8_t offset_sense : 1;
878 } si47x_rds_date_time;
930 } si47x_agc_overrride;
957 } si47x_bandwidth_config;
971 uint8_t SBCUTFLT : 4;
972 uint8_t AVC_DIVIDER : 4;
974 uint8_t SMUTESEL : 1;
976 uint8_t DSP_AFCDIS : 1;
1002 } si4735_digital_output_format;
1015 uint8_t reserved[8];
1017 uint8_t patch_id[14];
1018 uint16_t patch_size;
1021 } si4735_eeprom_patch_header;
1035 } si4735_digital_output_sample_rate;
1121 void sendProperty(uint16_t propertyNumber, uint16_t param);
1135 void setGpioCtl(uint8_t GPO1OEN, uint8_t GPO2OEN, uint8_t GPO3OEN);
1136 void setGpio(uint8_t GPO1LEVEL, uint8_t GPO2LEVEL, uint8_t GPO3LEVEL);
1137 void setGpioIen(uint8_t STCIEN, uint8_t RSQIEN, uint8_t ERRIEN, uint8_t CTSIEN, uint8_t STCREP, uint8_t RSQREP);
1139 void setup(uint8_t resetPin, uint8_t defaultFunction);
1163 sendProperty(propertyNumber, param);
1166 void sendCommand(uint8_t cmd,
int parameter_size,
const uint8_t *parameter);
1170 void setPowerUp(uint8_t CTSIEN, uint8_t GPO2OEN, uint8_t PATCH, uint8_t XOSCEN, uint8_t FUNC, uint8_t OPMODE);
1195 return currentStatus.resp.RSQINT;
1206 return currentStatus.resp.RDSINT;
1217 return currentStatus.resp.STCINT;
1228 return currentStatus.resp.ERR;
1247 return currentStatus.resp.AFCRL;
1260 return currentStatus.resp.BLTF;
1274 return currentStatus.resp.VALID;
1285 return currentStatus.resp.RSSI;
1298 return currentStatus.resp.SNR;
1311 return currentStatus.resp.MULT;
1325 si47x_antenna_capacitor cap;
1328 return currentStatus.resp.READANTCAP;
1331 cap.raw.ANTCAPL = currentStatus.resp.READANTCAP;
1332 cap.raw.ANTCAPH = currentStatus.resp.MULT;
1346 currentAvcAmMaxGain = 90;
1356 currentAvcAmMaxGain = 12;
1380 return currentAvcAmMaxGain;
1445 return !currentAgcStatus.refined.AGCDIS;
1456 return currentAgcStatus.refined.AGCIDX;
1460 void setSsbAgcOverrite(uint8_t SSBAGCDIS, uint8_t SSBAGCNDX, uint8_t reserved = 0);
1475 return currentRqsStatus.resp.RSSI;
1486 return currentRqsStatus.resp.SNR;
1497 return currentRqsStatus.resp.RSSIILINT;
1508 return currentRqsStatus.resp.RSSIHINT;
1519 return currentRqsStatus.resp.SNRLINT;
1530 return currentRqsStatus.resp.SNRHINT;
1541 return currentRqsStatus.resp.VALID;
1552 return currentRqsStatus.resp.AFCRL;
1565 return currentRqsStatus.resp.SMUTE;
1578 return currentRqsStatus.resp.STBLEND;
1591 return currentRqsStatus.resp.PILOT;
1604 return currentRqsStatus.resp.MULT;
1614 return currentRqsStatus.resp.FREQOFF;
1625 return currentRqsStatus.resp.MULTLINT;
1636 return currentRqsStatus.resp.MULTHINT;
1647 return currentRqsStatus.resp.BLENDINT;
1663 return firmwareInfo.resp.PN;
1673 return firmwareInfo.resp.FWMAJOR;
1683 return firmwareInfo.resp.FWMINOR;
1693 return firmwareInfo.resp.PATCHH;
1703 return firmwareInfo.resp.PATCHL;
1713 return firmwareInfo.resp.CMPMAJOR;
1723 return firmwareInfo.resp.CMPMINOR;
1733 return firmwareInfo.resp.CHIPREV;
1784 currentAudioMode = audioMode;
1805 void setAM(uint16_t fromFreq, uint16_t toFreq, uint16_t intialFreq, uint16_t step);
1806 void setFM(uint16_t fromFreq, uint16_t toFreq, uint16_t initialFreq, uint16_t step);
1858 inline void setFmNoiseBlank(uint16_t nb_rate = 64, uint16_t nb_interval = 55, uint16_t nb_irr_filter = 300)
2058 si47x_frontend_agc_control param;
2060 param.field.MIN_GAIN_INDEX = MIN_GAIN_INDEX;
2061 param.field.ATTN_BACKUP = ATTN_BACKUP;
2080 inline void setAmNoiseBlank(uint16_t nb_rate = 64, uint16_t nb_interval = 55, uint16_t nb_irr_filter = 300)
2148 return currentFrequencyParams.arg.FAST;
2159 currentFrequencyParams.arg.FAST = FAST;
2169 return currentFrequencyParams.arg.FREEZE;
2180 currentFrequencyParams.arg.FREEZE = FREEZE;
2234 seekStationProgress(NULL,
SEEK_UP);
2254 void seekStationProgress(
void (*showFunc)(uint16_t f),
bool (*stopSeking)(), uint8_t up_down);
2283 void setRdsIntSource(uint8_t RDSRECV, uint8_t RDSSYNCLOST, uint8_t RDSSYNCFOUND, uint8_t RDSNEWBLOCKA, uint8_t RDSNEWBLOCKB);
2284 void getRdsStatus(uint8_t INTACK, uint8_t MTFIFO, uint8_t STATUSONLY);
2294 return currentRdsStatus.resp.RDSRECV;
2305 return currentRdsStatus.resp.RDSSYNCLOST;
2316 return currentRdsStatus.resp.RDSSYNCFOUND;
2328 return currentRdsStatus.resp.RDSNEWBLOCKA;
2339 return currentRdsStatus.resp.RDSNEWBLOCKB;
2350 return currentRdsStatus.resp.RDSSYNC;
2361 return currentRdsStatus.resp.GRPLOST;
2372 return currentRdsStatus.resp.RDSFIFOUSED;
2439 getRdsStatus(0, 0, 0);
2450 getRdsStatus(0, 1, 0);
2461 getRdsStatus(1, 0, 0);
2464 void setRdsConfig(uint8_t RDSEN, uint8_t BLETHA, uint8_t BLETHB, uint8_t BLETHC, uint8_t BLETHD);
2477 void mjdConverter(uint32_t mjd, uint32_t *year, uint32_t *month, uint32_t *day);
2480 bool getRdsDateTime(uint16_t *year, uint16_t *month, uint16_t *day, uint16_t *hour, uint16_t * minute);
2486 void setSSBConfig(uint8_t AUDIOBW, uint8_t SBCUTFLT, uint8_t AVC_DIVIDER, uint8_t AVCEN, uint8_t SMUTESEL, uint8_t DSP_AFCDIS);
2487 void setSSB(uint16_t fromFreq, uint16_t toFreq, uint16_t intialFreq, uint16_t step, uint8_t usblsb);
2488 void setSSB(uint8_t usblsb);
2499 void setNBFM(uint16_t fromFreq, uint16_t toFreq, uint16_t initialFreq, uint16_t step);
2501 void loadPatchNBFM(
const uint8_t *patch_content,
const uint16_t patch_content_size);
2506 bool downloadPatch(
const uint8_t *ssb_patch_content,
const uint16_t ssb_patch_content_size);
2507 bool downloadCompressedPatch(
const uint8_t *ssb_patch_content,
const uint16_t ssb_patch_content_size,
const uint16_t *cmd_0x15,
const int16_t cmd_0x15_size);
2508 void loadPatch(
const uint8_t *ssb_patch_content,
const uint16_t ssb_patch_content_size, uint8_t ssb_audiobw = 1);
2524 this->maxDelayAfterPouwerUp = ms;
2540 this->maxDelaySetFrequency = ms;
2570 this->currentStep = step;
2586 return this->currentWorkFrequency;
2616 Wire.setClock(10000);
2633 Wire.setClock(400000);
2661 audioMuteMcuPin = pin;
2662 pinMode(audioMuteMcuPin, OUTPUT);
2677 digitalWrite(audioMuteMcuPin, on);
2678 delayMicroseconds(300);
2681 void convertToChar(uint16_t value,
char *strValue, uint8_t len, uint8_t dot, uint8_t separator,
bool remove_leading_zeros =
true );
void setGpioIen(uint8_t STCIEN, uint8_t RSQIEN, uint8_t ERRIEN, uint8_t CTSIEN, uint8_t STCREP, uint8_t RSQREP)
Configures the sources for the GPO2/INT interrupt pin.
Definition: SI4735.cpp:195
uint8_t getRdsProgramType(void)
Returns the Program Type (extracted from the Block B)
Definition: SI4735.cpp:2238
#define SSB_SOFT_MUTE_MAX_ATTENUATION
Definition: SI4735.h:172
uint8_t currentSsbStatus
Definition: SI4735.h:1111
void setRefClockPrescaler(uint16_t prescale, uint8_t rclk_sel=0)
Sets the number used by the prescaler to divide the external RCLK down to the internal REFCLK.
Definition: SI4735.cpp:548
#define SEEK_DOWN
Definition: SI4735.h:201
si47x_status getStatusResponse()
Gets the first byte response.
Definition: SI4735.cpp:1556
#define SSB_IF_AGC_RELEASE_RATE
Definition: SI4735.h:176
#define FM_BLEND_RSSI_STEREO_THRESHOLD
Definition: SI4735.h:66
bool downloadPatch(const uint8_t *ssb_patch_content, const uint16_t ssb_patch_content_size)
Transfers the content of a patch stored in a array of bytes to the SI4735 device.
Definition: SI4735.cpp:3212
si47x_frequency currentFrequency
data structure to get current frequency
Definition: SI4735.h:1097
void setMaxDelayPowerUp(uint16_t ms)
Set the Max Delay Power Up.
Definition: SI4735.h:2522
#define FM_TUNE_STATUS
Definition: SI4735.h:45
void patchPowerUp()
This method can be used to prepare the device to apply SSBRX patch.
Definition: SI4735.cpp:3138
void seekStationUp()
Search for the next station.
Definition: SI4735.h:2232
#define AM_NB_INTERVAL
Definition: SI4735.h:152
uint8_t lastMode
Stores the last mode used.
Definition: SI4735.h:1086
#define MAX_DELAY_AFTER_SET_FREQUENCY
Definition: SI4735.h:203
void setProperty(uint16_t propertyNumber, uint16_t param)
Sets a given SI47XX device property.
Definition: SI4735.h:1161
#define SSB_BFO
Definition: SI4735.h:164
uint16_t refClockPrescale
Prescaler for Reference Clock (divider).
Definition: SI4735.h:1094
bool isCurrentTuneAM()
Returns true if the current function is AM (AM_TUNE_FREQ).
Definition: SI4735.h:2104
#define NBFM_TUNE_FREQ
Definition: SI4735.h:84
void setFmStereoOn()
Turn Off Stereo operation.
Definition: SI4735.cpp:1758
void setFmStereoOff()
Turn Off Stereo operation.
Definition: SI4735.cpp:1748
void setFM(uint16_t fromFreq, uint16_t toFreq, uint16_t initialFreq, uint16_t step)
Sets the radio to FM function.
Definition: SI4735.cpp:853
void setSeekFmSpacing(uint16_t spacing)
Selects frequency spacingfor FM seek. Default is 100 kHz (value 10) spacing. There are only 3 valid v...
Definition: SI4735.cpp:1402
#define POWER_UP
Definition: SI4735.h:35
uint8_t getRdsGroupType(void)
Returns the Group Type (extracted from the Block B)
Definition: SI4735.cpp:2164
char * getRdsText0A(void)
Gets the station name and other messages.
Definition: SI4735.cpp:2350
void setFmNoiseBlankDelay(uint16_t parameter)
Set the Fm Noise Blank Delay.
Definition: SI4735.h:1891
uint8_t getCurrentRSSI()
Get the current receive signal strength (0–127 dBμV)
Definition: SI4735.h:1473
void setSeekFmSrnThreshold(uint16_t value)
Sets the SNR threshold for a valid FM Seek/Tune.
Definition: SI4735.cpp:1432
uint8_t getReceivedSignalStrengthIndicator()
Returns the value of Received Signal Strength Indicator (dBμV).
Definition: SI4735.h:1283
uint8_t refClockSourcePin
0 = RCLK pin is clock source; 1 = DCLK pin is clock source.
Definition: SI4735.h:1095
unsigned long maxSeekTime
Stores the maximum time (ms) for a seeking process. Defines the maximum seeking time.
Definition: SI4735.h:1073
#define GPO_IEN
Definition: SI4735.h:163
void setFmNoiseBlankInterval(uint16_t parameter)
Set the Fm Noise Blank Interval.
Definition: SI4735.h:1870
void setSsbAgcAttackRate(uint16_t parameter)
Sets the AGC attack rate on SSB mode.
Definition: SI4735.h:2024
#define AM_CURRENT_MODE
Definition: SI4735.h:196
uint8_t getVolume()
Gets the current volume level.
Definition: SI4735.cpp:1878
#define AM_TUNE_FREQ
Definition: SI4735.h:104
uint8_t getFirmwarePATCHL()
Returns the Firmware P A T C H LOW.
Definition: SI4735.h:1702
char rds_buffer2B[33]
RDS Radio Text buffer - Station Informaation.
Definition: SI4735.h:1057
void setNBFM()
Set the radio to FM function.
Definition: SI4735.cpp:3553
void setVolumeDown()
Set the Volume Down.
Definition: SI4735.h:1762
bool isCurrentTuneFM()
Definition: SI4735.h:2092
#define XOSCEN_CRYSTAL
Definition: SI4735.h:210
uint16_t getRdsPI(void)
Returns the programa type.
Definition: SI4735.cpp:2148
uint16_t raw
Definition: SI4735.h:1001
#define FM_AGC_STATUS
Definition: SI4735.h:46
void setFmNoiseBlank_IIR_Filter(uint16_t parameter)
Set the FmNoiseBlank IIR Filter.
Definition: SI4735.h:1901
si47x_response_status currentStatus
current device status
Definition: SI4735.h:1100
bool getEndIndicatorGroupA()
Check if 0xD or 0xA special characters were received for group A.
Definition: SI4735.h:2392
uint16_t word
Definition: SI4735.h:624
void setGpio(uint8_t GPO1LEVEL, uint8_t GPO2LEVEL, uint8_t GPO3LEVEL)
Sets the output level (high or low) for GPO1, 2, and 3.
Definition: SI4735.cpp:158
uint8_t currentAvcAmMaxGain
Stores the current Automatic Volume Control Gain for AM.
Definition: SI4735.h:1088
uint8_t raw[6]
Definition: SI4735.h:877
void setAMSoftMuteReleaseRate(uint8_t parameter)
Sets the soft mute release rate.
Definition: SI4735.h:1972
bool getCurrentMultipathDetectHigh()
Gets the Current Multipath Detect High.
Definition: SI4735.h:1635
bool getSignalQualityInterrupt()
Get the Signal Quality Interrupt status.
Definition: SI4735.h:1193
void setFrequencyUp()
Set the FrequencyUp.
Definition: SI4735.h:2195
void resetEndIndicatorGroupA()
Resets 0xD or 0xA special characters condition (makes it false)
Definition: SI4735.h:2401
#define SSB_RF_AGC_ATTACK_RATE
Definition: SI4735.h:174
uint16_t getFrequency(void)
Gets the current frequency of the Si4735 (AM or FM)
Definition: SI4735.cpp:929
#define AM_AGC_RELEASE_RATE
Definition: SI4735.h:149
bool getCurrentSnrDetectHigh()
Checks if SNR detect is high.
Definition: SI4735.h:1528
void setI2CFastModeCustom(long value=500000)
Sets the I2C bus to a given value. ATTENTION: use this function with cation.
Definition: SI4735.h:2644
void setSeekAmSpacing(uint16_t spacing)
Selects frequency spacingfor AM seek. Default is 10 kHz spacing.
Definition: SI4735.cpp:1388
#define FM_RDS_STATUS
Definition: SI4735.h:49
uint8_t raw[5]
Definition: SI4735.h:350
si47x_rqs_status currentRqsStatus
current Radio SIgnal Quality status
Definition: SI4735.h:1099
uint8_t raw[2]
Definition: SI4735.h:723
void setSsbAgcReleaseRate(uint16_t parameter)
Sets the AGC Release rate on SSB mode.
Definition: SI4735.h:2037
#define AM_AGC_OVERRIDE
Definition: SI4735.h:109
uint8_t raw[2]
Definition: SI4735.h:753
#define FM_NB_RATE
Definition: SI4735.h:53
void setFM()
Sets the radio to FM function.
Definition: SI4735.cpp:785
void setAMFrontEndAgcControl(uint8_t MIN_GAIN_INDEX, uint8_t ATTN_BACKUP)
Adjusts the AM AGC for external front-end attenuator and external front-end cascode LNA.
Definition: SI4735.h:2056
uint8_t getCurrentMultipath()
Gets the current Multipath.
Definition: SI4735.h:1602
uint8_t raw
Definition: SI4735.h:544
#define FM_SEEK_TUNE_SNR_THRESHOLD
Definition: SI4735.h:79
uint8_t getFirmwareCHIPREV()
RESP8 - Returns the Chip Revision (ASCII)
Definition: SI4735.h:1732
void setVolume(uint8_t volume)
Sets volume level (0 to 63)
Definition: SI4735.cpp:1844
#define AM_NB_IIR_FILTER
Definition: SI4735.h:154
uint8_t getRdsTextSegmentAddress(void)
Returns the address of the text segment.
Definition: SI4735.cpp:2203
void seekStationProgress(void(*showFunc)(uint16_t f), uint8_t up_down)
Seeks a station up or down.
Definition: SI4735.cpp:1267
#define SSB_AGC_OVERRIDE
Definition: SI4735.h:119
#define NBFM_CURRENT_MODE
Definition: SI4735.h:198
uint8_t raw
Definition: SI4735.h:412
void setAudioMuteMcuPin(int8_t pin)
Sets the Audio Mute Mcu Pin.
Definition: SI4735.h:2659
void powerDown(void)
Moves the device from powerup to powerdown mode.
Definition: SI4735.cpp:454
bool getACFIndicator()
Returns true if the AFC rails (AFC Rail Indicator).
Definition: SI4735.h:1245
void getCurrentReceivedSignalQuality(void)
Queries the status of the Received Signal Quality (RSQ) of the current channel (FM_RSQ_STATUS)
Definition: SI4735.cpp:1156
void setFmNoiseBlankRate(uint16_t parameter)
Set the Fm Noise Blank Rate.
Definition: SI4735.h:1881
void waitToSend(void)
Wait for the si473x is ready (Clear to Send (CTS) status bit have to be 1).
Definition: SI4735.cpp:316
si47x_status getInterruptStatus()
Updates bits 6:0 of the status byte.
Definition: SI4735.cpp:83
#define FM_BLEND_SNR_MONO_THRESHOLD
Definition: SI4735.h:69
void setFmBlendRssiStereoThreshold(uint8_t parameter)
Sets RSSI threshold for stereo blend. (Full stereo above threshold, blend below threshold....
Definition: SI4735.cpp:1658
uint8_t getTuneFrequecyFreeze()
Returns the FREEZE status.
Definition: SI4735.h:2168
void patchPowerUpNBFM()
This method can be used to prepare the device to apply NBFM patch.
Definition: SI4735.cpp:3510
void setDeviceOtherI2CAddress(uint8_t i2cAddr)
Sets the onther I2C Bus Address (for Si470X)
Definition: SI4735.cpp:283
void seekPreviousStation()
Search the previous station.
Definition: SI4735.cpp:1230
char rds_time[25]
RDS date time received information.
Definition: SI4735.h:1059
void rdsClearInterrupt()
Clears RDSINT.
Definition: SI4735.h:2459
uint8_t getAgcGainIndex()
Gets the current AGC gain index.
Definition: SI4735.h:1454
void setAMSoftMuteSnrThreshold(uint8_t parameter)
Sets the SNR threshold to engage soft mute.
Definition: SI4735.h:1959
void digitalOutputFormat(uint8_t OSIZE, uint8_t OMONO, uint8_t OMODE, uint8_t OFALL)
Configures the digital audio output format.
Definition: SI4735.cpp:1806
#define FM_BLEND_RSSI_MONO_THRESHOLD
Definition: SI4735.h:67
#define FM_CURRENT_MODE
Definition: SI4735.h:195
bool getRdsReceived()
Get the Rds Received FIFO.
Definition: SI4735.h:2292
void frequencyUp()
Increments the current frequency on current band/function by using the current step.
Definition: SI4735.cpp:721
char * getRdsDateTime(void)
Gets the RDS the Time and Date when the Group type is 4.
Definition: SI4735.cpp:2630
si47x_rds_status currentRdsStatus
current RDS status
Definition: SI4735.h:1102
uint8_t getCurrentSignedFrequencyOffset()
Gets the Signed frequency offset (kHz).
Definition: SI4735.h:1613
void sendCommand(uint8_t cmd, int parameter_size, const uint8_t *parameter)
Sends a given command to the SI47XX devices.
Definition: SI4735.cpp:1514
si47x_ssb_mode currentSSBMode
indicates if USB or LSB
Definition: SI4735.h:1104
void setSsbSoftMuteMaxAttenuation(uint8_t smattn=0)
Sets the SSB Soft Mute Max Attenuation object.
Definition: SI4735.h:1408
int8_t audioMuteMcuPin
Definition: SI4735.h:1112
#define GPIO_SET
Definition: SI4735.h:111
void setTuneFrequencyAntennaCapacitor(uint16_t capacitor)
Selects the tuning capacitor value.
Definition: SI4735.cpp:643
#define AM_SEEK_BAND_BOTTOM
Definition: SI4735.h:143
uint8_t getRdsFlagAB(void)
Returns the current Text Flag A/B
Definition: SI4735.cpp:2181
void setAmSoftMuteMaxAttenuation(uint8_t smattn=0)
Sets the Am Soft Mute Max Attenuation.
Definition: SI4735.h:1394
bool getCurrentAfcRailIndicator()
AFC Rail Indicator.
Definition: SI4735.h:1550
void analogPowerUp(void)
You have to call setPowerUp method before.
Definition: SI4735.cpp:439
uint8_t getFirmwarePN()
Returns the Firmware Part Number.
Definition: SI4735.h:1662
uint16_t value
frequency (integer value)
Definition: SI4735.h:313
void getAutomaticGainControl()
Queries Automatic Gain Control STATUS.
Definition: SI4735.cpp:999
bool getCurrentRssiDetectLow()
Checks if RSSI detected is LOW.
Definition: SI4735.h:1495
uint8_t gpo2Enable
Definition: SI4735.h:1091
bool getEndIndicatorGroupB()
Check if 0xD or 0xA special characters were received for group B.
Definition: SI4735.h:2411
void setSSBSoftMute(uint8_t SMUTESEL)
Sets SSB Soft-mute Based on RSSI or SNR Selection:
Definition: SI4735.cpp:2841
uint8_t ANTCAPH
Definition: SI4735.h:389
#define AM_SOFT_MUTE_RELEASE_RATE
Definition: SI4735.h:141
int16_t deviceAddress
Stores the current I2C bus address.
Definition: SI4735.h:1068
#define FM_NB_IIR_FILTER
Definition: SI4735.h:54
void setMaxDelaySetFrequency(uint16_t ms)
Set the Max Delay after Set Frequency.
Definition: SI4735.h:2538
void setSSBConfig(uint8_t AUDIOBW, uint8_t SBCUTFLT, uint8_t AVC_DIVIDER, uint8_t AVCEN, uint8_t SMUTESEL, uint8_t DSP_AFCDIS)
Sets the SSB receiver mode.
Definition: SI4735.cpp:2801
void convertToChar(uint16_t value, char *strValue, uint8_t len, uint8_t dot, uint8_t separator, bool remove_leading_zeros=true)
Converts a number to a char array.
Definition: SI4735.cpp:3420
#define SSB_TUNE_FREQ
Definition: SI4735.h:115
void setFmNoiseBlankThreshold(uint16_t parameter)
Set the Fm Noise Blank Threshold.
Definition: SI4735.h:1841
#define DIGITAL_OUTPUT_SAMPLE_RATE
Definition: SI4735.h:124
bool getCurrentValidChannel()
Checks if the current channel is valid.
Definition: SI4735.h:1539
void setAM()
Sets the radio to AM function. It means: LW MW and SW.
Definition: SI4735.cpp:760
void ssbPowerUp()
This function can be useful for debug and test.
Definition: SI4735.cpp:3154
#define MAX_DELAY_AFTER_POWERUP
Definition: SI4735.h:204
#define AM_SOFT_MUTE_ATTACK_RATE
Definition: SI4735.h:142
void setFrequencyStep(uint16_t step)
Sets the current step value.
Definition: SI4735.h:2568
void clearRdsBuffer2A()
Clear RDS buffer 2A (text)
Definition: SI4735.cpp:1943
#define FM_BLEND_STEREO_THRESHOLD
Definition: SI4735.h:64
uint16_t getCurrentFrequency()
Gets the current frequency saved in memory.
Definition: SI4735.h:2584
bool getRdsNewBlockA()
Get the Rds New Block A.
Definition: SI4735.h:2326
uint8_t getStatusSNR()
Gets the SNR metric when tune is complete (dB)
Definition: SI4735.h:1296
void setAMSoftMuteRate(uint8_t parameter)
Sets the attack and decay rates when entering or leaving soft mute.
Definition: SI4735.h:1944
void setMaxSeekTime(long time_in_ms)
Sets the maximum time in milliseconds for seeking. The default value is 8000ms (8s).
Definition: SI4735.h:2219
void setAMSoftMuteSlop(uint8_t parameter)
Sets the AM attenuation slope during soft mute.
Definition: SI4735.h:1929
void loadPatch(const uint8_t *ssb_patch_content, const uint16_t ssb_patch_content_size, uint8_t ssb_audiobw=1)
Loads a given SSB patch content.
Definition: SI4735.cpp:3314
void getStatus(uint8_t, uint8_t)
Gets the current status of the Si4735 (AM or FM)
Definition: SI4735.cpp:951
void setFmBlendMonoThreshold(uint8_t parameter)
Sets RSSI threshold for mono blend (Full mono below threshold, blend above threshold).
Definition: SI4735.cpp:1642
uint16_t currentMinimumFrequency
minimum frequency of the current band
Definition: SI4735.h:1080
void seekStationProgress(void(*showFunc)(uint16_t f), bool(*stopSeking)(), uint8_t up_down)
Seeks a station up or down.
Definition: SI4735.cpp:1322
uint8_t volume
Stores the current vlume setup (0-63).
Definition: SI4735.h:1108
void volumeDown()
Set sound volume level Down
Definition: SI4735.cpp:1904
bool getBandLimit()
Returns true if a seek hit the band limit.
Definition: SI4735.h:1258
void setFmBlendMultiPathStereoThreshold(uint8_t parameter)
Sets multipath threshold for stereo blend (Full stereo below threshold, blend above threshold).
Definition: SI4735.cpp:1722
void setup(uint8_t resetPin, uint8_t ctsIntEnable, uint8_t defaultFunction, uint8_t audioMode=SI473X_ANALOG_AUDIO, uint8_t clockType=XOSCEN_CRYSTAL, uint8_t gpo2Enable=0)
Starts the Si473X device.
Definition: SI4735.cpp:574
uint8_t getFirmwarePATCHH()
Returns the Firmware P A T C H HIGH.
Definition: SI4735.h:1692
int rdsTextAdress2B
rds_buffer2B current position
Definition: SI4735.h:1062
int rdsTextAdress2A
rds_buffer2A current position
Definition: SI4735.h:1061
SI4735()
Construct a new SI4735::SI4735.
Definition: SI4735.cpp:60
void setAMSoftMuteAttackRate(uint16_t parameter)
Sets the soft mute attack rate.
Definition: SI4735.h:1985
uint8_t raw[2]
Raw powerup parameters data. Same arg memory position. So, same content.
Definition: SI4735.h:248
char * getRdsTime(void)
Gets the RDS time and date when the Group type is 4.
Definition: SI4735.cpp:2454
void setRdsIntSource(uint8_t RDSRECV, uint8_t RDSSYNCLOST, uint8_t RDSSYNCFOUND, uint8_t RDSNEWBLOCKA, uint8_t RDSNEWBLOCKB)
Configures interrupt related to RDS.
Definition: SI4735.cpp:2055
#define FM_RDS_INT_SOURCE
Definition: SI4735.h:58
uint8_t raw
Definition: SI4735.h:270
uint8_t raw
Definition: SI4735.h:644
#define MAX_SEEK_TIME
Definition: SI4735.h:206
#define FM_DEEMPHASIS
Definition: SI4735.h:63
void setPowerUp(uint8_t CTSIEN, uint8_t GPO2OEN, uint8_t PATCH, uint8_t XOSCEN, uint8_t FUNC, uint8_t OPMODE)
Set the Power Up parameters for si473X.
Definition: SI4735.cpp:346
#define SI473X_ADDR_SEN_LOW
Definition: SI4735.h:32
void setAM(uint16_t fromFreq, uint16_t toFreq, uint16_t intialFreq, uint16_t step)
Sets the radio to AM (LW/MW/SW) function.
Definition: SI4735.cpp:815
#define AM_SEEK_FREQ_SPACING
Definition: SI4735.h:145
#define AM_SOFT_MUTE_SNR_THRESHOLD
Definition: SI4735.h:140
uint16_t maxDelayAfterPouwerUp
Stores the maximum delay you have to setup after a power up command (in ms).
Definition: SI4735.h:1072
void setSSBAudioBandwidth(uint8_t AUDIOBW)
SSB Audio Bandwidth for SSB mode.
Definition: SI4735.cpp:2921
si47x_set_frequency currentFrequencyParams
Definition: SI4735.h:1098
#define FM_NB_INTERVAL
Definition: SI4735.h:52
void setSBBSidebandCutoffFilter(uint8_t SBCUTFLT)
Sets SBB Sideband Cutoff Filter for band pass and low pass filters.
Definition: SI4735.cpp:2891
#define DIGITAL_OUTPUT_FORMAT
Definition: SI4735.h:123
void setAmAgcReleaseRate(uint16_t parameter)
Sets the AGC release rate.
Definition: SI4735.h:2011
void rdsClearFifo()
Empty FIFO.
Definition: SI4735.h:2448
void getSsbAgcStatus()
Queries SSB Automatic Gain Control STATUS.
Definition: SI4735.cpp:3023
bool rdsEndGroupA
Definition: SI4735.h:1065
void setFmBLendSnrMonoThreshold(uint8_t parameter)
Sets SNR threshold for mono blend (Full mono below threshold, blend above threshold).
Definition: SI4735.cpp:1706
char * getRdsText2A(void)
Gets the Text processed for the 2A group.
Definition: SI4735.cpp:2383
#define NBFM_RSQ_STATUS
Definition: SI4735.h:86
void setFrequencyNBFM(uint16_t freq)
Set the frequency to the corrent function of the Si4735 on NBFM mode.
Definition: SI4735.cpp:3612
void setRdsConfig(uint8_t RDSEN, uint8_t BLETHA, uint8_t BLETHB, uint8_t BLETHC, uint8_t BLETHD)
Sets RDS property.
Definition: SI4735.cpp:2009
void setFmBlendSnrStereoThreshold(uint8_t parameter)
Sets SNR threshold for stereo blend (Full stereo above threshold, blend below threshold).
Definition: SI4735.cpp:1690
void setSeekAmRssiThreshold(uint16_t value)
Sets the RSSI threshold for a valid AM Seek/Tune.
Definition: SI4735.cpp:1446
void setSSBSidebandCutoffFilter(uint8_t SBCUTFLT)
Definition: SI4735.h:2492
void setAvcAmMaxGain(uint8_t gain=90)
Sets the maximum gain for automatic volume control.
Definition: SI4735.cpp:1084
void setFmNoiseBlank(uint16_t nb_rate=64, uint16_t nb_interval=55, uint16_t nb_irr_filter=300)
Set the Fm Noise Blank.
Definition: SI4735.h:1858
uint8_t ANTCAPL
Definition: SI4735.h:390
void seekNextStation()
Search for the next station.
Definition: SI4735.cpp:1215
#define SSB_AGC_STATUS
Definition: SI4735.h:118
#define DEFAULT_CURRENT_AVC_AM_MAX_GAIN
Definition: SI4735.h:208
uint8_t raw[13]
Definition: SI4735.h:699
bool isAgcEnabled()
Checks if the AGC is enabled.
Definition: SI4735.h:1443
SI4735 Class.
Definition: SI4735.h:1053
uint8_t resetPin
pin used on Arduino Board to RESET the Si47XX device
Definition: SI4735.h:1076
void setI2CFastMode(void)
Sets I2C bus to 400kHz.
Definition: SI4735.h:2631
void resetEndIndicatorGroupB()
Resets 0xD or 0xA special characters condition (makes it false)
Definition: SI4735.h:2421
#define FM_NB_DELAY
Definition: SI4735.h:55
bool getCurrentRssiDetectHigh()
Checks if RSSI detected is high.
Definition: SI4735.h:1506
uint8_t raw[32]
Definition: SI4735.h:1020
bool getRdsSync()
Get the Rds Sync.
Definition: SI4735.h:2348
#define AM_TUNE_STATUS
Definition: SI4735.h:106
uint8_t ARG2
Definition: SI4735.h:387
void setup(uint8_t resetPin, uint8_t defaultFunction)
Starts the Si473X device.
Definition: SI4735.cpp:614
void setSSB(uint8_t usblsb)
Set the radio to AM function.
Definition: SI4735.cpp:2944
uint8_t raw
Definition: SI4735.h:373
#define SI473X_ADDR_SEN_HIGH
Definition: SI4735.h:33
uint16_t refClock
Frequency of Reference Clock in Hz.
Definition: SI4735.h:1093
int16_t getDeviceI2CAddress(uint8_t resetPin)
I2C bus address setup.
Definition: SI4735.cpp:224
void setSeekFmRssiThreshold(uint16_t value)
Sets the RSSI threshold for a valid FM Seek/Tune.
Definition: SI4735.cpp:1460
void seekStationDown()
Search the previous station.
Definition: SI4735.h:2245
uint8_t raw[2]
Definition: SI4735.h:929
void setI2CStandardMode(void)
Sets I2C bus to 100kHz.
Definition: SI4735.h:2624
bool getStatusCTS()
Gets the Error flag Clear to Send.
Definition: SI4735.h:1237
void setSsbIfAgcAttackRate(uint8_t param=4)
Sets the IF AGC attack rate.
Definition: SI4735.h:1432
bool getGroupLost()
Get the Group Lost.
Definition: SI4735.h:2359
#define FM_RDS_INT_FIFO_COUNT
Definition: SI4735.h:59
#define NBFM_AGC_OVERRIDE
Definition: SI4735.h:88
void setFmSoftMuteMaxAttenuation(uint8_t smattn=0)
Sets the Fm Soft Mute Max Attenuation.
Definition: SI4735.h:1831
bool isCurrentTuneSSB()
Returns true if the current function is SSB (SSB_TUNE_FREQ).
Definition: SI4735.h:2116
uint8_t getFirmwareCMPMAJOR()
Get the Firmware C M P M A J O R object.
Definition: SI4735.h:1712
void getCurrentReceivedSignalQuality(uint8_t INTACK)
Queries the status of the Received Signal Quality (RSQ) of the current channel.
Definition: SI4735.cpp:1105
void setAudioMode(uint8_t audioMode)
Sets the Audio Mode. See table below.
Definition: SI4735.h:1782
void setSeekFmLimits(uint16_t bottom, uint16_t top)
Sets the bottom frequency and top frequency of the FM band for seek. Default is 8750 to 10790.
Definition: SI4735.cpp:1373
void getNext4Block(char *)
Process data received from group 2A.
Definition: SI4735.cpp:2290
#define NBFM_AGC_STATUS
Definition: SI4735.h:87
void setSSB(uint16_t fromFreq, uint16_t toFreq, uint16_t intialFreq, uint16_t step, uint8_t usblsb)
Definition: SI4735.cpp:2976
#define AM_SEEK_START
Definition: SI4735.h:105
uint16_t value
Definition: SI4735.h:327
bool getStatusError()
Get the Status Error.
Definition: SI4735.h:1226
#define AM_SOFT_MUTE_SLOPE
Definition: SI4735.h:138
#define AM_NB_RATE
Definition: SI4735.h:153
void setSSBAutomaticVolumeControl(uint8_t AVCEN)
Sets SSB Automatic Volume Control (AVC) for SSB mode.
Definition: SI4735.cpp:2856
void setFrequencyDown()
Set the Frequency Down.
Definition: SI4735.h:2203
uint8_t raw[3]
Definition: SI4735.h:907
char rds_buffer2A[65]
RDS Radio Text buffer - Program Information.
Definition: SI4735.h:1056
#define AM_FRONTEND_AGC_CONTROL
Definition: SI4735.h:150
void reset(void)
Reset the SI473X
Definition: SI4735.cpp:297
#define REFCLK_PRESCALE
Definition: SI4735.h:126
#define RX_HARD_MUTE
Definition: SI4735.h:158
si47x_firmware_query_library queryLibraryId()
Query the library information of the Si47XX device.
Definition: SI4735.cpp:3097
uint8_t ARG3
Definition: SI4735.h:388
bool getCurrentMultipathDetectLow()
Get Multipath Detect Low.
Definition: SI4735.h:1624
#define SSB_IF_AGC_ATTACK_RATE
Definition: SI4735.h:177
#define SET_PROPERTY
Definition: SI4735.h:38
uint8_t getRdsVersionCode(void)
Gets the version code (extracted from the Block B)
Definition: SI4735.cpp:2219
void setSeekAmSrnThreshold(uint16_t value)
Sets the SNR threshold for a valid AM Seek/Tune.
Definition: SI4735.cpp:1416
#define FM_SEEK_FREQ_SPACING
Definition: SI4735.h:78
#define AM_AGC_ATTACK_RATE
Definition: SI4735.h:148
#define FM_BLEND_SNR_STEREO_THRESHOLD
Definition: SI4735.h:68
#define NBFM_TUNE_STATUS
Definition: SI4735.h:85
char * getRdsText2B(void)
Gets the Text processed for the 2B group.
Definition: SI4735.cpp:2416
void getRdsStatus(uint8_t INTACK, uint8_t MTFIFO, uint8_t STATUSONLY)
Gets the RDS status. Store the status in currentRdsStatus member. RDS COMMAND FM_RDS_STATUS.
Definition: SI4735.cpp:2097
#define GET_PROPERTY
Definition: SI4735.h:39
uint16_t maxDelaySetFrequency
Stores the maximum delay after set frequency command (in ms).
Definition: SI4735.h:1071
#define FM_BLEND_MONO_THRESHOLD
Definition: SI4735.h:65
#define FM_SEEK_BAND_BOTTOM
Definition: SI4735.h:76
#define FM_TUNE_FREQ
Definition: SI4735.h:43
bool getRadioDataSystemInterrupt()
Get the Radio Data System (RDS) Interrupt status.
Definition: SI4735.h:1204
void setGpioCtl(uint8_t GPO1OEN, uint8_t GPO2OEN, uint8_t GPO3OEN)
Enables output for GPO1, 2, and 3.
Definition: SI4735.cpp:119
void sendProperty(uint16_t propertyNumber, uint16_t param)
Sends (sets) property to the SI47XX.
Definition: SI4735.cpp:1482
#define SSB_MODE
Definition: SI4735.h:165
void clearRdsBuffer2B()
Clear RDS buffer 2B (text)
Definition: SI4735.cpp:1956
#define AM_AGC_STATUS
Definition: SI4735.h:108
#define XOSCEN_RCLK
Definition: SI4735.h:211
void clearRdsBuffer0A()
Clear RDS buffer 0A (text)
Definition: SI4735.cpp:1968
si47x_agc_status currentAgcStatus
current AGC status
Definition: SI4735.h:1103
void setDeviceI2CAddress(uint8_t senPin)
Sets the I2C Bus Address.
Definition: SI4735.cpp:269
uint8_t currentTune
tell the current tune (FM, AM or SSB)
Definition: SI4735.h:1078
void getStatus()
Gets the current status of the Si47XX (AM, FM or SSB)
Definition: SI4735.h:2595
void setFmBlendMultiPathMonoThreshold(uint8_t parameter)
Sets Multipath threshold for mono blend (Full mono above threshold, blend below threshold).
Definition: SI4735.cpp:1738
#define FM_SEEK_BAND_TOP
Definition: SI4735.h:77
uint8_t getFirmwareCMPMINOR()
RESP6 - Returns the Component Major Revision (ASCII).
Definition: SI4735.h:1722
#define SSB_RF_AGC_RELEASE_RATE
Definition: SI4735.h:175
#define AM_SEEK_BAND_TOP
Definition: SI4735.h:144
void setSeekFmSNRThreshold(uint16_t value)
Definition: SI4735.h:2268
void radioPowerUp(void)
Powerup the Si47XX.
Definition: SI4735.cpp:404
uint8_t raw[8]
Check it.
Definition: SI4735.h:454
#define GET_REV
Definition: SI4735.h:36
void setAutomaticGainControl(uint8_t AGCDIS, uint8_t AGCIDX)
Automatic Gain Control setup.
Definition: SI4735.cpp:1044
uint8_t raw[2]
Definition: SI4735.h:978
#define AM_SOFT_MUTE_MAX_ATTENUATION
Definition: SI4735.h:139
void setAudioMute(bool off)
Sets the audio on or off.
Definition: SI4735.cpp:1861
uint8_t getCurrentAvcAmMaxGain()
Get the current Avc Am Max Gain.
Definition: SI4735.h:1378
void setTuneFrequencyFreze(uint8_t FREEZE)
Sets Freeze Metrics During Alternate Frequency Jum.
Definition: SI4735.h:2179
void RdsInit()
Starts the control member variables for RDS.
Definition: SI4735.cpp:1929
void mjdConverter(uint32_t mjd, uint32_t *year, uint32_t *month, uint32_t *day)
Converts the MJD number to integers Year, month and day.
Definition: SI4735.cpp:2519
uint8_t raw[9]
Definition: SI4735.h:488
void disableFmDebug()
There is a debug feature that remains active in Si4704/05/3x-D60 firmware which can create periodic n...
Definition: SI4735.cpp:1773
uint16_t currentStep
Stores the current step used to increment or decrement the frequency.
Definition: SI4735.h:1084
si4735_eeprom_patch_header downloadPatchFromEeprom(int eeprom_i2c_address)
Transfers the content of a patch stored in an eeprom to the SI4735 device.
Definition: SI4735.cpp:3344
uint8_t raw[8]
Definition: SI4735.h:524
uint8_t lastTextFlagAB
Definition: SI4735.h:1075
void setSsbAgcOverrite(uint8_t SSBAGCDIS, uint8_t SSBAGCNDX, uint8_t reserved=0)
Automatic Gain Control setup.
Definition: SI4735.cpp:3050
uint8_t getFirmwareFWMINOR()
Returns the Firmware F W M I N O R.
Definition: SI4735.h:1682
uint8_t currentAudioMode
Current audio mode used (ANALOG or DIGITAL or both)
Definition: SI4735.h:1110
void setFMDeEmphasis(uint8_t parameter)
Sets the FM Receive de-emphasis to 50 or 75 μs.
Definition: SI4735.h:1815
void setAMDeEmphasis(uint8_t parameter)
Sets the AM Receive de-emphasis to 50 or disable.
Definition: SI4735.h:1913
void setVolumeUp()
Set the Volume Up.
Definition: SI4735.h:1755
void seekStation(uint8_t SEEKUP, uint8_t WRAP)
Look for a station (Automatic tune)
Definition: SI4735.cpp:1172
bool rdsEndGroupB
Definition: SI4735.h:1066
#define FM_SEEK_TUNE_RSSI_THRESHOLD
Definition: SI4735.h:80
uint8_t getFirmwareFWMAJOR()
Returns the Firmware F W M A J O R.
Definition: SI4735.h:1672
void setSsbIfAgcReleaseRate(uint8_t param=140)
Sets the number of milliseconds the low IF peak detector.
Definition: SI4735.h:1420
#define SEEK_UP
Definition: SI4735.h:200
void setFmBLendRssiMonoThreshold(uint8_t parameter)
Sets RSSI threshold for mono blend (Full mono below threshold, blend above threshold).
Definition: SI4735.cpp:1674
#define AM_RSQ_STATUS
Definition: SI4735.h:107
si473x_powerup powerUp
Definition: SI4735.h:1106
uint16_t currentMaximumFrequency
maximum frequency of the current band
Definition: SI4735.h:1081
bool downloadCompressedPatch(const uint8_t *ssb_patch_content, const uint16_t ssb_patch_content_size, const uint16_t *cmd_0x15, const int16_t cmd_0x15_size)
Same downloadPatch.
Definition: SI4735.cpp:3273
void setAmNoiseBlank(uint16_t nb_rate=64, uint16_t nb_interval=55, uint16_t nb_irr_filter=300)
Set the Am Noise Blank.
Definition: SI4735.h:2080
uint8_t getCurrentStereoBlend()
Gets the value of the amount of stereo blend in % (100 = full stereo, 0 = full mono).
Definition: SI4735.h:1576
#define FM_CHANNEL_FILTER
Definition: SI4735.h:72
void setAvcAmMaxGain()
Sets the Avc Am Max Gain to maximum gain (0x7800)
Definition: SI4735.h:1343
uint8_t raw[8]
Definition: SI4735.h:609
#define AM_NB_DELAY
Definition: SI4735.h:155
#define AM_DEEMPHASIS
Definition: SI4735.h:127
char * getRdsText(void)
Gets the RDS Text when the message is of the Group Type 2 version A.
Definition: SI4735.cpp:2326
#define FM_RSQ_STATUS
Definition: SI4735.h:48
int rdsTextAdress0A
rds_buffer0A current position
Definition: SI4735.h:1063
bool getStatusValid()
Gets the channel status.
Definition: SI4735.h:1272
uint8_t ctsIntEnable
Definition: SI4735.h:1090
void setNBFM(uint16_t fromFreq, uint16_t toFreq, uint16_t initialFreq, uint16_t step)
Definition: SI4735.cpp:3584
void setSeekAmSNRThreshold(uint16_t value)
Definition: SI4735.h:2260
#define FM_AGC_OVERRIDE
Definition: SI4735.h:47
uint16_t value
Definition: SI4735.h:561
void setFifoCount(uint16_t value)
Sets the minimum number of RDS groups stored in the RDS FIFO before RDSRECV is set.
Definition: SI4735.h:2381
#define FM_BLEND_MULTIPATH_MONO_THRESHOLD
Definition: SI4735.h:71
#define FM_SEEK_START
Definition: SI4735.h:44
void getRdsStatus()
Gets RDS Status.
Definition: SI4735.h:2437
void setHardwareAudioMute(bool on)
Sets the Hardware Audio Mute.
Definition: SI4735.h:2675
void volumeUp()
Set sound volume level Up
Definition: SI4735.cpp:1890
bool getRdsDateTime(uint16_t *year, uint16_t *month, uint16_t *day, uint16_t *hour, uint16_t *minute)
Decodes the RDS time to LOCAL Julian Day and time.
Definition: SI4735.cpp:2558
void setI2CLowSpeedMode(void)
Sets I2C bus to 10kHz.
Definition: SI4735.h:2614
uint8_t getNumRdsFifoUsed()
Get the Num Rds Fifo Used.
Definition: SI4735.h:2370
uint16_t raw
Definition: SI4735.h:297
void setFmBandwidth(uint8_t filter_value=0)
Sets the Bandwith on FM mode.
Definition: SI4735.h:2136
si47x_firmware_information firmwareInfo
firmware information
Definition: SI4735.h:1101
bool getRdsNewBlockB()
Get the Rds New Block B.
Definition: SI4735.h:2337
uint16_t getAntennaTuningCapacitor()
Get the Antenna Tuning Capacitor value.
Definition: SI4735.h:1323
void digitalOutputSampleRate(uint16_t DOSR)
Enables digital audio output and configures digital audio output sample rate in samples per second (s...
Definition: SI4735.cpp:1830
#define AM_SOFT_MUTE_RATE
Definition: SI4735.h:137
void getNext2Block(char *)
Process data received from group 2B.
Definition: SI4735.cpp:2255
uint8_t getStatusMULT()
Get the Status the M U L T.
Definition: SI4735.h:1309
int32_t getProperty(uint16_t propertyValue)
Gets a given property from the SI47XX.
Definition: SI4735.cpp:1582
void setAmAgcAttackRate(uint16_t parameter)
Sets the AGC attack rate.
Definition: SI4735.h:1998
void getFirmware(void)
Gets firmware information.
Definition: SI4735.cpp:476
#define RX_VOLUME
Definition: SI4735.h:157
#define AM_AUTOMATIC_VOLUME_CONTROL_MAX_GAIN
Definition: SI4735.h:129
#define FM_NB_DETECT_THRESHOLD
Definition: SI4735.h:51
void setTuneFrequencyFast(uint8_t FAST)
Sets the FAST Tuning.
Definition: SI4735.h:2158
void setAvcAmDefaultGain()
Sets the Avc Am Max Gain to default gain (0x2A80)
Definition: SI4735.h:1363
#define MIN_DELAY_WAIT_SEND_LOOP
Definition: SI4735.h:205
void setSSBBfo(int offset)
Sets the SSB Beat Frequency Offset (BFO).
Definition: SI4735.cpp:2752
#define AM_SEEK_SNR_THRESHOLD
Definition: SI4735.h:146
bool getCurrentSnrDetectLow()
Checks if SNR detect is low.
Definition: SI4735.h:1517
uint16_t DOSR
Definition: SI4735.h:1034
uint8_t currentClockType
Stores the current clock type used (Crystal or REF CLOCK)
Definition: SI4735.h:1089
uint8_t getCurrentSNR()
Gets the current SNR metric (0–127 dB).
Definition: SI4735.h:1484
#define POWER_DOWN
Definition: SI4735.h:37
uint8_t getCurrentVolume()
Get the Current Volume.
Definition: SI4735.h:1747
void sendSSBModeProperty()
Just send the property SSB_MOD to the device. Internal use (privete method).
Definition: SI4735.cpp:2997
void setFmBlendStereoThreshold(uint8_t parameter)
Sets RSSI threshold for stereo blend (Full stereo above threshold, blend below threshold).
Definition: SI4735.cpp:1626
#define AM_CHANNEL_FILTER
Definition: SI4735.h:128
#define SI473X_ANALOG_AUDIO
Definition: SI4735.h:189
void setSSBDspAfc(uint8_t DSP_AFCDIS)
Sets DSP AFC disable or enable.
Definition: SI4735.cpp:2826
#define GPIO_CTL
Definition: SI4735.h:110
void loadPatchNBFM(const uint8_t *patch_content, const uint16_t patch_content_size)
Loads a given NBFM patch content.
Definition: SI4735.cpp:3529
void frequencyDown()
Decrements the current frequency on current band/function by using the current step.
Definition: SI4735.cpp:738
bool getCurrentBlendDetectInterrupt()
Gets the Current Blend Detect Interrupt.
Definition: SI4735.h:1646
void setAmDelayNB(uint16_t value)
Sets the delay before applying impulse blanking.
Definition: SI4735.h:1794
uint8_t raw[2]
Definition: SI4735.h:956
void setRefClock(uint16_t refclk)
Sets the frequency of the REFCLK from the output of the prescaler.
Definition: SI4735.cpp:519
void setSeekAmLimits(uint16_t bottom, uint16_t top)
Sets the bottom frequency and top frequency of the AM band for seek. Default is 520 to 1710.
Definition: SI4735.cpp:1357
uint8_t getTuneFrequecyFast()
Returns the FAST tuning status.
Definition: SI4735.h:2147
#define FM_BLEND_MULTIPATH_STEREO_THRESHOLD
Definition: SI4735.h:70
bool getCurrentSoftMuteIndicator()
Soft Mute Indicator.
Definition: SI4735.h:1563
#define FM_SOFT_MUTE_MAX_ATTENUATION
Definition: SI4735.h:73
#define GET_INT_STATUS
Definition: SI4735.h:40
char rds_buffer0A[9]
RDS Basic tuning and switching information (Type 0 groups)
Definition: SI4735.h:1058
void setSSBAvcDivider(uint8_t AVC_DIVIDER)
Sets AVC Divider.
Definition: SI4735.cpp:2871
#define REFCLK_FREQ
Definition: SI4735.h:125
bool getTuneCompleteTriggered()
Get the Tune Complete status.
Definition: SI4735.h:1215
#define AM_SEEK_RSSI_THRESHOLD
Definition: SI4735.h:147
#define SSB_CURRENT_MODE
Definition: SI4735.h:197
bool getRdsSyncLost()
Get the Rds Sync Lost object.
Definition: SI4735.h:2303
#define FM_RDS_CONFIG
Definition: SI4735.h:60
void setBandwidth(uint8_t AMCHFLT, uint8_t AMPLFLT)
Selects the bandwidth of the channel filter for AM reception.
Definition: SI4735.cpp:889
bool getCurrentPilot()
Checks the current pilot.
Definition: SI4735.h:1589
bool getRdsSyncFound()
Get the Rds Sync Found.
Definition: SI4735.h:2314
void getCommandResponse(int num_of_bytes, uint8_t *response)
Returns with the command response.
Definition: SI4735.cpp:1536
uint16_t currentWorkFrequency
current frequency
Definition: SI4735.h:1082
void setAvcAmMinGain()
Sets the Avc Am Max Gain to minimal gain (0x1000)
Definition: SI4735.h:1353
void setFrequency(uint16_t)
Set the frequency to the corrent function of the Si4735 (FM, AM or SSB)
Definition: SI4735.cpp:683