Other Parts Discussed in Thread: TCA9539, TCA9539-Q1
Hello,
We are designing a new system that has, among other things, an FPGA connected to a TCA9548A i2c switch device.
The FPGA is directly connected to the SCL and SDA pins of the TCA9548A.
The SC2 and SD2 pins of the TCA9548A are connected to SCL and SDA pins of two (_0, _1) TCA9539 devices
See sketch below.
+--------------------+
| |
FPGA 9548A | 9539_0 | 9539_1
+-------+ +------------+ | +---------+ | +---------+
| SCL|<----->|SCL SC2|<-+--->|SCL p0|--> +--->|SCL p0|<--
| | | | | | | |
| SDA|<----->|SDA SD2|<---+->|SDA p1|--> +--->|SDA p1|<--
| | | | | | | | | |
+-------+ +------------+ | +---------+ | +---------+
| |
+------------------+
The FPGA is the i2c master.
We want to configure:
the ports (p0, p1) of the TCA9539_0 as outputs and
the ports (p0, p1) of the TCA9539_1 as inputs.
We would like your feedback on the steps below.
1 The FPGA sends a sequence of data to the 9548A to enable channel 2 of the 9548A.
2 Then the FPGA sends data to the 9548A to access the 9539_0:
to configure all of the 9539_0 ports (p0:p00-p07, p1:p10-p17) as outputs driving a fixed value of 1.
3 Then the FPGA sends data to the 9548A to access the 9539_1:
to configure all of the 9539_1 ports (p0:p00-p07, p1:p10-p17) as inputs.
4 Then the FPGA will read the p0 and p1 input registers of the 9539_1.
We think we can keep the control register, in the TCA9548A with a fixed value to enable channel 2 (SC2, SD2).
On page 24 of the TCA9539-Q1 document (SCPS254B January 2014 revised April 2016),
figure 28 shows a scenario of SDA serial data to read a register.
Is this scenario of reading a TCA9539 register, by the FPGA master, possible through a 9548A?
It appears in figure 28, that the master (FPGA via the 9548A) would need to transmit the "grey" bits and received the "white" bits.
Is this possible with the FPGA communicating through the 9548A to the 9539_1?
If it is possible, what would be the specific steps (bit details) for the FPGA master to read a register in the 9539_1?
Thanks in advance.
Dave