jnlj

Dependencies:   mbed-rtos mbed

Fork of TFOX_CDMS_VR_1_0_WORKING by Team Fox

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers i2c.cpp Source File

i2c.cpp

00001 #include "mbed.h"
00002 //#include "pin_config.h"
00003 #include "i2c.h"
00004 
00005 Serial gc(USBTX,USBRX);
00006 InterruptIn irpt_4m_slv(D9);                                      //I2c interrupt from CDMS
00007 DigitalOut irpt_2_slv(D8);                                        //I2C interrupt to CDMS
00008 I2C master(D14,D15);
00009 
00010 
00011 
00012 const int addr = 0x20;                                            //slave address 
00013 Timer t;
00014 
00015 
00016 void FCTN_I2C_READ(char *data, int length )
00017 {
00018     bool read_ack = true;
00019     irpt_2_slv = 0; 
00020     t.start();
00021     read_ack=master.read(addr|1,data,length);
00022     t.stop();
00023     if(read_ack == 0)
00024         printf("\r\n\rData received from BAE is %s \r\n",data);
00025     else
00026     {
00027         printf("\r\n \r data not received \r\n");
00028         master.stop();
00029     }
00030     irpt_2_slv = 1;
00031     printf("\r\n\r %d \r\n",t.read_us());
00032     t.reset();
00033 }
00034 
00035 void FCTN_I2C_WRITE(char *data,int length)
00036 {
00037     bool write_ack = true;
00038     irpt_2_slv = 0;
00039     t.start();
00040     write_ack=master.write(addr|0x00,data,length);
00041     t.stop();
00042     if(write_ack == 0)
00043         printf("\r\n\rData sent to BAE is %s \r\n",data);
00044     else 
00045     {
00046         printf("\r\n\r data not sent \r\n");
00047         master.stop();
00048     }
00049     irpt_2_slv = 1;
00050     printf("\r\n\r %d \r\n",t.read_us());
00051     t.reset();
00052 }
00053 
00054 bool check = 1;
00055 void FCTN_MASTER_I2C(char i2c_data_type , char* i2c_data)
00056 {
00057     FCTN_I2C_WRITE(&i2c_data_type,1); 
00058     wait_ms(10);
00059     switch(i2c_data_type)
00060     {
00061         case 's':
00062         FCTN_I2C_WRITE(i2c_data,11);
00063         break;
00064             
00065         case 'l':
00066         FCTN_I2C_WRITE(i2c_data,135);
00067         break;
00068             
00069         case 'h':
00070         FCTN_I2C_READ(i2c_data,25);
00071         break;
00072             
00073         default:
00074         printf("\r\n\r invalid command \r\n");
00075     }
00076 }