PU2CLR SI4844 Arduino Library 1.1.5
Arduino Library for Si4844 Devices - By Ricardo Lima Caratti
|
Functions | |
void | SI4844::audioMute (uint8_t value) |
Mutes the audio output. | |
void | SI4844::bassTrebleDown () |
Less treble, more bass. | |
void | SI4844::bassTrebleUp () |
More treble, less bass. | |
void | SI4844::changeVolume (char) |
Up or down the sound volume level. | |
void | SI4844::debugDevice (uint16_t resetPin, uint16_t interruptPin, uint8_t defaultBand, void(*showFunc)(char *msg)) |
Used to debug | |
char * | SI4844::getBandMode () |
Get the Band Mode. | |
si4844_firmware_response * | SI4844::getFirmware (void) |
Get part number, chip revision, firmware, patch, and component revision numbers. | |
float | SI4844::getFrequency (void) |
Get the current frequency of the radio in KHz. | |
si4844_status_response * | SI4844::getStatus (void) |
Get tune freq, band, and others information, status of the device. | |
char * | SI4844::getStereoIndicator () |
Get the Stereo Indicator. | |
uint8_t | SI4844::getVolume () |
Gets the current audio volume level. | |
uint8_t | SI4844::getVolumeProperty () |
Gets the current volume value stored in SI4844 device. | |
bool | SI4844::hasStatusChanged (void) |
Checks whether the SI4844 has its status changed. | |
void | SI4844::powerDown (void) |
Power the device down. | |
void | SI4844::powerUp (void) |
Power the device up. | |
void | SI4844::reset (void) |
Resets the SI4844 device. | |
void | SI4844::resetStatus (void) |
set the interrupr status to false. It will turn true after next interrupr | |
void | SI4844::setAmSoftMuteMaxAttenuation (uint8_t value) |
Sets AM Soft Mute Max Attenuation.. | |
void | SI4844::setAmSoftMuteRate (uint8_t value) |
Sets the attack and decay rates when entering or leaving soft mute. | |
void | SI4844::setAmSoftMuteSlope (uint8_t value) |
Configures attenuation slope during soft mute in dB attenuation per dB SNR below the soft mute SNR threshold. | |
void | SI4844::setAmSoftMuteSnrThreshold (uint8_t value) |
Sets the SNR threshold to engage soft mute. | |
si4844_audiomode_status_response | SI4844::setAudioMode (uint8_t audiomode, uint8_t fm_mono, uint8_t adjpt_attn, uint8_t adjpt_steo, uint8_t opcode) |
Set audio mode. | |
void | SI4844::setAudioMute (bool on) |
Mutes the audio output. | |
void | SI4844::setBand (byte) |
Sets a new band to the device. | |
void | SI4844::setBassTreble (uint8_t bass_treble) |
Set the sound volume level, bass and treble. | |
void | SI4844::setBlendThresholdStereoIndicator (uint16_t value) |
Sets the blend threshold for stereo indicator. | |
void | SI4844::setCrystalOscillatorEnable (uint8_t XOSCEN) |
Sets Crystal Oscillator Enable. | |
void | SI4844::setCrystalOscillatorStabilizationWaitTime (uint8_t XOWAIT) |
Sets Crystal Oscillator Stabilization Wait Time After Reset. | |
void | SI4844::setCustomBand (uint8_t bandIndex, uint16_t botton, uint16_t top, uint8_t bandSpace, uint8_t dfband=0, uint8_t uni_am=0, uint8_t tvreq=0) |
This method allows you to customize the frequency range of a band. | |
void | SI4844::setFmDeemphasis (uint8_t value) |
Sets de-emphasis time constant. | |
void | SI4844::setFmSoftMuteMaxAttenuation (uint8_t value) |
FM Soft Mute Maximum Attenuation. | |
void | SI4844::setFmSoftMuteRate (uint8_t value) |
Sets the attack and decay rates when entering and leaving soft mute. | |
void | SI4844::setFmSoftMuteSlope (uint8_t value) |
Configures attenuation slope during soft mute in dB attenuation per dB SNR below the soft mute SNR threshold. | |
void | SI4844::setReferenceClockFrequency (uint16_t value) |
Sets the frequency of the REFCLK from the output of the prescaler. | |
void | SI4844::setReferenceClockPrescaler (uint16_t value) |
Sets the number used by the prescaler to divide the external reference clock frequency down to the internal REFCLK. | |
void | SI4844::setup (uint16_t resetPin, int interruptPin, byte defaultBand) |
Initiates the SI4844 instance and connect the device (SI4844) to Arduino. | |
void | SI4844::setVolume (byte) |
Sets the volume level. | |
void | SI4844::volumeDown (void) |
Decreases the volume level. | |
void | SI4844::volumeUp (void) |
Increases the volume level. | |
void SI4844::audioMute | ( | uint8_t | value | ) |
Mutes the audio output.
value | value 0 = normal (no mute); 1 = Right side mute; 2; Left side mute; 3 = both side |
void SI4844::bassTrebleDown | ( | ) |
Less treble, more bass.
void SI4844::bassTrebleUp | ( | ) |
More treble, less bass.
void SI4844::changeVolume | ( | char | command | ) |
void SI4844::debugDevice | ( | uint16_t | resetPin, |
uint16_t | interruptPin, | ||
uint8_t | defaultBand, | ||
void(*)(char *msg) | showFunc | ||
) |
Used to debug
use this function instead setup to check your implementation
resetPin | same call setup; |
interruptPin | same call setup |
defaultBand | same call setup |
showFunc | function of your sketch that will be called to show something |
References SI4844::getFirmware(), and SI4844::reset().
|
inline |
Get the Band Mode.
si4844_firmware_response * SI4844::getFirmware | ( | void | ) |
Get part number, chip revision, firmware, patch, and component revision numbers.
You do not need to call this method. It is executed just once at setup methos.
There are other methods that give you that information.
Referenced by SI4844::debugDevice(), and SI4844::setup().
float SI4844::getFrequency | ( | void | ) |
Get the current frequency of the radio in KHz.
For example: FM, 103900 KHz (103.9 MHz); SW, 7335 KHz (7.34 MHz, 41m)
References SI4844::getStatus().
si4844_status_response * SI4844::getStatus | ( | void | ) |
Get tune freq, band, and others information, status of the device.
Use this method only if you want to deal with that information by yourself.
This library has other methods to get that information easier.
Referenced by SI4844::getFrequency(), SI4844::setBand(), and SI4844::setCustomBand().
|
inline |
Get the Stereo Indicator.
|
inline |
Gets the current audio volume level.
byte SI4844::getVolumeProperty | ( | ) |
bool SI4844::hasStatusChanged | ( | void | ) |
Checks whether the SI4844 has its status changed.
Actually it checks if the device triggered an external interruption due to some internal event.
For example: If you move the tuner, the status of the device is changed.
void SI4844::powerDown | ( | void | ) |
Power the device down.
Moves the SI4844 device from power up to power down mode.
void SI4844::powerUp | ( | void | ) |
Power the device up.
Moves the SI4844 device from power down to power up
void SI4844::reset | ( | void | ) |
Resets the SI4844 device.
Prepares the system to be started.
Referenced by SI4844::debugDevice(), SI4844::setBand(), and SI4844::setup().
void SI4844::resetStatus | ( | void | ) |
set the interrupr status to false. It will turn true after next interrupr
void SI4844::setAmSoftMuteMaxAttenuation | ( | uint8_t | value | ) |
Sets AM Soft Mute Max Attenuation..
Maximum attenuation to apply when in soft mute. Specified in units of dB. Default maximum attenuation is 16 dB.
Set to 0 to disable soft mute. Valid range: 0 - 63.
value | number between 0 and 63 |
void SI4844::setAmSoftMuteRate | ( | uint8_t | value | ) |
Sets the attack and decay rates when entering or leaving soft mute.
The value specified is multiplied by 4.35 dB/s to come up with the actual attack rate. The CTS bit is set when it is safe to send the next command.
This property may only be set or read when in power up mode. The default rate is 278 dB/s.
Determines how quickly the AM goes into soft mute when soft mute is enabled. The actual rate is calculated by taking the value written to the field
and multiplying it with 4.35 dB/s. The default rate is 278 dB/s (SMRATE[15:0] = 0x0040).
Default: 0x0040; Actual Rate: SMRATE x 4.35; Units: dB/s
value | 1–255 |
void SI4844::setAmSoftMuteSlope | ( | uint8_t | value | ) |
Configures attenuation slope during soft mute in dB attenuation per dB SNR below the soft mute SNR threshold.
Soft mute attenuation is the minimum of SMSLOPE x (SMTHR – SNR) and SMATTN. The recommended SMSLOPE value is CEILING(SMATTN/SMTHR).
SMATTN and SMTHR are set via the AM_SOFT_MUTE_MAX_ATTENUATION and AM_SOFT_MUTE_SNR_THRESHOLD properties. The CTS bit is
set when it is safe to send the next command. This property may only be set or read when in power up mode. The
default slope is 2 dB/dB. Default: 0x0001 Units: dB/dB
value | 1–5 |
void SI4844::setAmSoftMuteSnrThreshold | ( | uint8_t | value | ) |
Sets the SNR threshold to engage soft mute.
Whenever the SNR for a tuned frequency drops below this threshold the AM reception will go in soft mute, provided soft mute max attenuation property is non-zero. The CTS bit is set when it is safe to send the next command.
This property may only be set or read when in power up mode. The default SNR threshold is 8.
Default: 0x0008; Units: dB;
value | 0–63 |
si4844_audiomode_status_response SI4844::setAudioMode | ( | uint8_t | audiomode, |
uint8_t | fm_mono, | ||
uint8_t | adjpt_attn, | ||
uint8_t | adjpt_steo, | ||
uint8_t | opcode | ||
) |
Set audio mode.
byte | audio_mode 0 = Digital volume mode (no bass/treble effect, volume levels from 0 to 63) 1 = Bass/treble mode (no digital volume control, fixed volume level at 59) 2 = Mixed mode 1 (bass/treble and digital volume coexist, max volume = 59) 3 = Mixed mode 2 (bass/treble and digital volume coexist, max volume = 63) Default is 3 (Mixed mode 2). |
byte | fm_mono 0 = Stereo audio output (default) 1 = Mono audio output |
byte | adjpt_attn Audio attention of adjacent tune wheel positions of a station 0 = {–2 dB, -0dB, –2 dB} i.e., adjacent points volume levels –2 dB (default) 1 = {–0 dB, -0dB, –0 dB} i.e., adjacent points same volume levels |
byte | adjpt_steo 0 = Adjacent points allow stereo separation and stereo indicator on (default) 1 = Adjacent points disable stereo separation and stereo indicator are off |
byte | opcode 0 = Set audio mode and settings 1 = Get current audio mode and settings without setting |
void SI4844::setAudioMute | ( | bool | on | ) |
Mutes the audio output.
bool | on false = normal (no mute); true = mute |
void SI4844::setBand | ( | byte | new_band | ) |
Sets a new band to the device.
This method is used to select a band
new_band | band number. |
References SI4844::getStatus(), and SI4844::reset().
void SI4844::setBassTreble | ( | uint8_t | bass_treble | ) |
Set the sound volume level, bass and treble.
bass_treble | Description |
---|---|
0 | Bass boost +4 (max) |
1 | Bass boost +3 |
2 | Bass boost +2 |
3 | Bass boost +1 (min) |
4 | Normal (No Bass/Treble effect) (Default) 5- Treble boost +1 (min) |
6 | Treble boost +2 |
7 | Treble boost +3 |
8 | Treble boost +4 (max) |
bass_treble | bass and treble (domain: 0 to 8). See table above |
void SI4844::setBlendThresholdStereoIndicator | ( | uint16_t | value | ) |
Sets the blend threshold for stereo indicator.
The CTS bit is set when it is safe to send the next command. This property may only be set or read when in powerup mode.
The default value is band dependent (either 0x9F or 0xB2)
Default: 0x009F or 0x00B2 (Band dependent)
value | 0–0xFF |
void SI4844::setCrystalOscillatorEnable | ( | uint8_t | XOSCEN | ) |
Sets Crystal Oscillator Enable.
0 = Use external RCLK (crystal oscillator disabled).
1 = Use crystal oscillator (XTALI and XTALO with external 32.768 kHz crystal).
See the Si484x Data Sheet Application Schematic for external BOM details.
XOSCEN | 1 = Enable (XTALI and XTALO with external 32.768 kHz crystal) |
void SI4844::setCrystalOscillatorStabilizationWaitTime | ( | uint8_t | XOWAIT | ) |
Sets Crystal Oscillator Stabilization Wait Time After Reset.
0 = 600 ms (for typical crystal)
1 = 900 ms (for crystal requiring extra stabilization time)
Note: Applicable to Si4822/26/40/44A parts only. Later Si4827/44B parts don’t care this bit and will wait till crystal oscillation is stable unconditionally.
XOSCEN | 1 = Enable (XTALI and XTALO with external 32.768 kHz crystal) |
void SI4844::setCustomBand | ( | uint8_t | bandIndex, |
uint16_t | botton, | ||
uint16_t | top, | ||
uint8_t | bandSpace, | ||
uint8_t | dfband = 0 , |
||
uint8_t | uni_am = 0 , |
||
uint8_t | tvreq = 0 |
||
) |
This method allows you to customize the frequency range of a band.
The SI4844 can work from 2.3–28.5 MHz on SW, 64.0–109.0MHz on FM
You can configure the band index 40, for example, to work between 27 to 28 MHz.
(top – button)/(bandSpace) must be betwenn 50 and 230
bandIndes | Predefined band index (valid values: betwenn 0 and 40) |
button | Band Bottom Frequency Limit |
top | Band Top Frequency Limit |
bandSpace | Channel Spacing (use 5 or 10 - On FM 10 = 100KHz) |
dfband | Default Band Settings; 0 = Allow host controller to override the band property settings; 1 = Force to use tuner default band property settings (Applicable to Si4827 part only) |
uni_am | Universal AM Band. 0 = Disable universal AM band (default AFC range of 1.1 kHz); 1 = Enable universal AM band (wider AFC range in tuning); Applicable to Si4827 and Si4844B parts and AMRX mode only |
tvreq | TV Audio Channel Frequency Display; 0 = Disable TV audio channel frequency display format; 1 = Enable TV audio channel frequency display format; Applicable to Si4827 and Si4844B parts and FMRX mode only |
References SI4844::getStatus().
void SI4844::setFmDeemphasis | ( | uint8_t | value | ) |
Sets de-emphasis time constant.
Sets the FM Receive de-emphasis to 50 or 75 μs. Default is 75 μs.
value | 1 = 50 μs. Used in Europe, Australia, Japan, China; 2 = 75 μs. Used in USA |
void SI4844::setFmSoftMuteMaxAttenuation | ( | uint8_t | value | ) |
FM Soft Mute Maximum Attenuation.
Maximum attenuation to apply when in soft mute. Specified in units of dB. Default maximum attenuation is 16 dB.
Set to 0 to disable soft mute. Valid range: 0 - 31.
value | number between 0 and 31 |
void SI4844::setFmSoftMuteRate | ( | uint8_t | value | ) |
Sets the attack and decay rates when entering and leaving soft mute.
Later values increase rates, and lower values decrease rates.
The CTS is set when it is safe to send the next command. This property may only be set or read when in powerup mode. The default is 64.
value | 1—255 (default 64) |
void SI4844::setFmSoftMuteSlope | ( | uint8_t | value | ) |
Configures attenuation slope during soft mute in dB attenuation per dB SNR below the soft mute SNR threshold.
Soft mute attenuation is the minimum of SMSLOPE x (SMTHR – SNR) and SMATTN.
The recommended SMSLOPE value is CEILING(SMATTN/SMTHR). SMATTN and SMTHR are set via the FM_SOFT_MUTE_MAX_ATTENUATION and FM_SOFT_MUTE_SNR_THRESHOLD properties.
The CTS bit is set when it is safe to send the next command. This property may only be set or read when in power up mode.
value | 0–63 (default 2) |
void SI4844::setReferenceClockFrequency | ( | uint16_t | value | ) |
Sets the frequency of the REFCLK from the output of the prescaler.
The REFCLK range is 31130 to 34406 Hz (32768 ±5% Hz) in 1 Hz steps, or 0 (to disable AFC).
For example, an reference clock at XTALI pin of 13 MHz would require a prescaler value of 400 to divide it to 32500 Hz REFCLK.
The reference clock frequency property would then need to be set to 32500 Hz. Reference clock frequencies between 31130 Hz and 40 MHz are supported, however, there are gaps in frequency coverage for prescaler values ranging from 1 to 10, or frequencies up to 311300 Hz.
value | 31130-34406 (default 32768) |
void SI4844::setReferenceClockPrescaler | ( | uint16_t | value | ) |
Sets the number used by the prescaler to divide the external reference clock frequency down to the internal REFCLK.
The range may be between 1 and 4095 in 1 unit steps. For example, an XTALI reference clock of 13 MHz would require a prescaler value of 400 to divide it to 3250 Hz.
The reference clock frequency property would then need to be set to 32500 Hz. The reference clock must be valid 10 ns before the chip reset signal. In addition, the reference clock must be valid at all times for proper tuning and AFC operations.
XTALI reference clock input frequency could be changed but is not recommended and REFCLK properties values need to be reconfigured accordingly.
Prescaler for Reference Clock is an integer number used to divide clock frequency down to REFCLK frequency. The allowed REFCLK frequency range is between 31130 and 34406 Hz (32768 5%), or 0 (to disable AFC).
value | 1-4095 (default 1) |
void SI4844::setup | ( | uint16_t | resetPin, |
int | interruptPin, | ||
byte | defaultBand | ||
) |
Initiates the SI4844 instance and connect the device (SI4844) to Arduino.
Calling this library should be the first thing to do to control the SI4844.
If interruptPin is -1, it means you will control interrupt in your sketch.
In this case, you have to call interrupt_hundler() (see SI4844.h)
resetPin | arduino pin used to reset the device |
interruptPin | interruprPin arduino pin used to handle interrupt |
defaultBand | band that the radio should start |
References SI4844::getFirmware(), and SI4844::reset().
void SI4844::setVolume | ( | byte | volumeLavel | ) |
Sets the volume level.
Sets a value to the audio volume.
byte | volumeLevel (domain: 0 to 63) |
void SI4844::volumeDown | ( | void | ) |
Decreases the volume level.
void SI4844::volumeUp | ( | void | ) |
Increases the volume level.