Library for TEA5767 FM stereo radio module

Dependents:   TEA5767_RadioFM_Test_Code

Committer:
edodm85
Date:
Sat Oct 05 11:54:59 2013 +0000
Revision:
1:d7804b4d7fa5
Parent:
0:bb7cae1d62ce
Added header

Who changed what in which revision?

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