FM-test

Dependencies:   MODSERIAL mbed-rtos mbed

Fork of Master by Ohnishi_Gundan

Files at this revision

API Documentation at this revision

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

fm.cpp Show annotated file Show diff for this revision Revisions of this file
fm.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- 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);