An I2C bus provides the following low-level functions:
- Sets the communications speed of the I2C bus.
- A low level function to start communicating with a given slave device if you are writing your own I2C communications from scratch.
- This is a low-level call to indicate that the communication session has finished (ie 'hang up the phone').
- This is a low-level function to read, and return, a byte from the bus.
- This is a low-level function to write a byte across the bus.