This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PCA9535: PCA9535 power up anomaly. Registers do not always default to values specified in data sheet.

Part Number: PCA9535
Other Parts Discussed in Thread: TCA9535

We recently experienced some problems which were tracked to the power up behavior of the PCA9535's.

For many years we have been using these parts on at 2 dozen different products and we have never

had to manually initialize the Polarity Inversion Registers which, according to the data sheet (Page 9), default to 0's

(inputs NOT inverted) on powerup.   The recent problems manifested themselves as random occurrences of

unusual data (usually 10010001 ) on Input Port Register 1.  I subsequently determined that the bits which

showed 1's when they should have been 0's were actually being inverted - changing the actual input to 1

would restore the expected zero value.  This lead me to wonder if there was a problem with Polarity Inversion

Registers. I modified the code in one product to initialize the Polarity Inversion Registers to 0x00 and the random

problems seem to have gone away. Apparently the Polarity Inversion Registers are not being cleared on powerup all

the time. In this particular case the label on the IC's is as follows:

0CA5LHT

PCA9535

G4

 

Is this a known problem and has it been addressed? We risk having to revise many pieces of firmware and potentially offer free firmware upgrades for many customers who already have units which may experience these random problems.

Thanks.

  • Can you confirm that the Polarity Inversion Register reads as non-zero?

    Can you check whether this happens with the TCA9535?

    Are any input pins floating?

  • Yes. The register reads with "1" in bits which are misbehaving. The behavior of the inputs is also correct for the bit

    pattern in the Polarity Inversion Register - an input which is 0 is read as 1 and if it is 1 is is read as 0.

    We are using the SOIC package so we cannot easily substitute the TCA9535.

    In addition, writing 0x00 to both Polarity Inversion Registers during initialization makes the problematic behavior go away.
    Unfortunately changing dozens of pieces of code in existing products is a substantial task.

  • Hi Ron,

    Any thoughts on input pins floating in your schematic (per Clemens' suggestion)? Are you able to provide a schematic?

    Also, how are you powering up/down the device? Do you have a scope capture of how you are performing the power-on reset for this device? 

    I checked the top-side marking of your device. This part came from one of our facilities. We can rule out the possibility of a counterfeit device. 

    Regards,

    Tyler