Advertisement
Guest User

Untitled

a guest
Nov 9th, 2017
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.71 KB | None | 0 0
  1. void MC_MODE_INIT(void) {
  2.     // TODO: Check
  3.     MC_ME.ME.R = 0x000005FF;                        /* Enable All Modes */
  4.  
  5.     /* FlexCAN 0: select peri. cfg. RUN_PC[1] */
  6.     MC_ME.PCTL79.B.RUN_CFG = 0x1;
  7.     MC_ME.PCTL204.B.RUN_CFG = 0x1;
  8.  
  9.     MC_ME.RUN_PC[0].R = 0x00000000;  /* gate off clock for all RUN modes */
  10.     MC_ME.RUN_PC[1].R = 0x000000FE;  /* config. peri clock for all RUN modes */
  11.  
  12.     /* PBRIDGEx_CLK Divide */
  13.     MC_CGM.SC_DC0.B.DIV = 3;  /* Freq = sysclk / (0+1) = sysclk */
  14.     MC_CGM.SC_DC0.B.DE  = 1;  /* Enable divided clock */
  15.  
  16.     /* Connect XOSC to PLL. We ultimately use the output of PLL1. PLL1 must be fed the output of PLL0 */
  17.     MC_CGM.AC3_SC.B.SELCTL = 1; //40 MHz XOSC selected as input of PLL0
  18.  
  19.     MC_CGM.AC4_SC.B.SELCTL=0b11; //PLL0_PHI1 selected as input of PHI1
  20.  
  21.     /* Configure PLL0 Dividers - 160MHz from 40Mhx XOSC */
  22.     /* PLL input = FXOSC = 40MHz
  23.        VCO range = 600-1200MHz
  24.        MPC5744P uses PLL1 for fractional divide options.
  25.        Configure PLL1 first, because it depends on PLL0. So configure while
  26.        PLL0 still off
  27.     */
  28.  
  29.     /* Program PLL1 to same frequency as PLL0.
  30.      * MFD multiplies input by at least 10. So multiply by 10 and divide by 10.
  31.      * 10/10 = 1, so same frequency as PLL0
  32.      */
  33.     PLLDIG.PLL1DV.B.RFDPHI = 10;
  34.     PLLDIG.PLL1DV.B.MFD = 10;
  35.  
  36.     /* Configure PLL0 to 160 MHz. */
  37.     PLLDIG.PLL0DV.B.RFDPHI1 = 4;
  38.     PLLDIG.PLL0DV.B.RFDPHI = 4;
  39.     PLLDIG.PLL0DV.B.PREDIV  = 1;
  40.     PLLDIG.PLL0DV.B.MFD     = 16;
  41.  
  42.     /* switch to PLL */
  43.     MC_ME.DRUN_MC.R = 0x00130072;
  44.     MC_ME.MCTL.R = 0x30005AF0;
  45.     MC_ME.MCTL.R = 0x3000A50F;
  46.     while(MC_ME.GS.B.S_MTRANS == 1);      /* Wait for mode transition complete */
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement