modulo fm

Dependencies:   mbed TextLCD

Fork of Nucleo_radio_module by AUC Team

Committer:
marcovitone
Date:
Mon Nov 28 15:44:32 2016 +0000
Revision:
4:98e062cf962e
Parent:
3:4ce3bb78b1fc
progetto finale

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Alessio359 2:6b09752bd3b2 1 #include "mbed.h"
marcovitone 4:98e062cf962e 2 #include "TextLCD.h"
Alessio359 0:7b9184b3ceba 3
Alessio359 2:6b09752bd3b2 4 //TEA5767 example with STM32 nucleo
Alessio359 2:6b09752bd3b2 5 //Developed by Mazzella, Vitone, Tarallo
Alessio359 0:7b9184b3ceba 6
marcovitone 4:98e062cf962e 7 TextLCD lcd(D12, D11, D5, D4, D3, D2, TextLCD::LCD16x2);
Alessio359 0:7b9184b3ceba 8 I2C radio(D14, D15); //sda, sc1
marcovitone 3:4ce3bb78b1fc 9 AnalogIn trimmer(PA_0);// A0 ingresso analogico
Alessio359 0:7b9184b3ceba 10
Alessio359 0:7b9184b3ceba 11 Serial pc(USBTX, USBRX); //tx, rx
Alessio359 2:6b09752bd3b2 12 InterruptIn button (USER_BUTTON);
marcovitone 3:4ce3bb78b1fc 13 char s;
marcovitone 3:4ce3bb78b1fc 14 float frequenza;
marcovitone 4:98e062cf962e 15 unsigned int N,m1,m2;
Alessio359 0:7b9184b3ceba 16
Alessio359 2:6b09752bd3b2 17 const int addr = 0xC0; //address for writing data, reading is C1
Alessio359 0:7b9184b3ceba 18
franzs17 1:84d896b9240b 19 char config_t[5];
franzs17 1:84d896b9240b 20 char search[5];
marcovitone 3:4ce3bb78b1fc 21 char lettura[5];
franzs17 1:84d896b9240b 22
Alessio359 0:7b9184b3ceba 23
marcovitone 4:98e062cf962e 24 /*void seqfreq() //search next frequency, minimun signal strength
Alessio359 2:6b09752bd3b2 25 {
franzs17 1:84d896b9240b 26 search[0] = 0x6F;
franzs17 1:84d896b9240b 27 search[1] = 0xCA;
franzs17 1:84d896b9240b 28 search[2] = 0xB0;
franzs17 1:84d896b9240b 29 search[3] = 0x12;
franzs17 1:84d896b9240b 30 search[4] = 0x00;
franzs17 1:84d896b9240b 31 radio.write(addr, search, 5);
marcovitone 3:4ce3bb78b1fc 32 wait(0.01);
marcovitone 3:4ce3bb78b1fc 33 radio.read(0xC1, lettura,5);// dobbiamo azzerare i primi due bit
marcovitone 3:4ce3bb78b1fc 34 for(int i=0;i<2;i++){
marcovitone 3:4ce3bb78b1fc 35 s=lettura[i]& 0x3F;
marcovitone 3:4ce3bb78b1fc 36
marcovitone 3:4ce3bb78b1fc 37
marcovitone 3:4ce3bb78b1fc 38
marcovitone 4:98e062cf962e 39 }*/
marcovitone 3:4ce3bb78b1fc 40
marcovitone 3:4ce3bb78b1fc 41
Alessio359 2:6b09752bd3b2 42
Alessio359 2:6b09752bd3b2 43 int main()
Alessio359 2:6b09752bd3b2 44 {
marcovitone 3:4ce3bb78b1fc 45 while (1){
marcovitone 3:4ce3bb78b1fc 46 frequenza=(108-87.5)*trimmer.read()+87.5;
marcovitone 4:98e062cf962e 47 N=4*(frequenza*1e6+225000)/32768;
marcovitone 4:98e062cf962e 48 /*pc.printf("Frequenza = \n\r");
marcovitone 4:98e062cf962e 49 pc.printf("%1.3f",frequenza);
marcovitone 4:98e062cf962e 50 pc.printf("\n\r");*/
marcovitone 3:4ce3bb78b1fc 51 //a questo punto dobbiamo converitre in esadecimale N ed inviarlo al modulo radio
marcovitone 4:98e062cf962e 52 // usando unsigned int n sappiamo con sicurezza di utilizzare solo 2 byte
marcovitone 4:98e062cf962e 53 m2=N & 0x00FF;//isoliamo il secondo byte di N
marcovitone 4:98e062cf962e 54 m1=N& 0xFF00;//isoliamo il primo byte di N,dobbiamo però shifarlo
marcovitone 4:98e062cf962e 55 m1=m1>>8;
Alessio359 2:6b09752bd3b2 56
marcovitone 4:98e062cf962e 57 config_t[0] = char(m1);
marcovitone 4:98e062cf962e 58 config_t[1] = char(m2); // config data byte, tune at 100.00MHz
Alessio359 2:6b09752bd3b2 59 config_t[2] = 0x10;
Alessio359 2:6b09752bd3b2 60 config_t[3] = 0x12;
Alessio359 2:6b09752bd3b2 61 config_t[4] = 0x00;
Alessio359 2:6b09752bd3b2 62
Alessio359 2:6b09752bd3b2 63 radio.write(addr, config_t, 5);
marcovitone 4:98e062cf962e 64 lcd.locate(0,0);
marcovitone 4:98e062cf962e 65 lcd.printf("Frequenza:" ,frequenza);
marcovitone 4:98e062cf962e 66 wait(1);
marcovitone 4:98e062cf962e 67 }
marcovitone 4:98e062cf962e 68 // button.rise(&seqfreq);
Alessio359 2:6b09752bd3b2 69
Alessio359 2:6b09752bd3b2 70 }