FM-test
Dependencies: MODSERIAL mbed-rtos mbed
Fork of Master by
Diff: fm.cpp
- 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