I set up a PSoC 3 with an EZI2C module following the various examples available. I was able to read from it right away, but was unable to write to it, no matter what settings I changed on PSoC or the Raspberry Pi I'm using as master. After hitting my head against the bench for a couple days and leaving it alone for the weekend I finally got the idea today to try calling EZI2C_SetBuffer1 after EZI2C_Start. It worked! It appears that EZI2C_SetAddress1 has the same restriction--it has to be called after EZI2C_Start to actually change the address.
Should I have known about this for some reason? Why do the examples call these functions before EZI2C_Start? I'm posting both to get answers after being frustrated about this, and with the hopes that I save others the same frustration . . .
Could you please let us know which code examples you were referring to?
Since you are using PSoC 3, I referred to CE95314 and Ezi2cDesign code examples (by navigating to PSoC creator-> File-> Code example).
In the above mentioned code examples, EZI2C_SetBuffer1() is called after EZI2C_Start().