FM-test
Dependencies: MODSERIAL mbed-rtos mbed
Fork of Master by
fm.cpp@12:168338a29373, 2014-09-15 (annotated)
- Committer:
- 9uS7
- Date:
- Mon Sep 15 02:45:54 2014 +0000
- Revision:
- 12:168338a29373
- Parent:
- 11:b8d46d371937
- Child:
- 13:3f0505bbe284
can fm transmit; already debuged
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
9uS7 | 0:4f07ba929908 | 1 | #include "mbed.h" |
9uS7 | 0:4f07ba929908 | 2 | #include "fm.h" |
9uS7 | 0:4f07ba929908 | 3 | |
9uS7 | 0:4f07ba929908 | 4 | |
9uS7 | 1:e1cfb5850088 | 5 | I2C i2c(p9,p10); // SDA,SCI |
9uS7 | 1:e1cfb5850088 | 6 | |
9uS7 | 8:bfcfda6b38fe | 7 | DigitalOut f_led1(LED1); |
9uS7 | 8:bfcfda6b38fe | 8 | |
9uS7 | 2:c610e1a7fbcd | 9 | void fmSetup(unsigned int _f) |
9uS7 | 0:4f07ba929908 | 10 | { |
9uS7 | 1:e1cfb5850088 | 11 | char freqH = 0, freqL = 0;//, c, i; |
9uS7 | 11:b8d46d371937 | 12 | unsigned int freq, freqB; |
9uS7 | 11:b8d46d371937 | 13 | const int addr = 0x11; //slave address |
9uS7 | 11:b8d46d371937 | 14 | const int i2c_write = (addr << 1) | I2C_WRITE; |
9uS7 | 11:b8d46d371937 | 15 | const int i2c_read = (addr << 1) | I2C_READ; |
9uS7 | 8:bfcfda6b38fe | 16 | |
9uS7 | 0:4f07ba929908 | 17 | freq = _f; //freq/10.MHz 760~910 |
9uS7 | 11:b8d46d371937 | 18 | |
9uS7 | 11:b8d46d371937 | 19 | freq = _f; // 89.2 MHz |
9uS7 | 0:4f07ba929908 | 20 | if(freq > 870){ |
9uS7 | 11:b8d46d371937 | 21 | freqB = freq - 870; |
9uS7 | 11:b8d46d371937 | 22 | freqH = freqB>>2; |
9uS7 | 11:b8d46d371937 | 23 | freqL = (freqB&3)<<6; // Shift channel selection for matching register 0x03 |
9uS7 | 0:4f07ba929908 | 24 | }else{ |
9uS7 | 0:4f07ba929908 | 25 | freqB = freq-760; |
9uS7 | 0:4f07ba929908 | 26 | freqH = freqB>>2; |
9uS7 | 0:4f07ba929908 | 27 | freqL = (freqB&3)<<6; |
9uS7 | 0:4f07ba929908 | 28 | } |
9uS7 | 11:b8d46d371937 | 29 | |
9uS7 | 0:4f07ba929908 | 30 | i2c.start(); |
9uS7 | 11:b8d46d371937 | 31 | i2c.write(i2c_write); |
9uS7 | 0:4f07ba929908 | 32 | i2c.write(0x02); |
9uS7 | 12:168338a29373 | 33 | i2c.write(0xC0); |
9uS7 | 0:4f07ba929908 | 34 | i2c.write(0x0D); |
9uS7 | 0:4f07ba929908 | 35 | i2c.stop(); |
9uS7 | 0:4f07ba929908 | 36 | wait(0.5); |
9uS7 | 0:4f07ba929908 | 37 | |
9uS7 | 0:4f07ba929908 | 38 | if(freq > 870){ |
9uS7 | 0:4f07ba929908 | 39 | freqL=freqL | 0x10; |
9uS7 | 0:4f07ba929908 | 40 | }else{ |
9uS7 | 0:4f07ba929908 | 41 | freqL=freqL | 0x14; |
9uS7 | 0:4f07ba929908 | 42 | } |
9uS7 | 0:4f07ba929908 | 43 | i2c.start(); |
9uS7 | 11:b8d46d371937 | 44 | i2c.write(i2c_write); |
9uS7 | 0:4f07ba929908 | 45 | i2c.write(0x03); |
9uS7 | 0:4f07ba929908 | 46 | i2c.write(freqH); |
9uS7 | 0:4f07ba929908 | 47 | i2c.write(freqL); |
9uS7 | 0:4f07ba929908 | 48 | i2c.stop(); |
9uS7 | 0:4f07ba929908 | 49 | wait(0.5); |
9uS7 | 0:4f07ba929908 | 50 | |
9uS7 | 11:b8d46d371937 | 51 | //Transmitter mode |
9uS7 | 0:4f07ba929908 | 52 | i2c.start(); |
9uS7 | 11:b8d46d371937 | 53 | i2c.write(i2c_write); |
9uS7 | 0:4f07ba929908 | 54 | i2c.write(0x40); |
9uS7 | 11:b8d46d371937 | 55 | i2c.write(0x00); |
9uS7 | 11:b8d46d371937 | 56 | i2c.write(0x01); |
9uS7 | 0:4f07ba929908 | 57 | i2c.stop(); |
9uS7 | 0:4f07ba929908 | 58 | wait(0.5); |
9uS7 | 11:b8d46d371937 | 59 | |
9uS7 | 11:b8d46d371937 | 60 | //configure each gain |
9uS7 | 0:4f07ba929908 | 61 | i2c.start(); |
9uS7 | 11:b8d46d371937 | 62 | i2c.write(i2c_write); |
9uS7 | 0:4f07ba929908 | 63 | i2c.write(0x42); |
9uS7 | 11:b8d46d371937 | 64 | i2c.write(0x02); //audio gain |
9uS7 | 11:b8d46d371937 | 65 | i2c.write(0x0F); //antenna gain |
9uS7 | 0:4f07ba929908 | 66 | i2c.stop(); |
9uS7 | 0:4f07ba929908 | 67 | |
9uS7 | 0:4f07ba929908 | 68 | wait(0.5); |
9uS7 | 11:b8d46d371937 | 69 | |
9uS7 | 11:b8d46d371937 | 70 | f_led1 = 1; |
9uS7 | 0:4f07ba929908 | 71 | } |