Problems switching from internal DCDC converter to purely linear regulators on iMX280

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

Problems switching from internal DCDC converter to purely linear regulators on iMX280

1,036 Views
jeffmorgan
Contributor I

Hello!

I'm working with the iMX280, and we currently have it fully booting with our custom design.  However, due to the switch frequencies of the internal DCDC converter on the processor, we are having reduced sensitivity on our attached radio module.  Changing the switching frequency of the regulator helped a little bit to alleviate the sensitivity loss, but there is still enough of a loss so that we are considering using only the internal linear regulators to provide the various voltages (Vddd, Vddio, Vdda, and Vddmem).

So far, I've been modifying power_prep.c trying to add this functionality back in.  It looks like _start() is entirely used to turn on the 4p2V linear regulator, and from there power on the varios DCDC outputs.  Looking at the block diagram in Figure 1 of AN4199, the 5V supply should feed into the daisy chain of VDDx linear regulators, and the 4p2V regulator can be ignored entirely if the DCDC converter isn't being used at all, so that's been my plan of attack.

In init_mx28.c, I added in a couple of debug print statements to determine the register settings for each of the HW_POWER_VDDXCTRL registers.  On boot, I was getting the following values:

vddd power 0x00B20710

vdda power 0x000B260C

vddio power 0x0005260A

vddmem power 0x00000130

This build started failing at the "start change cpu freq" stage of booting.  Occasionally the board would boot slightly past this stage, but it would be very glitch, ending with "Data Abort".  This would occur before the outputting of the hbus value.

After this, I found the hw_power_SetVddXXPowerSource() functions in hw_power.c, and tried using those to configure the registers.  Using these, the board dies sooner, with the following output:

vddd power 0x00F00710

vdda power 0x000F260C

vddio power 0x00(board died here before reading out the remaining three bytes)

I would assume these functions handle all of the conditional requirements that are outlined of Figure 4 of AN4199. 

AN4199 also mentions that the linear regulators are running on power up, and that the 4p2 rail and DCDC converter are turned on afterwards.  I tried at one point pulling out just the 4p2-related code, but that still caused the board to fail to boot, so I likely missed something.  Would this be an easier path to pursue?

I think the pieces I'm missing are either the order of things that need to happen, and/or the timings associated with these.  We've already applied the patches to have the board run off of 5V-only, so that's not an issue with this board.  The board has also boots fine with the DCDC converter active, so the hardware pathing is fine (such as the traces with the RAM, etc.). 

What is the most advised way of going about doing this change?  Or does anybody have any examples where this has been done in the past? 

Thanks,

Jeff M.

Labels (2)
0 Kudos
Reply
2 Replies

717 Views
igorpadykov
NXP Employee
NXP Employee

Hi Jeff

running only from LDOs requires very small power consumption from board,

as VDDIO Maximum Output Current = 270mA (min) and (from Table 13.

Power Supply Characteristics IMX28CEC ) :

1. Because the internal linear regulators are cascaded, it is not possible to simultaneously

operate the VDDIO, VDDA, VDDM, and VDDD linear regulators at the maximum specified load current.

2.VDDIO Load Current + VDDM Load Current + VDDA Load Current) < VDDIO Maximum Output Current

(VDDA Load Current + VDDD Load Current) < VDDA Maximum Output Current

So if for example, one uses DDR memory, it can consume almost all allowable power.

For debugging one can try to check regulators brownouts in code and run application from iRAM,

not using DDR, as done on link below

Re: i.MX28 DDR stress test

Best regards

igor

0 Kudos
Reply

717 Views
lategoodbye
Senior Contributor I

Hi Jeff,

i'm currently working on Linux driver for power supply, regulator and DCDC. The DCDC driver already supports changing switching frequency via devicetree.

Sorry i don't have a solution for your problem, i also stuck at the same problem switching back from DCDC to linregs.

Here is my github repo:

lategoodbye/linux-mxs-power at dcdc-clk · GitHub

Maybe you find something useful.

Stefan

0 Kudos
Reply