I'm looking more into these SMBus Protocols and I'm beginning to think that it is not supported in PSOC Creator. I hope I'm wrong.
Hello, I went back and looked at an I2C MasterRead example that I did a few days ago and looked at the I2C signals and I believe things working correctly.
This shows the MasterWrite command first that passes the Device Address and the "Command" or "Sub-address". The second group is a MasterRead. The time between the MasterWrite and MasterRead is about 3.038ms.
Here is the MasterWrite passing the Device Address and the "Command" word. I use the "Command" to match the SMBus protocol wording.
Here is the MasterRead. What bothers me is the 3.03msec between the two functions. I thought it would be back to back transactions.
Does this look okay?
Although I don't have 5LP, from PSoC Creator Project, HAL drivers generated
seem to be similar with PSoC 4, so I'm hoping that my strategy also works for you.
First of all to support the protocol written in the datasheet,
usually no "single" command do it all,
so we need to use multiple HAL APIs to fulfill the format.
For example, where 'S' is written use I2C_MasterSenStart()
and where 'P' is written use I2C_MasterSendStop()
for the COMMAND use I2C_MasterWriteByte()
for the DATA user I2C_MasterReadByte().
Apparently, this is somewhat bothersome, so I created my intermediate API interface(s)
and using them. (i2c_utils.h and i2c_utils.c)
With these, after I2C_Start(), you can
i2c_writeReg(command, data) ;
data = i2c_readReg(command) ;
data = i2c_ReadByte() ;
NOTE: this may not work for your system, but at least it can be some hints for you, I hope.
P.S. OOPS, I took too long, before I wrote you have found the solution, congrats!