AnsweredAssumed Answered

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

Question asked by Jeff Morgan on Jul 2, 2015
Latest reply on Jul 5, 2015 by igorpadykov

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.

Outcomes