FM-test
Dependencies: MODSERIAL mbed-rtos mbed
Fork of Master by
Revision 11:b8d46d371937, committed 2014-09-14
- Comitter:
- 9uS7
- Date:
- Sun Sep 14 13:21:48 2014 +0000
- Parent:
- 10:a90935ea0a4b
- Child:
- 12:168338a29373
- Commit message:
- fm tarnsmitter
Changed in this revision
--- a/fm.cpp Sun Sep 14 01:38:32 2014 +0000 +++ b/fm.cpp Sun Sep 14 13:21:48 2014 +0000 @@ -9,32 +9,28 @@ void fmSetup(unsigned int _f) { char freqH = 0, freqL = 0;//, c, i; - unsigned int frequencyB, freq, freqB; - const int addr = 0x11 << 1; + unsigned int freq, freqB; + const int addr = 0x11; //slave address + const int i2c_write = (addr << 1) | I2C_WRITE; + const int i2c_read = (addr << 1) | I2C_READ; freq = _f; //freq/10.MHz 760~910 + + freq = _f; // 89.2 MHz if(freq > 870){ - freqB = freq - 870; - freqH = freqB>>2; - freqL = (freqB&3)<<6; // Shift channel selection for matching register 0x03 + freqB = freq - 870; + freqH = freqB>>2; + freqL = (freqB&3)<<6; // Shift channel selection for matching register 0x03 }else{ freqB = freq-760; freqH = freqB>>2; freqL = (freqB&3)<<6; } - + i2c.start(); - i2c.write(addr); + i2c.write(i2c_write); i2c.write(0x02); - i2c.write(0xF0); - i2c.write(0x03); - i2c.stop(); - wait(0.5); // wait 500ms - - i2c.start(); - i2c.write(addr); - i2c.write(0x02); - i2c.write(0xF0); + i2c.write(0xE0); i2c.write(0x0D); i2c.stop(); wait(0.5); @@ -45,35 +41,31 @@ freqL=freqL | 0x14; } i2c.start(); - i2c.write(addr); + i2c.write(i2c_write); i2c.write(0x03); i2c.write(freqH); i2c.write(freqL); i2c.stop(); wait(0.5); - char temp0 = 0x00; - char temp1 = 0x00; - i2c.read(addr,&temp0,1); - i2c.read(addr,&temp1,1); - temp0 &= 0xff; - temp1 &= 0xf0; - temp0 |= 0x00; - temp1 |= 0x01; + //Transmitter mode i2c.start(); - i2c.write(addr); + i2c.write(i2c_write); i2c.write(0x40); - i2c.write(temp0); - i2c.write(temp1); + i2c.write(0x00); + i2c.write(0x01); i2c.stop(); wait(0.5); - + + //configure each gain i2c.start(); - i2c.write(addr); + i2c.write(i2c_write); i2c.write(0x42); - i2c.write(0x00); // Vin PtP set max:111b(0.009V) min000b(1.2V) - i2c.write(0x07); // FMout Antena Gain max:111111b(0x3F) min:000000b + i2c.write(0x02); //audio gain + i2c.write(0x0F); //antenna gain i2c.stop(); wait(0.5); + + f_led1 = 1; } \ No newline at end of file
--- a/fm.h Sun Sep 14 01:38:32 2014 +0000 +++ b/fm.h Sun Sep 14 13:21:48 2014 +0000 @@ -7,6 +7,21 @@ #define FM_FREQUENCY1 792 #define FM_FREQUENCY2 856 +#define I2C_WRITE 0x00 +#define I2C_READ 0x01 + +#define I2C_NORMAL_OUTPUT_Z 0x80 +#define I2C_NO_MUTE 0x40 +#define I2C_MONORAL 0x20 +#define I2C_BASS_BOOST 0x10 +#define I2C_CLK_32k 0x00 +#define I2C_CLK_12M 0x10 +#define I2C_CLK_24M 0x50 +#define I2C_ANTENNA_INNER 0x04 +#define I2C_SOFT_RESET 0x02 +#define I2C_POWER_UP 0x01 + + void fmSetup(unsigned int); //setup i2c (int frequency) frequency:760~910
--- a/main.cpp Sun Sep 14 01:38:32 2014 +0000 +++ b/main.cpp Sun Sep 14 13:21:48 2014 +0000 @@ -23,13 +23,13 @@ //FM_FREQUENCY is defined in fm.h unsigned int fm_frequency = DEVICE_ROLE==BT_MASTER ? FM_FREQUENCY1 : FM_FREQUENCY2; - //fmSetup( fm_frequency ); - btSetup(DEVICE_ROLE); + fmSetup( fm_frequency ); + //btSetup(DEVICE_ROLE); //motorSetup(); while(1){ if( DEVICE_ROLE==BT_MASTER ){ - masterLoop(); + //masterLoop(); } /*i2c.start(); i2c.write(0x11);