Other Parts Discussed in Thread: SYSCONFIG, LPSTK-CC1352R, HDC2080
I've been chasing an I2C issue where I expect the cc1352p to read 6 bytes from one of our sensors.
But it appears that the the read process stops driving the clock line after the first byte.
Here is a capture of the failure:
Notice that the data line is stuck low from this point forward.
I'm guessing the sensor is perpetually waiting for the rest of the clocks (5 more bytes) after the process has ack'd the first 2 bytes.
This is the capture of a successful occurrence:
I hesitate to bring up this next observation, as it may be a red herring to the real problem, but when the read frame above immediately follows the following block, it is much more likely to fail.
But I want to stress that not following the following block doesn't make the problem go away, it is just greatly reduced.
The above capture is a request to a different I2C device that is currently not present on the I2C bus.
The NACK following both attempts to talk to it are expected.
I'm am using SimpleLink_cc13x2_26x2_sdk_5_20_00_52
When stepping through the driver code, I get to the function "I2CSupport_primeTransfer", line 607:
I have confirmed that the transaction object, specifically the "readCount" value is set to a value 6.
So the else case on line 607 seems to be the correct code-path for this case.
Another piece of information:
This is a project to port an existing product from the MSP432P401R (a processor you have decided to no longer support) to the CC1352P.
The I2C process was working just fine on the MSP432, so I'm wondering if there is something different that needs to be considered.
Also, I've looked through the errata, and did notice that there is a "CPUdelay(2)" in the I2CMasterControl function, looks like the "work-around" that is called out in the errata sheet:
This doesn't sound like the same problem to me, but I thought I would mention it if it helps the conversation.
Thank you, and I'm looking forward to any help that can be provided...