Library for TEA5767 FM stereo radio module

Dependents:   TEA5767_RadioFM_Test_Code Progetto

Committer:
edodm85
Date:
Thu Oct 03 19:18:11 2013 +0000
Revision:
0:bb7cae1d62ce
Child:
1:d7804b4d7fa5
First version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
edodm85 0:bb7cae1d62ce 1 #pragma once
edodm85 0:bb7cae1d62ce 2 #include "mbed.h"
edodm85 0:bb7cae1d62ce 3
edodm85 0:bb7cae1d62ce 4 class TEA5767
edodm85 0:bb7cae1d62ce 5 {
edodm85 0:bb7cae1d62ce 6
edodm85 0:bb7cae1d62ce 7 public:
edodm85 0:bb7cae1d62ce 8 /** Creates an TEA5767 object connected to the specified I2C object
edodm85 0:bb7cae1d62ce 9 *
edodm85 0:bb7cae1d62ce 10 * @param sda I2C data port
edodm85 0:bb7cae1d62ce 11 * @param scl I2C clock port
edodm85 0:bb7cae1d62ce 12 * @param addr the I2C address of the TEA5767 device
edodm85 0:bb7cae1d62ce 13 */
edodm85 0:bb7cae1d62ce 14 TEA5767(PinName sda, PinName scl, int addr);
edodm85 0:bb7cae1d62ce 15
edodm85 0:bb7cae1d62ce 16 /** Destroys a TEA5767 object
edodm85 0:bb7cae1d62ce 17 *
edodm85 0:bb7cae1d62ce 18 */
edodm85 0:bb7cae1d62ce 19 ~TEA5767();
edodm85 0:bb7cae1d62ce 20
edodm85 0:bb7cae1d62ce 21 /** Set the band FM
edodm85 0:bb7cae1d62ce 22 *
edodm85 0:bb7cae1d62ce 23 * @param valueBand set the band ('e' = EUROPE/US - 'j' = JAPANESE)
edodm85 0:bb7cae1d62ce 24 */
edodm85 0:bb7cae1d62ce 25 void SetBand(char valueBand);
edodm85 0:bb7cae1d62ce 26
edodm85 0:bb7cae1d62ce 27 /** Set the radio frequency
edodm85 0:bb7cae1d62ce 28 *
edodm85 0:bb7cae1d62ce 29 * @param freq frequency
edodm85 0:bb7cae1d62ce 30 * @param side side injection mode ('h' = HIGH - 'l' = LOW)
edodm85 0:bb7cae1d62ce 31 */
edodm85 0:bb7cae1d62ce 32 void SetFrequency(double freq, char side = 'h');
edodm85 0:bb7cae1d62ce 33
edodm85 0:bb7cae1d62ce 34 /** Auto search up frequency
edodm85 0:bb7cae1d62ce 35 *
edodm85 0:bb7cae1d62ce 36 * @param freq frequency
edodm85 0:bb7cae1d62ce 37 */
edodm85 0:bb7cae1d62ce 38 void SearchUp(float freq);
edodm85 0:bb7cae1d62ce 39
edodm85 0:bb7cae1d62ce 40 /** Auto search down frequency
edodm85 0:bb7cae1d62ce 41 *
edodm85 0:bb7cae1d62ce 42 * @param freq frequency
edodm85 0:bb7cae1d62ce 43 */
edodm85 0:bb7cae1d62ce 44 void SearchDown(float freq);
edodm85 0:bb7cae1d62ce 45
edodm85 0:bb7cae1d62ce 46 /** Read the current frequancy
edodm85 0:bb7cae1d62ce 47 *
edodm85 0:bb7cae1d62ce 48 * @returns the current frequency
edodm85 0:bb7cae1d62ce 49 */
edodm85 0:bb7cae1d62ce 50 float FreqCurrent();
edodm85 0:bb7cae1d62ce 51
edodm85 0:bb7cae1d62ce 52 /** Checks if the address exist on an I2C bus
edodm85 0:bb7cae1d62ce 53 *
edodm85 0:bb7cae1d62ce 54 * @returns 0 on success, or non-0 on failure
edodm85 0:bb7cae1d62ce 55 */
edodm85 0:bb7cae1d62ce 56 int CheckDevice();
edodm85 0:bb7cae1d62ce 57
edodm85 0:bb7cae1d62ce 58 /** Read the signal level of the band
edodm85 0:bb7cae1d62ce 59 *
edodm85 0:bb7cae1d62ce 60 * @returns the signal level
edodm85 0:bb7cae1d62ce 61 */
edodm85 0:bb7cae1d62ce 62 int SignalLevel();
edodm85 0:bb7cae1d62ce 63
edodm85 0:bb7cae1d62ce 64
edodm85 0:bb7cae1d62ce 65 private:
edodm85 0:bb7cae1d62ce 66
edodm85 0:bb7cae1d62ce 67 /** Initialization of the device
edodm85 0:bb7cae1d62ce 68 *
edodm85 0:bb7cae1d62ce 69 */
edodm85 0:bb7cae1d62ce 70 void Init();
edodm85 0:bb7cae1d62ce 71
edodm85 0:bb7cae1d62ce 72 /** calculation of the high or low side injection
edodm85 0:bb7cae1d62ce 73 *
edodm85 0:bb7cae1d62ce 74 * @param freq the wanted tuning frequency
edodm85 0:bb7cae1d62ce 75 * @param mode I2C high ('h') or low ('l') side injection
edodm85 0:bb7cae1d62ce 76 * @returns decimal value of PLL word
edodm85 0:bb7cae1d62ce 77 */
edodm85 0:bb7cae1d62ce 78 unsigned int SideInjection(float freq, char mode);
edodm85 0:bb7cae1d62ce 79
edodm85 0:bb7cae1d62ce 80 /** Set the 5 address of the device
edodm85 0:bb7cae1d62ce 81 *
edodm85 0:bb7cae1d62ce 82 * @param N 14bits PLL word
edodm85 0:bb7cae1d62ce 83 * @param data_1 set the bit 7 and 6 of 1st data byte (default value = 0x00)
edodm85 0:bb7cae1d62ce 84 * @param data_3 set the 3th data byte (default value = 0x10)
edodm85 0:bb7cae1d62ce 85 * @param data_4 set the 4th data byte (default value = 0x10)
edodm85 0:bb7cae1d62ce 86 * @param data_5 set the 5th data byte (default value = 0x00)
edodm85 0:bb7cae1d62ce 87 */
edodm85 0:bb7cae1d62ce 88 void SetData(unsigned int N, char data_1 = 0x00, char data_3 = 0x10, char data_4 = 0x10, char data_5 = 0x00);
edodm85 0:bb7cae1d62ce 89
edodm85 0:bb7cae1d62ce 90 /** Read the 5 address of the device
edodm85 0:bb7cae1d62ce 91 *
edodm85 0:bb7cae1d62ce 92 * @param buf buffer in which the 5 addresses are saved
edodm85 0:bb7cae1d62ce 93 */
edodm85 0:bb7cae1d62ce 94 void GetData(char* buf);
edodm85 0:bb7cae1d62ce 95
edodm85 0:bb7cae1d62ce 96 char band;
edodm85 0:bb7cae1d62ce 97 char side;
edodm85 0:bb7cae1d62ce 98 unsigned int frequency;
edodm85 0:bb7cae1d62ce 99 I2C i2c;
edodm85 0:bb7cae1d62ce 100 int addr;
edodm85 0:bb7cae1d62ce 101
edodm85 0:bb7cae1d62ce 102 };