I am following Phillips I2C spec, and in that they have given that a read will happen only after a dummy write to that address, whereas write can be directly done to the address. Why is this? Why cant we directly read from a reg without making a dummy write to it. is this protocol specification or philips own constraint. If so why this constraint cropped up. can we write a I2C slave, with FSM for direct read???
I wonder what you mean with dummy write and which clause of the I2C-bus specification you're referring to?
A basic I2C transaction can be e.g. a read address followed one data byte (if it makes sense for the specific I2C device). For example read the input from a PCF8574 port expander.
an I2C fame is always composed by a start condition followed with a 8bits composed by 7bit of slave address and 1 bit to define the direction (read/write) of the following bytes, nothing else. An acknowledge occurs for each byte done by the the circuit which received this byte.