Hi everyone, I am new to i2c and TMS570. I have some issues developing communication between my TMS570LS3137ZWT and MPL3115A2 pressure sensor using i2c interface. I first use the oscilloscope to check the signal from TMS570 without connecting to the sensor.
Here is my setting in HALCoGen:
1. Enable I2C Driver only
2. Check I2C only in Pinmux
3. Others pls check the image below
http://i.imgur.com/FTXpMnUl.jpg
http://i.imgur.com/J47o0L3l.jpg
http://i.imgur.com/ILXJ3lOl.jpg
http://i.imgur.com/e9aPJkll.jpg
And for all the case below the own_add is 0x20
I have eight questions about the i2c question:
1. How can I avoid the own_address in the start condition or it is unavoidable?
i2cInit();
i2cSetOwnAdd(i2cREG1,own_add);
i2cEnableLoopback(i2cREG1);
i2cSetStart(i2cREG1);
i2cSendByte(i2cREG1,0xFF);
while(1);
from the above the codding I expected there is only a start condition followed by a oxFF signal,However, the first byte is always the own_add (you can change it by you can't remove). is it normal or is it unavoidable?
Case1 - With Setstart and 0xFF
http://i.imgur.com/LwTdTnU.jpg
Case2 - SetStart without 0xFF
http://i.imgur.com/0DeuztY.jpg
2. Why EnableLoopBack function is necessary?
from same set of code the EnableLoopBack function is necessary. Without that signal an unknown is found. It is normal? What is the purpose of it?
Case3 - EnableLoopBack with 0xAA
http://i.imgur.com/GhB5Elb.jpg
Case4 - Without EnableLoopBack
http://i.imgur.com/nljdZe4.jpg
3) How can I generate the second start condition
I try to ignore the own_address and EnableLoopBack issue, I cannot generate the second start condition.
Case5 - First Setstart before 0xFF, Second SetStart after 0xFF
http://i.imgur.com/RuaFanR.jpg
Case6 - First SetStart Only, no second one
http://i.imgur.com/BkHkphb.jpg
4) Why I can only send 2 bytes ?
In Case 7 there should be 3 0xFF signal but at last only two are generated.
Case7 - Three SendByte Function
http://i.imgur.com/xEvUL1W.jpg
5) In the official example from HALCoGen, only 8 characters (8 bytes are sent)
Case8 - LES
http://i.imgur.com/RFllUHZ.jpg
Case9 - LEZ
http://i.imgur.com/KAFGBrW.jpg
6) I cannot generate a Stop Condition
Case10 - With SetStop function
http://i.imgur.com/m15N3bF.jpg
Case11 - Without SetStop function
http://i.imgur.com/JY02owC.jpg
7) ~transmitter
I set ~ transmitter after 0xFF, but the changes appear before 0xFF. How does it happen?
Case 12 - with ~I2CTRANSMITTER after 0xFF
http://i.imgur.com/6DN7YLu.jpg
Case13 - without ~I2CTRANSMITTER after 0xFF
http://i.imgur.com/MfMSYDq.jpg
8) Ack Bit
In fact the TMS570 only connected to oscilloscope. I expected that the ack bit is always 1 as no sensor is present. However, in all the case above the ack bit is always 0, how does it happen?
At last, I just want to generate a basic communication like:
Start Condition - Slave Address Write - Start Condition - Slave Address Read - Feedback from Sensor - Stop
Can you suggest how can I do this?
Thanks for your kind attention.
Man Choi