#define I2C_SLAVE_OWN_ADDR 0x0055 #define I2C_NUMBYTES 1 void main(void){ InitSysCtrl(); InitI2CGpio(); I2CASlave_init(); DELAY_US(1000000); for(;;) { I2CA_ReceiveData(); } } void I2CASlave_init(void) { I2caRegs.I2COAR = I2C_SLAVE_OWN_ADDR; // Slave address I2caRegs.I2CPSC.all = 6; // Prescaler - need 7-12 Mhz on module clk I2caRegs.I2CCLKL = 10; // NOTE: must be non zero I2caRegs.I2CCLKH = 5; // NOTE: must be non zero I2caRegs.I2CIER.all = 0x00; // sorry don't enable anything I2caRegs.I2CMDR.bit.MST = 0; // Enter the slave mode // if MST = 0 and FDF = 0 TRX is a don't care.Dependging upon command from the master module responds as a Rx or Tx. //I2caRegs.I2CMDR.bit.TRX = 0; //receive mode --> commented because its in a don't care condition refer Table 7 from I2C document for TMS320F28035 I2caRegs.I2CMDR.bit.FREE = 0 ; // Runs in free mode setting it to zero will stop when data is received.l I2caRegs.I2CMDR.bit.IRS = 1; // enable the IRS } void I2CA_ReceiveData(void) { Uint16 i = 0; //while(!I2caRegs.I2CSTR.bit.RRDY ) ; I2caRegs.I2COAR = I2C_SLAVE_OWN_ADDR; // Slave address while(I2caRegs.I2CSTR.bit.AAS != 1){}; //***** This is where I am trying to check if my slave could actually Recognize itself. // i++; Receive_Data[0] = I2caRegs.I2CDRR ; GREENLED_ON; I2caRegs.I2CMDR.bit.MST = 0; I2caRegs.I2CMDR.bit.FREE = 0 ; REDLED_OFF; return; }