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