I have a setup where I have software running on a Green Hills INTEGRITY-178B RTOS, which talks to a number of I2C slaves over a serial port, which uses the SC16IS750 to convert serial data to I2C.
My question is, how do I create the start and stop bits needed to create an accurate I2C message? The application is written in C++, and I only know how to create a message buffer in bytes. So clearly, the first byte has to include the start bit, and the last byte has to include the stop bit. What should those bytes be?
The START and STOP conditions are always generated by the master. A HIGH-to-LOW transition on the SDA line, while the SCL line is HIGH, indicates a START condition, and a LOW-to-HIGH transition on the SDA line while the SCL is HIGH defines a STOP condition.
We have a bare metal sample code for the SC16IS752 that can be helpful for your development. The only difference between the SC16IS752 and the SC16IS750 that you are using is that the first one is a dual UART and the SC16IS750 is a single UART. Therefore, the bare metal project and driver can be helpful.
SC16IS752 - Bare metal example project https://community.nxp.com/docs/DOC-335332
Have a great day,