I was trying to read the register of a 3-axis accelerometer using I2C module. The required read protocol is shown fig.1 shows. As we can see, To read the registers, the master sends a start condition, followed by the I2C address and a write bit, and then the register address that is going to be read. Upon receiving the ACK, the master transmits a start signal followed by the slave address and read bit. However, since 8037 has the feature of automatic stop condition, after calling the sendblock() function to send the I2C address and register address, the automatically sent stop condition will terminate the communication with the salve. Then even if I send the I2C address again, no data will be sent back. The feature of automatic stop condition can’t be removed in process expert, just as figure.2 shows.
My questions are: is it possible for 8037 to complete the protocol shown in fig.1? Can I send the stop condition manually by operating the internal registers of 8037 directly? How to generate a repeated start condition, instead of the stop condition, after sending the register address of the slave.
Thank you very much!
Fig.1
Fig.2
Please see the more recent copy of this post.