FM-test
Dependencies: MODSERIAL mbed-rtos mbed
Fork of Master by
fm.cpp
- Committer:
- 9uS7
- Date:
- 2014-09-11
- Revision:
- 2:c610e1a7fbcd
- Parent:
- 1:e1cfb5850088
- Child:
- 8:bfcfda6b38fe
File content as of revision 2:c610e1a7fbcd:
#include "mbed.h" #include "fm.h" I2C i2c(p9,p10); // SDA,SCI void fmSetup(unsigned int _f) { char freqH = 0, freqL = 0;//, c, i; unsigned int frequencyB, freq, freqB; const int addr = 0x11 << 1; 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); }