Dear igor,
As you suggested, I have set the SION bit, but still the behavior is same with and without setting SION bit. I hereby by described the register write sequence for the experiment .
// IOMUX settings
PAD_MUX I2C2_SCL = 0x20e016c data = 0x11 //IOMUXC_SW_MUX_CTL_PAD_KEY_COL0 forced SION bit
PAD_MUX I2C2_SDA = 0x20e018c data = 0x11 // IOMUXC_SW_MUX_CTL_PAD_KEY_ROW0 forced SION bit
PAD control SCL = 0x20e0474 data = 0x1b8b1 // Fast slew rate | Drive Strength Field 40 ohm | Speed medium 100 MHz | Open drain enabled |Pull/Keeper Enabled
// Pull enabled | 100k pull up | Hysteresis Enabled | Low voltage
PAD control SDA = 0x20e0494 data = 0x1b8b1 // same as above
// I2C initialization
ADD IADR = 0x21a4000 data = 0x0 // its Slave address = 0
ADD IFDR = 0x21a4004 data = 0x14 // Frequency Divider Register
ADD I2CR = 0x21a4008 data = 0x80 // IEN = 1, enable i2c
ADD I2SR = 0x21a400c data = 0x81 // “No acknowledge" signal was detected at the ninth clock
ADD I2DR = 0x21a4010 data = 0x0 // Data register = 0
I2C Communication
writeb(I2SR_IIF_CLEAR, &i2c_regs->i2sr) // Cleared pending interrupts in SR reg
wait_for_sr_state(i2c_regs, ST_BUS_IDLE) // Checking for ST Bus ideal State , the bus is ideal and this case passed
temp = readb(&i2c_regs->i2cr);
temp |= I2CR_MSTA;
writeb(temp, &i2c_regs->i2cr); // Setting MSTA bit in i2C_cr register to send the start signal
ret = wait_for_sr_state(i2c_regs, ST_BUS_BUSY) // Checking for the Bus Busy bit to be set , but the bit is not
We have probed the start signal in oscilloscope where we can see the start signal also. Hence advise that what could be the problem for the busy bit not set by processor?
Thanks and Regards
Periyasamy R