I2C code testing
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of COM_MNG_TMTC_SIMPLE_pl123 by
i2c.h
00001 #define tm_len 134 00002 #define tc_len 135 00003 #define tc_test_len 135 00004 00005 InterruptIn irpt_4m_slv(D3); //I2c interrupt from CDMS 00006 DigitalOut irpt_2_slv(D4); //I2C interrupt to CDMS 00007 //I2C master(PTC9,PTC8); 00008 const int addr = 0x20; //slave address 00009 const int addr_pl = 0x20<<1; //PL slave address 00010 00011 bool write_ack = true; 00012 bool read_ack = true; 00013 00014 00015 00016 uint8_t PL_TM_SIZE;//size of data to bev read from i2c 00017 00018 void FCTN_I2C_WRITE_PL(char *data2,uint8_t tc_len2) 00019 { 00020 write_ack = master.write(addr_pl|0x00,data2,tc_len2);//address to be defined in payload 00021 if(write_ack == 1) 00022 { 00023 printf("\n\rdata not sent\n"); 00024 } 00025 else 00026 { 00027 00028 } 00029 } 00030 void FCTN_I2C_READ_PL(char *data,int length) 00031 { 00032 //t_read.start(); 00033 read_ack = master.read(addr_pl|1,data,length); 00034 //t_read.stop(); 00035 uint8_t len = 0; 00036 00037 printf("\n\r i2c data : \n\n\r\r"); 00038 while(len != length) printf("%c",data[len]); 00039 printf(" \n\n\r\r"); 00040 if(read_ack == 0) 00041 printf("\n\rData received from PL %s \n",data); 00042 if (read_ack == 1) 00043 { 00044 // gLEDR = 1; 00045 printf("\n \r data not received from PL\n"); 00046 // gLEDR = 0; 00047 } 00048 //if(read_ack == 1) 00049 //pc.printf("\n \r data not received \n"); 00050 //printf("\n\r %d \n",t.read_us()); 00051 //t.reset(); 00052 } 00053 00054 void FCTN_I2C_READ(char *data,int length, int addr) 00055 { 00056 irpt_2_slv = 1; 00057 //t_read.start(); 00058 read_ack = master.read(addr|1,data,length); 00059 //t_read.stop(); 00060 00061 //if(read_ack == 0) 00062 // printf("\n\rData received from BAE %s \n",data); 00063 if (read_ack == 1) 00064 { 00065 printf("\n \r data not received \n"); 00066 } 00067 //if(read_ack == 1) 00068 //pc.printf("\n \r data not received \n"); 00069 00070 irpt_2_slv = 0; 00071 //printf("\n\r %d \n",t.read_us()); 00072 //t.reset(); 00073 } 00074 00075 void FCTN_I2C_WRITE(char *data) 00076 { 00077 irpt_2_slv = 1; 00078 //t.start(); 00079 write_ack = master.write(addr|0x00,data,tc_len); 00080 //t.stop(); 00081 //if(write_ack == 0) 00082 //gPC.printf("\n\r data not sent \n"); 00083 00084 if (write_ack == 0) 00085 { 00086 // led2 = 1; 00087 //gPC.printf("\n\r data not sent \n"); 00088 // led2 = 0; 00089 } 00090 irpt_2_slv = 0; 00091 //gPC.printf("\n\r %d \n",t.read_us()); 00092 //t.reset(); 00093 } 00094 00095 00096 const int addr1 = (0x20<<1|0); 00097 const int addr2 = (0x20<<1|1); 00098 00099 00100 00101 00102 00103 00104 00105 00106 void isr_pyldtm() 00107 { 00108 gLEDR=!gLEDR; 00109 read_ack = master.read(addr1,PL_I2C_DATA,134); 00110 rcv_isr = 1; 00111 }
Generated on Sat Jul 16 2022 17:06:14 by 1.7.2