PCA9507 I2C bus freeze

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

PCA9507 I2C bus freeze

1,611件の閲覧回数
chrisvanderaar
Contributor I

We have developed a PCB with I2c bus controlled by a T.I. Piccolo microcontroller. We have several I2C devices and have sometimes problems with a pressure sensor running at +5V . This is a known issue where sometimes the pressure sensor freezes the bus and keeps SDA low especially when we put noise on the pressure sensor wiring with sparks from a piezo lighter. Therefore we made a switch where we can switch off the supply from the sensor so it will run again when this happens. At the same time the PCA9507 is disabled by keeping the enable line low during 40msec and start the I2C communication again after this (and some delay time). However sometimes after disabling the PCA9507 and switching on the sensor supply again we see no pulses at the I2C bus SDA and SCK at the sensor side (= B side of PCA9507) while the pulses are present at the A side (microcontroller) while the buffer is enabled. At the +3V3 buffer we see pulses at both sides at the same time.

So it looks like the PCA9507 is put in a kind of 'lock state' after disabling because the SDA and SCL lines remain high on the B side while the A side is switching (the PCA9507 power is not switched off , only the power of the sensor). Even when we disconnect the pressure sensor so there is nothing left on the bus the SDA and SCL lines are still high.  The only way to get the buffer out of the lock situation is to switch off the +5V (VDD_B) for a short moment so the buffer is working normal again.  Do you have a suggestion while sometimes (by ESD discharges on the I2C lines) the buffer could remain in a lock situation? We would like to solve this in software because a hardware patch means changing 50 boards in a machine at the customer and this is a difficult job.

I2C_PCA9507.JPG

タグ(1)
0 件の賞賛
返信
2 返答(返信)

1,563件の閲覧回数
reyes
NXP TechSupport
NXP TechSupport

Hi,

This kind of operations where you do not finish the communication properly could cause I2C hang causing future communication issues as you are seen, this can be seen as hot-swap operation.

 

For hot-swapping operations, you need a device with circuitry that precharges the SDA and SCL pins to prevent glitching data on an active I2C bus when the unpowered slave card is inserted into the backplane system. Unfortunately, the PCA9507 does not include this feature, I recommend you to switch to a hot-swappable translator like the PCA9512 Hot Swappable I2C Buffers:
PCA9512: https://www.nxp.com/docs/en/data-sheet/PCA9512A_PCA9512B.pdf

 

Other thing you can test is reset the I2C bus, in the unlikely event where the clock (SCL) is stuck LOW, the preferential procedure is to reset the bus using the HW.

If the data line (SDA) is stuck LOW, the master should send nine clock pulses. The device that held the bus LOW should release it sometime within those nine clocks. If not, then use the HW reset or cycle power to clear the bus.

 

Regards,

Jose

0 件の賞賛
返信

404件の閲覧回数
Tomyang2023
Contributor I

Hello:

I also want to confirm this issue. We designed one board, in which used two PCA9507, connected to the same I2C bus, and with separated EN signal. The result: It can work correctly if just enable one extender. But if enable two extender together then will be failure, is this same issue? Or I can say just can enable one extender at one time?

0 件の賞賛
返信