/* * si4703.h * * Created on: Aug 1, 2023 * Author: User */ #ifndef INC_SI4703_H_ #define INC_SI4703_H_ #include #define SI4703 0x10<<1 // Define the register names #define SI4703_DEVICEID 0x00 #define SI4703_CHIPID 0x01 #define POWERCFG 0x02 #define CHANNEL 0x03 #define SYSCONFIG1 0x04 #define SYSCONFIG2 0x05 #define SYSCONFIG3 0x06 #define STATUSRSSI 0x0A #define READCHAN 0x0B #define RDSA 0x0C #define RDSB 0x0D #define RDSC 0x0E #define RDSD 0x0F // Register 0x02 - POWERCFG #define DSMUTE 15 #define DMUTE 14 #define SETMONO 13 #define RDSMODE 11 #define SKMODE 10 #define SEEKUP 9 #define SEEK 8 // Register 0x03 - CHANNEL #define TUNE 15 // Register 0x04 - SYSCONFIG1 #define DEEMPHASIS50 0x0800 #define RDS 12 #define DE 11 // Register 0x05 - SYSCONFIG2 #define SEEKTH_MASK 0xFF00 #define SEEKTH_MIN 0x0000 #define SEEKTH_MID 0x1000 #define SEEKTH_MAX 0x7F00 #define FMSPACE_MASK 0x0030 #define FMSPACE_50 0x0020 #define FMSPACE_100 0x0010 #define FMSPACE_200 0x0000 #define VOLUME_MASK 0x000F // Register 0x06 - SYSCONFIG3 #define SKSNR_MASK 0x00F0 #define SKSNR_OFF 0x0000 #define SKSNR_MIN 0x0010 #define SKSNR_MID 0x0030 #define SKSNR_MAX 0x0070 #define SKCNT_MASK 0x000F #define SKCNT_OFF 0x0000 #define SKCNT_MIN 0x000F #define SKCNT_MID 0x0003 #define SKCNT_MAX 0x0001 // Register 0x0A - STATUSRSSI #define RDSR 0x8000 ///< RDS ready #define STC 0x4000 ///< Seek Tune Complete #define SFBL 0x2000 ///< Seek Fail Band Limit #define AFCRL 0x1000 #define RDSS 0x0800 ///< RDS syncronized #define SI 0x0100 ///< Stereo Indicator #define RSSI 0x00FF enum RADIO_BAND { RADIO_BAND_NONE = 0, ///< No band selected. RADIO_BAND_FM = 0x01, ///< FM band 87.5 - 108 MHz (USA, Europe) selected. RADIO_BAND_FMWORLD = 0x02, ///< FM band 76 - 108 MHz (Japan, Worldwide) selected. RADIO_BAND_AM = 0x03, ///< AM band selected. RADIO_BAND_KW = 0x04, ///< KW band selected. RADIO_BAND_FMTX = 0x11 ///< Transmit for FM. }; _Bool SI4703init(void); void SI4703setVolume(int8_t newVolume); void SI4703setMono(_Bool switchOn); void SI4703setMute(_Bool switchOn); void SI4703setSoftMute(_Bool switchOn); void SI4703setBand(void); uint16_t SI4703getFrequency(void); void SI4703setFrequency(uint16_t newF); void SI4703seek(_Bool seekUp); void SI4703_readRegister0A(void); void readsi4703_registers(void); char savesi4703_registers(void); void SI4703waitEnd(void); #endif /* INC_SI4703_H_ */