PCA9450 and multiple time programmable registers

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

PCA9450 and multiple time programmable registers

4,497 Views
ODAV
Contributor II

Hi,

 

I design a new custom board with IMX8M-mini. I want to use PCA9450, but I would like to change some registers for powerup sequencing. You have similar posts, but without a correct answer.

In the datasheet, registers are MTP (multiple time programmable), so how can we reprogram it, to be not volatile ?

I have done that with a previous board with PF8121, a MCU reprograms all the PMIC registers before powering up the PMIC and processor, but with PCA9450, I don't see how to do a similar way.

Labels (2)
Tags (2)
0 Kudos
18 Replies

3,625 Views
ODAV
Contributor II

Hi,

I'm debugging my board now. All works pretty well, except the registers reprogrammation.
MCU unreset PMIC, then applies VSYS, and keep PMIC_ON_REQ low.
MCU reads all the PMIC registers by I2C, all is normal, so I2C bus is OK and registers too. (except that auto-increment register address seems not working...)
I change a register (reg[0x0A] = 0x01), and after I re-read it, but the register doesn't change (read = 0x00).
MCU releases PMIC_ON_REQ.
After powerup, MCU changes again the same register with the same value, and now, it works.
I tried the same thing with an other register, same problem.
It tried to do it during PWRUP SEQ power state, it doesn't work neither.

So it seems as if registers are not writtable in fact during SNVS power state, but only during RUN power state.

I hope I won't be forced to Powerup, program registers, Powerdown and powerup again to make it work...

Any idea which could explain this trouble ?

0 Kudos

3,392 Views
durmus
Contributor IV

Hi ODAV,

Did you have any resolution? I have the exact same problem.

Thanks for your reply.

0 Kudos

3,360 Views
ODAV
Contributor II

No, there is no solution, I was forced to reprogram PMIC after its RUN mode (but before CPU has finished to boot), so some registers reprogrammation can't be done (powerup sequence can't change).

4,394 Views
ODAV
Contributor II

The MPU is not connected to this I2C bus. The master is the MCU and the slave is the PMIC. Could we use the VINT or the NVCC_SNVS to supply the 1.8V?

0 Kudos

4,365 Views
art
NXP Employee
NXP Employee

In case of not connecting MPU to the I2C bus it is possible to use VINT to supply 1.8V (regarding NVCC_SNVS, better is not to overload this supply). Please note that there will be no PMIC control from the MPU side in that case.

0 Kudos

4,405 Views
ODAV
Contributor II

The output enable input (active HIGH; referenced to VCC(A)) of the chip NTS0102

0 Kudos

4,397 Views
art
NXP Employee
NXP Employee

Better is to control these OE signals of bus isolation circuits by MCU, since in the period of time after applying VSYS and before powering the MPU up (MCU holds the PMIC_ON_REQ signal Low and configures the registers of PMIC that time) the MPU remains unpowered and, if not isolated from I2C bus (e.g. if driving OE signals of bus isolation circuits by VSYS), can pull the I2C bus Low, thus, making it non-functional.

0 Kudos

4,413 Views
ODAV
Contributor II

2. It's not a good idea to apply any voltage to unpowered interface. In your
case (MCU gets the power first, then PMIC VSYS is appled, then the MPU is
powered on) some MCU-controlled isolation circuit (e.g. bidirectional gates with
Enable signal) should be implemented on the I2C interface on both MCU and MPU
side.

We can use for exemple the chip NTS0102 to isolate the I2C bus. But could we use the VINT or the NVCC_SNVS to supply the 1.8V and drive the OE?

0 Kudos

4,410 Views
art
NXP Employee
NXP Employee

What OE do you mean?

0 Kudos

4,480 Views
ODAV
Contributor II

OK, I will do like that. But I though I didn't have the right to do that: in the consumer datasheet of IMX8MMini, table 17, if I intercept the PMIC_ON_REQ signal, the IMX8MMini will have its power later on (the time for my MCU to reprogram PMIC), and I would violate the time T4 of table 17, no?

0 Kudos

4,479 Views
art
NXP Employee
NXP Employee

Until the PMIC_ON_REQ signal is held Low, all of the PMIC power supplies, except of VDD_SNVS_0P8 and NVCC_SNVS_1P8, are kept Off, and external MCU has enough time to reprogram the PMIC registers. Then, once MCU releases PMIC_ON_REQ, the power-up sequence starts from here according to the new PMIC register values.

