Library for TEA5767 FM stereo radio module
Dependents: TEA5767_RadioFM_Test_Code Progetto
TEA5767.h@1:d7804b4d7fa5, 2013-10-05 (annotated)
- 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?
User | Revision | Line number | New 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 | }; |