Libreria del modulo generador de seniales

Dependents:   Graficador_De_Bode_OTERO-OSSO_PPs2018

Committer:
JAgustinOtero
Date:
Thu Dec 06 00:08:12 2018 +0000
Revision:
0:1bc0260fa422
funciones para el generador de seniales

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JAgustinOtero 0:1bc0260fa422 1 /////////////////////////////////////////////////////////////////////////
JAgustinOtero 0:1bc0260fa422 2 // AD9833 control code
JAgustinOtero 0:1bc0260fa422 3 // Create by Po-Cheng Chen 07-04-2014
JAgustinOtero 0:1bc0260fa422 4 // Version 0.1
JAgustinOtero 0:1bc0260fa422 5 /////////////////////////////////////////////////////////////////////////
JAgustinOtero 0:1bc0260fa422 6
JAgustinOtero 0:1bc0260fa422 7 #include "mbed.h"
JAgustinOtero 0:1bc0260fa422 8 #include "SPI.h"
JAgustinOtero 0:1bc0260fa422 9 #include "DigitalOut.h"
JAgustinOtero 0:1bc0260fa422 10 #include "AD9833.h"
JAgustinOtero 0:1bc0260fa422 11 SPI AD9833_SPI(PTD6, PTD7, PTD5); //mosi, miso, sclk --> don't need MISO
JAgustinOtero 0:1bc0260fa422 12 DigitalOut fSync(PTE1); //use p8 as FSync data pin (same as chip select)
JAgustinOtero 0:1bc0260fa422 13
JAgustinOtero 0:1bc0260fa422 14 /////////////////////////////////////////////////////////////////////////
JAgustinOtero 0:1bc0260fa422 15 // SPI initialization
JAgustinOtero 0:1bc0260fa422 16 /////////////////////////////////////////////////////////////////////////
JAgustinOtero 0:1bc0260fa422 17 void SPI_INITIALIZATION()
JAgustinOtero 0:1bc0260fa422 18 {
JAgustinOtero 0:1bc0260fa422 19 //Setup the spi for 16 bit data, with 25MHz clock rate, mode 2
JAgustinOtero 0:1bc0260fa422 20 // Note: mBed is MSB first SPI protocol
JAgustinOtero 0:1bc0260fa422 21 AD9833_SPI.format(8,2);
JAgustinOtero 0:1bc0260fa422 22 AD9833_SPI.frequency(250000/*250000*/);
JAgustinOtero 0:1bc0260fa422 23 fSync = 1;
JAgustinOtero 0:1bc0260fa422 24 wait_ms(10);
JAgustinOtero 0:1bc0260fa422 25 }
JAgustinOtero 0:1bc0260fa422 26 /////////////////////////////////////////////////////////////////////////
JAgustinOtero 0:1bc0260fa422 27 // SPI writing
JAgustinOtero 0:1bc0260fa422 28 /////////////////////////////////////////////////////////////////////////
JAgustinOtero 0:1bc0260fa422 29 void write_SPI(short dat,short dat2)
JAgustinOtero 0:1bc0260fa422 30 {
JAgustinOtero 0:1bc0260fa422 31 fSync = 0;
JAgustinOtero 0:1bc0260fa422 32 AD9833_SPI.write(dat);
JAgustinOtero 0:1bc0260fa422 33 AD9833_SPI.write(dat2);
JAgustinOtero 0:1bc0260fa422 34 fSync = 1;
JAgustinOtero 0:1bc0260fa422 35 }
JAgustinOtero 0:1bc0260fa422 36 /////////////////////////////////////////////////////////////////////////
JAgustinOtero 0:1bc0260fa422 37 // Set desired frequency
JAgustinOtero 0:1bc0260fa422 38 // Comments:Calculate the desired frequency accrodingly
JAgustinOtero 0:1bc0260fa422 39 // Do it in Matlab or mBed?
JAgustinOtero 0:1bc0260fa422 40 /////////////////////////////////////////////////////////////////////////
JAgustinOtero 0:1bc0260fa422 41 void setFreq(long FREQ)
JAgustinOtero 0:1bc0260fa422 42 {
JAgustinOtero 0:1bc0260fa422 43 int freq_MSB; //define freq MSB reg value
JAgustinOtero 0:1bc0260fa422 44 int freq_LSB; //define freq LSB reg value
JAgustinOtero 0:1bc0260fa422 45
JAgustinOtero 0:1bc0260fa422 46 long freq_cal; //define freq calculated value
JAgustinOtero 0:1bc0260fa422 47 float freq_val = 0.00000000; //define ferq calculate tempotary value
JAgustinOtero 0:1bc0260fa422 48
JAgustinOtero 0:1bc0260fa422 49 //calculate the frqe reg value
JAgustinOtero 0:1bc0260fa422 50 //((desired frequency)/(reference frequency)) x 0x10000000.
JAgustinOtero 0:1bc0260fa422 51 freq_val = (((float)(FREQ))/25000000);
JAgustinOtero 0:1bc0260fa422 52 freq_cal = freq_val*0x10000000;
JAgustinOtero 0:1bc0260fa422 53
JAgustinOtero 0:1bc0260fa422 54 freq_MSB = (int)((freq_cal & 0xFFFC000)>>14); // shift 14 bits
JAgustinOtero 0:1bc0260fa422 55 freq_LSB = (int)(freq_cal & 0x3FFF);
JAgustinOtero 0:1bc0260fa422 56
JAgustinOtero 0:1bc0260fa422 57 freq_MSB = freq_MSB | 0x4000; //assign freq reg address
JAgustinOtero 0:1bc0260fa422 58 freq_LSB = freq_LSB | 0x4000;
JAgustinOtero 0:1bc0260fa422 59 ///////////////////////////////////////////////////////////////////////////////////
JAgustinOtero 0:1bc0260fa422 60 /* //print the data from the serial port to verifiy the function
JAgustinOtero 0:1bc0260fa422 61 printf("freq_LSB 0x%x\n\r", freq_LSB);
JAgustinOtero 0:1bc0260fa422 62 //print the data from the serial port to verifiy the function
JAgustinOtero 0:1bc0260fa422 63 printf("freq_MSB 0x%x\n\r", freq_MSB);*/
JAgustinOtero 0:1bc0260fa422 64 ///////////////////////////////////////////////////////////////////////////////////
JAgustinOtero 0:1bc0260fa422 65 write_SPI(0x21 , 0x00); //write control reg - apply reset
JAgustinOtero 0:1bc0260fa422 66 //write control reg - apply reset
JAgustinOtero 0:1bc0260fa422 67 write_SPI((freq_LSB & 0xFF00)>>8 , freq_LSB & 0x00FF); //write freq reg - LSB
JAgustinOtero 0:1bc0260fa422 68 //write freq reg - LSB
JAgustinOtero 0:1bc0260fa422 69 write_SPI((freq_MSB & 0xFF00)>>8 , freq_MSB & 0x00FF);
JAgustinOtero 0:1bc0260fa422 70 //write freq reg - MSB
JAgustinOtero 0:1bc0260fa422 71 write_SPI(0xC0 , 0x00); //write phase reg - 0 for now
JAgustinOtero 0:1bc0260fa422 72
JAgustinOtero 0:1bc0260fa422 73 write_SPI(0x20 , 0x00); //write control reg - disable reset
JAgustinOtero 0:1bc0260fa422 74
JAgustinOtero 0:1bc0260fa422 75 }