Other Parts Discussed in Thread: CC3220SF
Hello support team.
I am communicating the CC3220SF with a FRAM memory and an RTC via I2C.
I'm using TI-RTOS and the Texas Instruments I2C driver.
The frequency of the I2C is 400 KHz.
Communication with both devices works only after a few seconds.
I am using the I2C_transferTimeout function, when the error occurs, the function's return is I2C_STATUS_ERROR.
I took a look at the Texas I2C.c driver code but found no clues to the problem.
I connected a Logic Analyzer to the I2C pins and a trigger signal on a led that I called "BLU".
I programmed the "BLU" led to go up when the I2C_transferTimeout function returns I2C_STATUS_ERROR.
The figure is from a transfer with FRAM.
In this transaction I configured:
Slave address = 0x50;
Number of write bytes = 2, these two bytes being the address of the FRAM memory to be accessed 0x00 and 0x18;
Number of reading bytes = 6, in this case it is 6 bytes from address 0x0018 that will be read.
In the figure below, I placed a capture at the top, when the communication was successful, and at the bottom, when the error occurred.
The two parts of the figure are from the same capture, the upper part around 19.3 ms and the error occurring around 49.9 ms.
The difference I noticed was that after sending the address to FRAM,:
1 - only ACK (A) occurs and CC3220SF does not perform Repeated Start (Sr);
2 - for some reason the I2C bus is kept idle without SCL clock;
3 - after a period of almost 2 bytes, STOP (P) occurs;
4 - after a while, START (S) occurs;
5 - The address of the slave is placed for reading and the same data seen at the top is sent by the FRAM;
6 - however the I2C_transferTimeout function returns I2C_STATUS_ERROR, triggering the BLU signal.
After this error, all subsequent transactions indicate I2C_STATUS_ERROR.
I noticed that even restarting the debugging, the problem remains and I need to do a Power On Reset. I don't know any of the devices are holding the I2C bus.
I also tested with the I2C_transfer function and the same symptom occurs, after a while, the function returns false and looking at the logic analyzer the behavior is similar.
I'm using CCS 10.3.0.0000007 and SimpleLink CC32xx SDK 5.10.0.02.
I also put an image with the I2C registers at the moment the problem occurs.
Thanks for any help.


