In order to translate the I2C address of the CXP transceiver from 1010000x (A0/A1) to 1011000x (B0/B1), I would like to do the following:
- Connect the SDA wire from the main SDA/SCL I2C bus to the CXP I2C bus wire, CXP_SDA, through the buffer PCA9515A.
- Connect the main SDA/SCL I2C bus to a CPLD.
- Connect one CPLD output to the EN pin of the PCA9515A, another CPLD output (open-collector) – to the CHP_SDA .
- Make the CPLD check the first 3 bits of the I2C address; if they equal 101, disable the PCA9515A for one SCL clock period and set CXP_SDA low for one SCL clock period from the CPLD. As a result, the fourth address bit of the CXP_SDA (but not of the SDA) will be 0 if the first 3 address bits were 101 (i.e., when the bus master sends the address 1011xxxx, the devices on the main bus will see the address 1011xxxx, but the address on the bus CXP_SDA will be 1010xxxx).
I would like to know from you whether it will hurt anything if I disable the PCA9515A for one clock period on-the-fly (when the bus is active) ?
If for some reason you do not recommend to use the PCA9515A this way, any alternative proposals would also be very helpful.