Other Parts Discussed in Thread: HALCOGEN
Tool/software: Code Composer Studio
Hi All,
I am trying to build an interrupt based i2c receiver application for the tms570lc43 MCU. I am fighting with a strange behavior in receiving data. I am using the i2c module in interrupt mode, 7bit address, 8 bit data, no FDF, receiver mode, "ignore Nack" option set , HL_i2c.c driver.
I can successfully complete a data transfer only if 2 data bytes are transferred (1 byte i2c slave address with R/W = 0, 1 byte register address, 1 data byte and i2CReceive() called with len = 2). If I try to transfer more that 2 bytes (len>2) then everything fails.
Looking the signals at the scope I can clearly see that after the 2nd byte reception then SCL line is tied to '0' by the I2C receiver module for an indefinite time and the transfer definitely doesn't succeed. It seems like the receiver forced to stop the transmission and some point, but I was not able to identify where and how it could happen.
Does anybody experienced the same issue? Conversely, does anybody succeeded in receiving more than 2 bytes in his TMS570 i2c slave application?
I was not able to identify the complete mechanism that could infer this kind of blocking condition. I tried to configure the i2c receiver SCL line as an input (Halcogen) to exclude the chance for it to set the line to '0' but it didn't have any effect (why not?) Does anybody have some hints on this?
I spent quite a long time investigating on this issue. I am going to change my project setting to stay with this limit of 2 data bytes transfers although this is very frustrating. I would appreciate very much if someone
that have a clue on this could help me understanding how to step forward.
Thanks a lot in advance.