AnsweredAssumed Answered

I2C slave - how to receive a undetermined amount of bytes from the example using the transactional method.

Question asked by Dennis Hicks Employee on Jan 9, 2017
Latest reply on Jan 10, 2017 by Jorge_Gonzalez

The examples for slave i2c are very simplisted (they simply transfer a set amount of bytes each time).  However, for most i2c applications as well as mine, we do read/write transactions.  The biggest problem I am having is that I don’t know if it will be a read or write transaction until I see how many bytes I receive from the master (for a read, I just get the address, for a write, the data follows).  So, I am not sure how to receive a undetermined amount of bytes from the example using the transactional method.

 

In the call back function, if I say to receive 4 bytes (but sometimes 2 bytes will come because it is a read), I get weird cyclical behavior with every i2c transaction.  I was hoping just to give the max amount of bytes I expect to receive, and then look at the actual bytes transferred on the completion event, but it does not behave as expected.

 

Do you know of an app note that shows a more real-world i2c slave example?

 

My environment:

IAR for ARM: 7.20.5.7624

IAR common components: 7.1.2.3324

Segger Jlink

SDK 2.0

Bare metal

info in this thread is referring to the slave interface.

Outcomes