FM-test

Dependencies:   MODSERIAL mbed-rtos mbed

Fork of Master by Ohnishi_Gundan

Revision:
0:4f07ba929908
Child:
1:e1cfb5850088
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fm.cpp	Thu Sep 11 10:15:34 2014 +0000
@@ -0,0 +1,71 @@
+#include "mbed.h"
+#include "fm.h"
+
+
+void i2cSetup(unsigned int _f)
+{
+    freq = _f;         //freq/10.MHz   760~910
+    if(freq > 870){
+        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(0x02);
+    i2c.write(0xC0);
+    i2c.write(0x03);
+    i2c.stop();
+    wait(0.5);                        // wait 500ms
+   
+    i2c.start();
+    i2c.write(addr);
+    i2c.write(0x02);
+    i2c.write(0xC0);
+    i2c.write(0x0D);
+    i2c.stop();
+    wait(0.5);   
+   
+    if(freq > 870){
+        freqL=freqL | 0x10;
+    }else{ 
+        freqL=freqL | 0x14;
+    }
+    i2c.start();
+    i2c.write(addr);
+    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;
+    i2c.start();
+    i2c.write(addr);
+    i2c.write(0x40);
+    i2c.write(temp0);
+    i2c.write(temp1);
+    i2c.stop();
+    wait(0.5);
+ 
+    i2c.start();
+    i2c.write(addr);
+    i2c.write(0x42);
+    i2c.write(0x03);
+    i2c.write(0x0F);
+    i2c.stop();
+   
+    wait(0.5);
+}
\ No newline at end of file