Hello,
I have a TMS320F28335 conencted to a 24C64 eeprom. If I try to transmit more than 32 bytes, the I2C master doesn't generate a stop condition (neither on the bus nor as an interrupt).
All the bytes are being transmitted including the two byte address - I can see them on the bus and my debug code shows them being put in the transmit register. I consecutively ordered the data bytes sent (i.e. 0,1,2,3,4,5...0x1F) and I set the page number to 0, so I would get 0 0 0 1 2 3 4 5 6 7....0x1F on the bus, which is a total of 34 bytes sent. The I2C Count register shows 0x22, which is equal to 34.
My debug code and when I stop the program shows the I2C register as shown below.
Does anyone have any idea why the stop condition would not be generated for more than 32 bytes of data?
Stephen
I2C Registers
I2COAR: 0x0000 // I2C is a master,so its own slave address doesn't matter
I2CIER: 0x0026 // ARDY,NACK and SCD standard interrupts are enabled
I2CSTR: 0x1010 // Bus is busy of course since stop condition wasn't generated and XRDY is set, but doesn't matter since I am using the FIFO
I2CCLKL: 0x002D //NA
I2CCLKL: 0x002D //NA
I2CCNT: 0x0022 // set to 34 bytes as it should be
I2CDRR: 0x0046 // NA
I2CSAR: 0x0050 // EEPROM address
I2CDXR: 0x001F // NA
I2CMDR: 0x4E20 // FREE=1 (NA), STP=1 (should generate stop when 34 bytes transmitted), MST=1, TRX=1 (transmitter), IRS =1 (I2C module is enabled.)
I2CISRC: 0x0000 // No interrupts happened
I2CPSC: 0x000E // Prescale register (NA)
I2CFFTX: 0x6080 // I2CFFEN =1 (FIFO mode enabled),TXFFRST = 1 (enable transmit FIFO), TXFFINT = 1 (Transmit fifo interrupt condition occurred)
I2CFFRX: 0x202D // RXFFRST=1 (Rx FIFO enabled),RXFFIENA =1 (Rx FIFO interrupt enabled), RXFFIL4-0 = 13 (interrupts after 13 bytes rx)
