To fix the hang problem
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of CDMS_CODE by
Diff: i2c.h
- Revision:
- 147:7fd1ca3a35a1
- Parent:
- 132:d4a4461214ad
- Child:
- 151:e6c7d4f87704
--- a/i2c.h Thu Mar 10 15:26:50 2016 +0000 +++ b/i2c.h Sat Apr 02 13:54:24 2016 +0000 @@ -2,10 +2,7 @@ #define tc_len 135 #define tc_test_len 135 -InterruptIn irpt_4m_slv(D3); //I2c interrupt from CDMS -DigitalOut irpt_2_slv(D4); //I2C interrupt to CDMS -//I2C master(PTC9,PTC8); -const int addr = 0x20; //slave address +const int addr_bae = 0x20; //slave address const int addr_pl = 0x20<<1; //PL slave address bool write_ack = true; @@ -27,35 +24,14 @@ } } -void FCTN_I2C_READ_PL(char *data,int length) + + +void FCTN_I2C_READ(char *data,int length) { + master.frequency(100000); + CDMS_I2C_GPIO = 1; //t_read.start(); - read_ack = master.read(addr_pl|1,data,length); - //t_read.stop(); - uint8_t len = 0; - - printf("\n\r i2c data : \n\n\r\r"); - while(len != length) printf("%c",data[len]); - printf(" \n\n\r\r"); - if(read_ack == 0) - printf("\n\rData received from PL %s \n",data); - if (read_ack == 1) - { -// gLEDR = 1; - printf("\n \r data not received from PL\n"); -// gLEDR = 0; - } -//if(read_ack == 1) -//pc.printf("\n \r data not received \n"); - //printf("\n\r %d \n",t.read_us()); - //t.reset(); -} - -void FCTN_I2C_READ(char *data,int length, int addr) -{ - irpt_2_slv = 1; - //t_read.start(); - read_ack = master.read(addr|1,data,length); + read_ack = master.read(addr_bae|1,data,length); //t_read.stop(); //if(read_ack == 0) @@ -67,29 +43,32 @@ //if(read_ack == 1) //pc.printf("\n \r data not received \n"); - irpt_2_slv = 0; + CDMS_I2C_GPIO = 0; //printf("\n\r %d \n",t.read_us()); //t.reset(); + master.frequency(400000); } -void FCTN_I2C_WRITE(char *data) +void FCTN_I2C_WRITE(char *data,uint8_t tc_len2) { - irpt_2_slv = 1; + master.frequency(100000); + CDMS_I2C_GPIO = 1; //t.start(); - write_ack = master.write(addr|0x00,data,tc_len); + write_ack = master.write(addr_bae|0x00,data,tc_len2); //t.stop(); //if(write_ack == 0) //gPC.printf("\n\r data not sent \n"); -if (write_ack == 0) +if (write_ack == 1) { // led2 = 1; - //gPC.printf("\n\r data not sent \n"); + gPC.printf("\n\r data not sent \n"); // led2 = 0; } - irpt_2_slv = 0; + CDMS_I2C_GPIO = 0; //gPC.printf("\n\r %d \n",t.read_us()); //t.reset(); + master.frequency(400000); }