Regarding the I2C, the TD1208 is completely transparent compared to the underlying EFM32G210F128 MCU.
The I2C protector implementation in the EFM32 is a mix between hardware and software, where the 2IC peripheral is taking care of the protocol's low-level stack, and the "efm_i2c.c" source from the emlib library handles higher-level stuff, such as the address and ACK/NACK handling, coded as a finite-state automaton in the I2C_Transfer() function.
This function is very important in order to understand what is going on: by inserting some debug in it, as well as in the corresponding IRQ handler. Using a GPIO and a scope, it is possible to grasp the details.
One of the problems that took us some time to figure out,; is that the I2C_TypeDef structure must be persistent as it cotnains the FSA current state. We had cases where this structure was declared on the stack in an initialization function and used outside it, generating a random automaton behavior.
The best source of information for the I2C is Silab's AN0011 and its corresponding examples:
http://www.silabs.com/products/mcu/Page ... notes.aspxIn order to understand the MCU, you can check the
EFM32G reference manual to get information on the Gecko family and its integrated peripherals (including the I2C), and the
EFM32G210F128 datasheet for information regarding this specific package.