rt Number: TMS570LS3137-EP
Tool/software: Code Composer Studio
Hi,
i have configured I2C . i have followed example code C:\ti\Hercules\HALCoGen\v04.07.01\examples\TMS570LS31x_21x.
i am trying to communicate with PCA9654EDTR2. IO-Expander.
after start condition code is getting stuck at while ((i2c->STR & (uint32)I2C_TX_INT) == 0U);
if i enable FDF as 1 , it is not getting stuck but we are writing to IO configuration register 0xa5, while read back the same register 0xFF.
i am calling IOExpTest(); function to test that.3835.IO_Expander.h
0564.IO_Expander.c3644.i2c.ci have attached code ,pl guide me to solve this issue.
this is my I2C configuration below,
/** - i2c Enter reset */
i2cREG1->MDR = (uint32)((uint32)0U << 5U);
/** - set i2c mode */
i2cREG1->MDR = (uint32)((uint32)0U << 15U) /* nack mode */
| (uint32)((uint32)0U << 14U) /* free running */
| (uint32)(0U) /* start condition - master only */
| (uint32)((uint32)1U <<11U) /* stop condition */
| (uint32)((uint32)1U <<10U) /* Master/Slave mode */
| (uint32)((uint32)I2C_TRANSMITTER) /* Transmitter/receiver */
| (uint32)((uint32)I2C_7BIT_AMODE) /* xpanded address */
| (uint32)((uint32)0U << 7U) /* repeat mode */
| (uint32)((uint32)0U << 6U) /* digital loop back */
| (uint32)((uint32)0U << 4U) /* start byte - master only */
| (uint32)((uint32)0U << 3U) /* free data format */
| (uint32)(I2C_8_BIT); /* bit count */
/** - set i2c Backward Compatibility mode */
i2cREG1->EMDR = 0U;
/** - Disable DMA */
i2cREG1->DMACR = 0x00U;
/** - set i2c data count */
i2cREG1->CNT = 8U;
/** - disable all interrupts */
i2cREG1->IMR = 0x00U;
/** - set prescale */
i2cREG1->PSC = 10U;
/** - set clock rate */
i2cREG1->CKH = 5U;
i2cREG1->CKL = 5U;
/** - set i2c pins functional mode */
i2cREG1->PFNC = (0U);
/** - set i2c pins default output value */
i2cREG1->DOUT = (uint32)((uint32)0U << 1U) /* sda pin */
| (uint32)(0U); /* scl pin */
/** - set i2c pins output direction */
i2cREG1->DIR = (uint32)((uint32)0U << 1U) /* sda pin */
| (uint32)(0U); /* scl pin *//** - set i2c pins open drain enable */
i2cREG1->PDR = (uint32)((uint32)0U << 1U) /* sda pin */
| (uint32)(0U); /* scl pin */
/** - set i2c pins pullup/pulldown enable */
i2cREG1->PDIS = (uint32)((uint32)0U << 1U) /* sda pin */
| (uint32)(0U); /* scl pin */
/** - set i2c pins pullup/pulldown select */
i2cREG1->PSEL = (uint32)((uint32)1U << 1U) /* sda pin */
| (uint32)(1U); /* scl pin */
/** - set interrupt enable */
i2cREG1->IMR = (uint32)((uint32)0U << 6U) /* Address as slave interrupt */
| (uint32)((uint32)0U << 5U) /* Stop Condition detect interrupt */
| (uint32)((uint32)0U << 4U) /* Transmit data ready interrupt */
| (uint32)((uint32)0U << 3U) /* Receive data ready interrupt */
| (uint32)((uint32)0U << 2U) /* Register Access ready interrupt */
| (uint32)((uint32)0U << 1U) /* No Acknowledgement interrupt */
| (uint32)((uint32)0U); /* Arbitration Lost interrupt */
please guide me to solve this issue.
Thanks and Regards,
Anand Kumar