RDA5807M FM Radio library with RDS.
Dependents: RDA5807M-FM-Radio EFM32 RDA5807M RDS Radio
Example program here:
https://developer.mbed.org/users/star297/code/RDA5807M-FM-Radio/
RDA5807M.h
- Committer:
- star297
- Date:
- 2015-06-19
- Revision:
- 4:3e7968bd455d
- Parent:
- 3:bdd691977de4
File content as of revision 4:3e7968bd455d:
#include "mbed.h" class RDA5807M { public: RDA5807M(PinName sda, PinName scl); ~RDA5807M(); //-------------------------------------------------------------- // Global Functions //-------------------------------------------------------------- void WriteAll(void); void WriteReg(int address,int data); void Init(void); void Readregisters(void); void Reset(void); void PowerOn(void); void PowerOff(void); void RDS(void); void Mute(void); void Mono(void); void Softmute(void); void SoftBlend(void); void BassBoost(void); void AFC(void); void Volume(int vol); void SeekUp(void); void SeekDown(void); void Frequency(float Freq); void Channel(void); void getRDS(void); // Initialise internal variables before starting or after a change to another channel. void RDSinit(); // Pass all available RDS data through this function. void ProcessData(); //-------------------------------------------------------------- // Definitions //-------------------------------------------------------------- /* I2C Address */ #define RDASequential 0x20 // Write address #define RDARandom 0x22 // Read address /* Initialization Options */ #define StartingFreq 87.00 #define EndingFreq 108.00 #define DefaultFreq 87.50 #define InitialVolume 4 /* RDA5807M Function Code */ /* Register 0x02H (16Bits) */ #define RDA_DHIZ 0x8000 #define RDA_MUTE 0x8000 #define RDA_MONO_ON 0x2000 #define RDA_MONO_OFF 0xDFFF #define RDA_BASS_ON 0x1000 #define RDA_BASS_OFF 0xEFFF #define RDA_RCLK_MODE 0x0800 #define RDA_RCLK_DIRECT 0x0400 #define RDA_SEEK_UP 0x0300 #define RDA_SEEK_DOWN 0x0100 #define RDA_SEEK_STOP 0xFCFF #define RDA_SEEK_WRAP 0x0080 #define RDA_SEEK_NOWRAP 0xFF7F #define RDA_CLK_0327 0x0000 #define RDA_CLK_1200 0x0010 #define RDA_CLK_2400 0x0050 #define RDA_CLK_1300 0x0020 #define RDA_CLK_2600 0x0060 #define RDA_CLK_1920 0x0030 #define RDA_CLK_3840 0x0070 #define RDA_RDS_ON 0x0008 #define RDA_RDS_OFF 0xFFF7 #define RDA_NEW 0x0004 #define RDA_RESET 0x0002 #define RDA_POWER 0x0001 /* Register 0x03H (16Bits) */ #define RDA_TUNE_ON 0x0010 #define RDA_TUNE_OFF 0xFFEF //-------------------------------------------------------------- // Global Variables //-------------------------------------------------------------- // int tuneok,nochannel,power,volume,softblend,bass,mute,softmute,mono,afc,stereo,signal,fmready,fmstation; int rdsblockerror,rdssynchro,rdsready,rds,block1,block2,block3,block4; char StationName[10]; // Station Name. 8 characters char RDSText[66]; // RDS test message 64 characters char CTtime[12]; // CT time string formatted as 'CT hh:mm' int minutes; // CT minutes transmitted on the minute float freq; // Tuned frequency //-------------------------------------------------------------- private: I2C i2c; unsigned int RDA5807M_WriteReg[8],RDA5807M_ReadReg[7],RDA5807M_RDS[32]; // ----- actual RDS values int textAB, lasttextAB, lastTextIDX; int rdsGroupType, rdsTP, rdsPTY; int mins; // RDS time in minutes int lastmins; int i,n; int idx; // index of rdsText int offset; // RDS time offset and sign char c1, c2; char RDSTxt[66]; char PSName[10]; // including trailing '\00' character. char PSName1[10]; char PSName2[10]; };