I²C
I²C stands for Inter-Integrated Circuit and is a serial data-bus developed by Phillips.
The EA uniTFT provides one I²C interface: As default the interface is parametrized as Slave and used to communicate with the display. All data sent to the display are interpreted as a command (with and w./o. Small-/Short-Protocol). Would you like to send and receive any data via I²C to any other device like temperature sensor, then you have to use the Master functionality (pins 43 and 44). Those are handled via #H commands.
The bus is a Master-Slave implementation and needs 2 signal lines:
- SCL (Serial Clock Line)
- SDA (Serial Data Line)
The electrical specification defines that both lines are terminated with a pull-up resistor at VDD, because all devices connected to the bus have open collector outputs. The bus clock is always given by the master, which controls the entire communication:
After the start condition, the slave address follows. In this case, bit 0 is the so-called R/W bit and determines whether the slave should be read (1) or data is transmitted (0). The data exchange takes place until the master executes the stop condition. More detailed information can be found in the I²C specification. The default I²C bus address is 0xDE (as 8-Bit address, including R/W bit, as 7-Bit address without R/W bit it's 0x6F) when writing to the slave unit.
The command #XCI and #HIP (master interface) can change the I²C write address to any other address. Alternatively the command can be written directly into the boot file <start.emc>.
You may check the current settings in Boot menu.
The maximum frequency in slave mode is 400 kHz, the master interface is capable up to 1 MHz.The module needs some time to prepare data for transfer. That means a wait cycle (no activity on the SCL-line) of at least 50 μs is required before reading data.