The PMIC_ON_REQ output of i.MX8MMini is open-drain, so, you can just wire-OR it with the output of MCU that should hold it Low initially.

0 Kudos

4,470 Views
ODAV
Contributor II

OK, perfect.

As my MCU I2c is 3.3V compliant only, can I use i2c interface in 3.3V instead of 1.8V ? It seems to be ok for electrical characteristics, it seems to not have internal pull-up.(I can't use the I2C level translator, because the powerup sequence is blocked by my MCU).

If it's ok for you as I expect, can my pull-up voltage of this I2C interface appear before Vsys ? (My MCU 3.3V appears before PMIC Vsys).

Another question (nothing to do with previous) : Can I feed a 32.768KHz clock signal instead of a quartz ? What would be the good level of my clock signal ?

Last question: do you have a reference schematics with a IMX8MMini ? I found the EVB for PMIC, but just alone.

Thank You.

0 Kudos

4,461 Views
art
NXP Employee
NXP Employee

1. Yes, it is possible to use the PCA9450 PMIC I2C interface at 3.3V. Please
note that, in that case, the MPU I2C interface should also operate at 3.3V.

2. It's not a good idea to apply any voltage to unpowered interface. In your
case (MCU gets the power first, then PMIC VSYS is appled, then the MPU is
powered on) some MCU-controlled isolation circuit (e.g. bidirectional gates with
Enable signal) should be implemented on the I2C interface on both MCU and MPU
side.

3. Yes, an external oscillator can be used to provide the 32.768KHz clock, as it
is done on the i.MX8MMini EVK/EVKB board. Please refer to the i.MX8MMini EVKB
board schematic. The signal oscillation swing should be within 0V to
NVCC_SNVS_1V8 voltage range.

4. The only reference schematic of i.MX8MMini-based hardware that uses the
PCA9450 PMIC, available from NXP, is the schematic of the i.MX8MMini EVKB board.

Best Regards,
Artur

0 Kudos

4,457 Views
ODAV
Contributor II

OK.

For the point 4, I can't find a board with PCA9450 and Imx8MMini, just found with a nano. Can you give me the link ?

Regards.

0 Kudos

4,450 Views
art
NXP Employee
NXP Employee

Please refer to the following i.MX8MMini LPDDR4 EVKB board design files:

https://www.nxp.com/webapp/Download?colCode=8MMINILPD4-CPU2-DESIGNFILES

0 Kudos

4,483 Views
art
NXP Employee
NXP Employee

The PCA9450 PMIC is supplied in one of three pre-programmed nonvolatile
configurations: PCA9450A, PCA9450B and PCA9450C, meant to be used with the
i.MX8MMini, i.MX8MNano and i.MX8MPlus processors, correspondingly. The customer
has no way to change these nonvolatile configurations.

On the other hand, once the main system power is applied to the PMIC, all PMIC
registers can be re-programmed through the I2C interface. If you need to change
default PMIC register values before powering up the MPU, you have to use an
external MCU that takes power form the main system power supply, holds the
PMIC_ON_REQ signal Low once the main system power is applied, then reprograms
the PMIC registers, and then releases the PMIC_ON_REQ signal.

Best Regards,
Artur

0 Kudos

2,327 Views
max90ippower
Contributor I
Hello, may i ask if this procedure has to be done every time(volatile) or if once it is programmed i will wake up every time with the configuration needed?
So...is the configuration stored to an eeprom?
0 Kudos

3,375 Views
durmus
Contributor IV

Hi @art ,

On the other hand, once the main system power is applied to the PMIC, all PMIC
registers can be re-programmed through the I2C interface. If you need to change
default PMIC register values before powering up the MPU, you have to use an
external MCU that takes power form the main system power supply, holds the
PMIC_ON_REQ signal Low once the main system power is applied, then reprograms
the PMIC registers, and then releases the PMIC_ON_REQ signal.

We are trying this exact scenario on our custom board. There is a problem though. When the PMIC_ON_REQ signal is held LOW, we are not able to reprogram the PMIC registers. They stay at their default values. We can only reprogram the registers in RUN state, that is when PMIC_ON_REQ is high and after the power-up sequence is completed. And it is not very useful for us.

Can you confirm if this is the expected behavior? If not, what are we missing?

Thanks for your reply.

0 Kudos