Other Parts Discussed in Thread: TCA6424A,
Hello there,
In our design we are using the TMS570LS3137 MCU's internal I2C and the MibADC1 modules. By design they are completely independent, meaning that device signals are not crosslinked between those two modules. The I2C module is configured to work with a 400 kHz device (SCLK verified), namely an TI I/O expander P/N TCA6424A, while the MibADC1 module is configured to acquire 12 analog channels with a sampling time of 2us per channel.
Prior enabling MibADC1, the 24-bit I2C I/O expander was configured with 2 input ports and one output port. The configuration registers values read back confirms the correct configuration, and predefined input ports states are correctly read back too. Now with the I2C NOT operating, the MibADC1 is launched and all channels values are correctly batch-acquired every 50ms.
The MibADC1 acquisition mechanism is without software intervention and configured as follow:
- RTI compare event 2 to start the MibADC1 HW sampling sequence (every 50ms)
- When sampling done (12x2us=24us), a preprogrammed DMA is triggered and channel data are transferred to software RAM
- When DMA transfer was done, an software IRQ is called to convert channel binary data to analog data
However, starting from the moment the I2C module is instructed to read or write (also every 50ms), all MibADC1 channels readings now contain the very same but wrong 24-bit binary value, and this value does not vary, not even one single bit, until when the I2C bus is having problem (with the Bus Busy=1 and cannot release Master Mode=1 ... we don't know why yet), typically within a second or two, then the MibADC1 restarts operating correctly with correct channel voltages (I2C bus won't work from this point on).
Anyone can tell me where to look please?
Thanks.