在iROM里面有设置PLL:

本文描述使用uart使用iROM初始化的MPLL来反过来读关键寄存器的值

先看结果:

-----------------------src-------------------------
src_cpu      : 01000001
src_leftbus  : 00000001
src_rightbus : 00000001
src_top0     : 01110000
src_top1     : 00001000
src_peril0   : 00066666
src_peril1   : 01610055
-----------------------div-------------------------
div_cpu0     : 00773730
div_cpu1     : 00000077
div_top      : 00015470
div_peril0   : 00033333
div_peril1   : 09010907
div_peril2   : 00000907
div_peril3   : 000000F0
div_peril4   : 00000000
div_peril5   : 00000000
div_dmc0     : 00111713
div_dmc1     : 01011171
------------------------ctrl------------------------
apll_con0    : A0640301
apll_con1    : 00003800
mpll_con0    : A0640301
mpll_con1    : 00003800

首先,uart的初始化:

void uart_init(void)
{/* 1.设置相应的GPIO用于串口功能 */GPA0CON = 0x22222222;GPA1CON = 0x222222;/* 2.设置UART时钟源SCLK_UART *//* 2.1 CLK_SRC_DMC  : bit[12]即MUX_MPLL_SEL=1, SCLKMPLLL使用MPLL的输出* 2.2 CLK_SRC_TOP1 : bit[12]即MUX_MPLL_USER_SEL_T=1, MUXMPLL使用SCLKMPLLL* 2.3 CLK_SRC_PERIL0 : bit[3:0]即UART0_SEL=6, MOUTUART0使用SCLKMPLL_USER_T* 所以, MOUTUART0即等于MPLL的输出, 800MHz*//**   PWM_SEL = 0;*   UART5_SEL = 0;*   UART4_SEL = 6;      // 串口时钟源选 SCLKMPLL_USER_T*   UART3_SEL = 6;*   UART2_SEL = 6;*   UART1_SEL = 6;*   UART0_SEL = 6;*/CLK_SRC_PERIL0 = ((0 << 24) | (0 << 20) | (6 << 16) | (6 << 12) | (6<< 8) | (6 << 4)    | (6));/** MUX_MPLL_USER_SEL_T = 1*/CLK_SRC_TOP1 |= (0x1 << 12);CLK_DIV_PERIL0 = ((3 << 20) | (3 << 16) | (3 << 12) | (3 << 8) | (3 << 4) | (3));/* 3.设置串口0相关 *//* 设置FIFO中断触发阈值* 使能FIFO*/UFCON0 = 0x111;/* 设置数据格式: 8n1, 即8个数据位,没有较验位,1个停止位 */ULCON0 = 0x3;/* 工作于中断/查询模式* 另一种是DMA模式,本章不使用*/UCON0  = 0x5;/* SCLK_UART0=100MHz, 波特率设置为115200* 寄存器的值如下计算:*    DIV_VAL   = 100,000,000 / (115200 * 16)   - 1 = 53.25*    UBRDIVn0  = 整数部分 = 53*    UFRACVAL0 = 小数部分 x 16 = 0.25 * 16 = 4*/UBRDIV0 = 53;UFRACVAL0 = 4;
}

为了方便实现printf来输出:

void putchar_hex(char c)
{char * hex = "0123456789ABCDEF";putc(hex[(c>>4) & 0x0F]);putc(hex[(c>>0) & 0x0F]);
}void putint_hex(int a)
{putchar_hex( (a>>24) & 0xFF );putchar_hex( (a>>16) & 0xFF );putchar_hex( (a>>8) & 0xFF );putchar_hex( (a>>0) & 0xFF );
}char * itoa(int a, char * buf)
{int num = a;int i = 0;int len = 0;do{buf[i++] = num % 10 + '0';num /= 10;}while (num);buf[i] = '\0';len = i;for (i = 0; i < len/2; i++){char tmp;tmp = buf[i];buf[i] = buf[len-i-1];buf[len-i-1] = tmp;}return buf;
}typedef int * va_list;
#define va_start(ap, A)     (ap = (int *)&(A) + 1)
#define va_arg(ap, T)       (*(T *)ap++)
#define va_end(ap)      ((void)0)int printf(const char * format, ...)
{char c;    va_list ap;va_start(ap, format);while ((c = *format++) != '\0'){switch (c){case '%':c = *format++;switch (c){char ch;char * p;int a;char buf[100];case 'c':ch = va_arg(ap, int);putc(ch);break;case 's':p = va_arg(ap, char *);puts(p);break;                  case 'x':a = va_arg(ap, int);putint_hex(a);break;        case 'd':a = va_arg(ap, int);itoa(a, buf);puts(buf);break;   default:break;}             break;      default:putc(c);break;}}return 0;
}

然后使用u-boot里面时钟相关头文件,

#define EXYNOS4X12_CLOCK_BASE        0x10030000struct exynos4x12_clock {unsigned char    res1[0x4200];unsigned int   src_leftbus;unsigned char   res2[0x1fc];unsigned int    mux_stat_leftbus;unsigned char  res3[0xfc];unsigned int div_leftbus;unsigned char   res4[0xfc];unsigned int div_stat_leftbus;unsigned char  res5[0x1fc];unsigned int    gate_ip_leftbus;unsigned char   res6[0x12c];unsigned int    gate_ip_image;unsigned char res7[0xcc];unsigned int clkout_leftbus;unsigned int clkout_leftbus_div_stat;unsigned char   res8[0x37f8];unsigned int   src_rightbus;unsigned char  res9[0x1fc];unsigned int    mux_stat_rightbus;unsigned char res10[0xfc];unsigned int    div_rightbus;unsigned char  res11[0xfc];unsigned int    div_stat_rightbus;unsigned char res12[0x1fc];unsigned int   gate_ip_rightbus;unsigned char  res13[0x15c];unsigned int   gate_ip_perir;unsigned char res14[0x9c];unsigned int    clkout_rightbus;unsigned int    clkout_rightbus_div_stat;unsigned char  res15[0x3608];unsigned int  epll_lock;unsigned char res16[0xc];unsigned int vpll_lock;unsigned char res17[0xec];unsigned int    epll_con0;unsigned int  epll_con1;unsigned int  epll_con2;unsigned char res18[0x4];unsigned int vpll_con0;unsigned int  vpll_con1;unsigned int  vpll_con2;unsigned char res19[0xe4];unsigned int    src_top0;unsigned int   src_top1;unsigned char  res20[0x8];unsigned int src_cam;unsigned int    src_tv;unsigned int src_mfc;unsigned int    src_g3d;unsigned char   res21[0x4];unsigned int src_lcd;unsigned int    src_isp;unsigned int    src_maudio;unsigned int src_fsys;unsigned char  res22[0xc];unsigned int src_peril0;unsigned int src_peril1;unsigned int src_cam1;unsigned char  res23[0xb4];unsigned int    src_mask_top;unsigned char  res24[0xc];unsigned int src_mask_cam;unsigned int   src_mask_tv;unsigned char   res25[0xc];unsigned int src_mask_lcd;unsigned int   src_mask_isp;unsigned int   src_mask_maudio;unsigned int    src_mask_fsys;unsigned char res26[0xc];unsigned int src_mask_peril0;unsigned int    src_mask_peril1;unsigned char   res27[0xb8];unsigned int    mux_stat_top0;unsigned int  mux_stat_top1;unsigned char res28[0x10];unsigned int    mux_stat_mfc;unsigned int   mux_stat_g3d;unsigned char  res29[0x28];unsigned int    mux_stat_cam1;unsigned char res30[0xb4];unsigned int    div_top;unsigned char   res31[0xc];unsigned int div_cam;unsigned int    div_tv;unsigned int div_mfc;unsigned int    div_g3d;unsigned char   res32[0x4];unsigned int div_lcd;unsigned int    div_isp;unsigned int    div_maudio;unsigned int div_fsys0;unsigned int  div_fsys1;unsigned int  div_fsys2;unsigned int  div_fsys3;unsigned int  div_peril0;unsigned int div_peril1;unsigned int div_peril2;unsigned int div_peril3;unsigned int div_peril4;unsigned int div_peril5;unsigned int div_cam1;unsigned char  res33[0x14];unsigned int    div2_ratio;unsigned char    res34[0x8c];unsigned int    div_stat_top;unsigned char  res35[0xc];unsigned int div_stat_cam;unsigned int   div_stat_tv;unsigned int    div_stat_mfc;unsigned int   div_stat_g3d;unsigned char  res36[0x4];unsigned int div_stat_lcd;unsigned int   div_stat_isp;unsigned int   div_stat_maudio;unsigned int    div_stat_fsys0;unsigned int div_stat_fsys1;unsigned int div_stat_fsys2;unsigned int div_stat_fsys3;unsigned int div_stat_peril0;unsigned int    div_stat_peril1;unsigned int    div_stat_peril2;unsigned int    div_stat_peril3;unsigned int    div_stat_peril4;unsigned int    div_stat_peril5;unsigned int    div_stat_cam1;unsigned char res37[0x14];unsigned int    div2_stat;unsigned char res38[0x29c];unsigned int   gate_ip_cam;unsigned int    gate_ip_tv;unsigned int gate_ip_mfc;unsigned int    gate_ip_g3d;unsigned char   res39[0x4];unsigned int gate_ip_lcd;unsigned int    gate_ip_isp;unsigned char   res40[0x4];unsigned int gate_ip_fsys;unsigned char  res41[0x8];unsigned int gate_ip_gps;unsigned int    gate_ip_peril;unsigned char res42[0xc];unsigned char    res43[0x4];unsigned char    res44[0xc];unsigned int gate_block;unsigned char    res45[0x8c];unsigned int    clkout_cmu_top;unsigned int clkout_cmu_top_div_stat;unsigned char   res46[0x3600];unsigned int  mpll_lock;unsigned char res47[0xfc];unsigned int    mpll_con0;unsigned int  mpll_con1;unsigned char res48[0xf0];unsigned int    src_dmc;unsigned char   res49[0xfc];unsigned int    src_mask_dmc;unsigned char  res50[0xfc];unsigned int    mux_stat_dmc;unsigned char  res51[0xfc];unsigned int    div_dmc0;unsigned int   div_dmc1;unsigned char  res52[0xf8];unsigned int    div_stat_dmc0;unsigned int  div_stat_dmc1;unsigned char res53[0xf8];unsigned int    gate_bus_dmc0;unsigned int  gate_bus_dmc1;unsigned char res54[0x1f8];unsigned int   gate_ip_dmc0;unsigned int   gate_ip_dmc1;unsigned char  res55[0xf8];unsigned int    clkout_cmu_dmc;unsigned int clkout_cmu_dmc_div_stat;unsigned char   res56[0x5f8];unsigned int   dcgidx_map0;unsigned int    dcgidx_map1;unsigned int    dcgidx_map2;unsigned char   res57[0x14];unsigned int    dcgperf_map0;unsigned int   dcgperf_map1;unsigned char  res58[0x18];unsigned int    dvcidx_map;unsigned char    res59[0x1c];unsigned int    freq_cpu;unsigned int   freq_dpm;unsigned char  res60[0x18];unsigned int    dvsemclk_en;unsigned int    maxperf;unsigned char   res61[0x8];unsigned int dmc_freq_ctrl;unsigned int  dmc_pause_ctrl;unsigned int dddrphy_lock_ctrl;unsigned int  c2c_state;unsigned char res62[0x2f60];unsigned int  apll_lock;unsigned char res63[0x8];unsigned char    res64[0xf4];unsigned int    apll_con0;unsigned int  apll_con1;unsigned char res65[0xf8];unsigned int    src_cpu;unsigned char   res66[0x1fc];unsigned int   mux_stat_cpu;unsigned char  res67[0xfc];unsigned int    div_cpu0;unsigned int   div_cpu1;unsigned char  res68[0xf8];unsigned int    div_stat_cpu0;unsigned int  div_stat_cpu1;unsigned char res69[0x2f8];unsigned int   clk_gate_ip_cpu;unsigned char   res70[0xfc];unsigned int    clkout_cmu_cpu;unsigned int clkout_cmu_cpu_div_stat;unsigned char   res71[0x5f8];unsigned int   armclk_stopctrl;unsigned int    atclk_stopctrl;unsigned char    res72[0x10];unsigned char   res73[0x8];unsigned int pwr_ctrl;unsigned int   pwr_ctrl2;unsigned char res74[0xd8];unsigned int    apll_con0_l8;unsigned int   apll_con0_l7;unsigned int   apll_con0_l6;unsigned int   apll_con0_l5;unsigned int   apll_con0_l4;unsigned int   apll_con0_l3;unsigned int   apll_con0_l2;unsigned int   apll_con0_l1;unsigned int   iem_control;unsigned char   res75[0xdc];unsigned int    apll_con1_l8;unsigned int   apll_con1_l7;unsigned int   apll_con1_l6;unsigned int   apll_con1_l5;unsigned int   apll_con1_l4;unsigned int   apll_con1_l3;unsigned int   apll_con1_l2;unsigned int   apll_con1_l1;unsigned char  res76[0xe0];unsigned int    div_iem_l8;unsigned int div_iem_l7;unsigned int div_iem_l6;unsigned int div_iem_l5;unsigned int div_iem_l4;unsigned int div_iem_l3;unsigned int div_iem_l2;unsigned int div_iem_l1;unsigned char    res77[0xe0];unsigned int    l2_status;unsigned char res78[0xc];unsigned int cpu_status;unsigned char    res79[0xc];unsigned int ptm_status;unsigned char    res80[0x2edc];unsigned int  div_isp0;unsigned int   div_isp1;unsigned char  res81[0xf8];unsigned int    div_stat_isp0;unsigned int  div_stat_isp1;unsigned char res82[0x3f8];unsigned int   gate_ip_isp0;unsigned int   gate_ip_isp1;unsigned char  res83[0x1f8];unsigned int   clkout_cmu_isp;unsigned int clkout_cmu_ispd_div_stat;unsigned char  res84[0xf8];unsigned int    cmu_isp_spar0;unsigned int  cmu_isp_spar1;unsigned int  cmu_isp_spar2;unsigned int  cmu_isp_spar3;
};

最后获取重要寄存器值:

void get_clock_init_config(void)
{struct exynos4x12_clock *clk =    (struct exynos4x12_clock *)EXYNOS4X12_CLOCK_BASE;printf("-----------------------src-------------------------\r\n");printf("src_cpu      : %x\r\n", clk->src_cpu);printf("src_leftbus  : %x\r\n", clk->src_leftbus);printf("src_rightbus : %x\r\n", clk->src_rightbus);printf("src_top0     : %x\r\n", clk->src_top0);printf("src_top1     : %x\r\n", clk->src_top1);printf("src_peril0   : %x\r\n", clk->src_peril0);printf("src_peril1   : %x\r\n", clk->src_peril1);printf("-----------------------div-------------------------\r\n");printf("div_cpu0     : %x\r\n", clk->div_cpu0);printf("div_cpu1     : %x\r\n", clk->div_cpu1);printf("div_top      : %x\r\n", clk->div_top);printf("div_peril0   : %x\r\n", clk->div_peril0);printf("div_peril1   : %x\r\n", clk->div_peril1);printf("div_peril2   : %x\r\n", clk->div_peril2);printf("div_peril3   : %x\r\n", clk->div_peril3);printf("div_peril4   : %x\r\n", clk->div_peril4);printf("div_peril5   : %x\r\n", clk->div_peril5);  printf("div_dmc0     : %x\r\n", clk->div_dmc0);printf("div_dmc1     : %x\r\n", clk->div_dmc1);printf("------------------------ctrl------------------------\r\n");printf("apll_con0    : %x\r\n", clk->apll_con0);printf("apll_con1    : %x\r\n", clk->apll_con1);printf("mpll_con0    : %x\r\n", clk->mpll_con0);printf("mpll_con1    : %x\r\n", clk->mpll_con1);return 0;
}

然后可以得到结果:

最后根据官方提供的u-boot看完整的时钟设置:

1. CLK_SRC_CPU = 0wait2.CLK_DIV_DMC0 和 CLK_DIV_DMC1#define CORE_TIMERS_RATIO    0x0#define COPY2_RATIO      0x0#define DMCP_RATIO       0x1#define DMCD_RATIO       0x1#define DMC_RATIO        0x3#define DPHY_RATIO       0x1#define ACP_PCLK_RATIO       0x1#define ACP_RATIO        0x3#define CLK_DIV_DMC0_VAL ((CORE_TIMERS_RATIO << 28) \| (COPY2_RATIO << 24) \| (DMCP_RATIO << 20)   \| (DMCD_RATIO << 16) \| (DMC_RATIO << 12)  \| (DPHY_RATIO << 8)  \| (ACP_PCLK_RATIO << 4)  \| (ACP_RATIO))#define CLK_DIV_DMC1_VAL 0x07071713@CLK_DIV_DMC0 = CLK_DIV_DMC0_VAL@CLK_DIV_DMC1_OFFSET = CLK_DIV_DMC1_VAL3. CLK_SRC_TOP0 和 CLK_SRC_TOP1/* CLK_SRC_TOP0  */#define MUX_ONENAND_SEL 0x0 /* 0 = DOUT133, 1 = DOUT166     */#define MUX_ACLK_133_SEL  0x0 /* 0 = SCLKMPLL, 1 = SCLKAPLL */#define MUX_ACLK_160_SEL  0x0#define MUX_ACLK_100_SEL 0x0#define MUX_ACLK_200_SEL 0x0#define MUX_VPLL_SEL 0x1#define MUX_EPLL_SEL 0x1#define CLK_SRC_TOP0_VAL ((MUX_ONENAND_SEL << 28)  \| (MUX_ACLK_133_SEL << 24)   \| (MUX_ACLK_160_SEL << 20)   \| (MUX_ACLK_100_SEL << 16)   \| (MUX_ACLK_200_SEL << 12)   \| (MUX_VPLL_SEL << 8)    \| (MUX_EPLL_SEL << 4))#define CLK_SRC_TOP1_VAL   (0x01111000)@CLK_SRC_TOP0 = CLK_SRC_TOP0_VAL@CLK_SRC_TOP1 = CLK_SRC_TOP1_VALwait4.CLK_DIV_TOP/* CLK_DIV_TOP *//* CLK_DIV_TOP    */#define ACLK_400_MCUISP_RATIO 0x1#define ACLK_266_GPS_RATIO   0x2#define ONENAND_RATIO    0x1#define ACLK_133_RATIO   0x5#define ACLK_160_RATIO   0x4#define ACLK_100_RATIO   0x7#define ACLK_200_RATIO   0x4#define CLK_DIV_TOP_VAL  ((ACLK_400_MCUISP_RATIO << 24) \| (ACLK_266_GPS_RATIO << 20) \| (ONENAND_RATIO << 16) \| (ACLK_133_RATIO << 12) \| (ACLK_160_RATIO << 8)  \| (ACLK_100_RATIO << 4)  \| (ACLK_200_RATIO))@CLK_DIV_TOP = CLK_DIV_TOP_VAL5. CLK_SRC_LEFTBUS/* CLK_SRC_LEFTBUS    */#define CLK_SRC_LEFTBUS_VAL   (0x10)@CLK_SRC_LEFTBUS = CLK_SRC_LEFTBUS_VALwait6. CLK_DIV_LEFTBUS/* CLK_DIV_LEFRBUS  */#define GPL_RATIO 0x1#define GDL_RATIO    0x3#define CLK_DIV_LEFRBUS_VAL  ((GPL_RATIO << 4) \| (GDL_RATIO))@CLK_DIV_LEFTBUS = CLK_DIV_LEFRBUS_VAL7.CLK_SRC_RIGHTBUS/* CLK_SRC_RIGHTBUS    */#define CLK_SRC_RIGHTBUS_VAL  (0x10)@CLK_SRC_RIGHTBUS = CLK_SRC_RIGHTBUS_VALwait8.CLK_DIV_RIGHTBUS/* CLK_DIV_RIGHTBUS   */#define GPR_RATIO 0x1#define GDR_RATIO    0x3#define CLK_DIV_RIGHTBUS_VAL ((GPR_RATIO << 4) \| (GDR_RATIO))@CLK_DIV_RIGHTBUS = CLK_DIV_RIGHTBUS_VAL9.Set PLL locktime#define APLL_PDIV    0x3#define MPLL_PDIV    0x3#define EPLL_PDIV    0x2#define VPLL_PDIV    0x2/* APLL_LOCK */#define APLL_LOCK_VAL (APLL_PDIV * 270)/* MPLL_LOCK   */#define MPLL_LOCK_VAL (MPLL_PDIV * 270)/* EPLL_LOCK   */#define EPLL_LOCK_VAL (EPLL_PDIV * 3000)/* VPLL_LOCK  */#define VPLL_LOCK_VAL (VPLL_PDIV * 3000)    @APLL_LOCK = APLL_LOCK_VAL@MPLL_LOCK = MPLL_LOCK_VAL@EPLL_LOCK = EPLL_LOCK_VAL@VPLL_LOCK = VPLL_LOCK_VAL9. CLK_DIV_CPU0和CLK_DIV_CPU1/* CLK_DIV_CPU1   */#define CORES_RATIO   0x5#define HPM_RATIO    0x0#define COPY_RATIO   0x6#define APLL_RATIO   0x2#define CORE_RATIO   0x0#define CORE2_RATIO  0x0#define COREM0_RATIO 0x3#define COREM1_RATIO 0x7#define PERIPH_RATIO 0x7#define ATB_RATIO    0x6#define PCLK_DBG_RATIO   0x1#define CLK_DIV_CPU0_VAL        ((CORE2_RATIO << 28)    \| (APLL_RATIO << 24)    \| (PCLK_DBG_RATIO << 20)\| (ATB_RATIO << 16)     \| (PERIPH_RATIO <<12)   \| (COREM1_RATIO << 8)   \| (COREM0_RATIO << 4)   \| (CORE_RATIO))#define CLK_DIV_CPU1_VAL ((CORES_RATIO << 8) \|  (HPM_RATIO << 4) \| (COPY_RATIO))@CLK_DIV_CPU0_OFFSET = CLK_DIV_CPU0_VAL@CLK_DIV_CPU1_OFFSET = CLK_DIV_CPU1_VAL10.Set APLL#define APLL_CON1_VAL (0x00803800)/* Set PLL */#define set_pll(mdiv, pdiv, sdiv)  (1<<31 | mdiv<<16 | pdiv<<8 | sdiv)#define APLL_MDIV  0xAF#define APLL_PDIV   0x3#define APLL_SDIV    0x0#define APLL_CON0_VAL    set_pll(APLL_MDIV,APLL_PDIV,APLL_SDIV)@APLL_CON1_OFFSET = APLL_CON1_VAL@APLL_CON0_OFFSET = APLL_CON0_VAL11.check MPLL and if MPLL is not 400 Mhz skip MPLL resetting for C2C operation@MPLL_CON0 == 0xA0640301 ???不等就跳过MPLL设置,相等就设置MPLL12.设置MPLL#define MPLL_CON1_VAL (0x00803800)#define MPLL_MDIV  0x64     // CONFIG_CLK_BUS_DMC_100_200#define MPLL_PDIV 0x3#define MPLL_SDIV    0x0#define MPLL_CON0_VAL    set_pll(MPLL_MDIV,MPLL_PDIV,MPLL_SDIV)@MPLL_CON1 = MPLL_CON1_VAL@MPLL_CON0 = MPLL_CON0_VAL13 设置EPLL#define EPLL_CON2_VAL    0x00000080#define EPLL_CON1_VAL 0x66010000#define EPLL_MDIV 0x40#define EPLL_PDIV   0x2#define EPLL_SDIV    0x3#define EPLL_CON0_VAL    set_pll(EPLL_MDIV,EPLL_PDIV,EPLL_SDIV)@EPLL_CON2_OFFSET =  EPLL_CON2_VAL@EPLL_CON1_OFFSET = EPLL_CON1_VAL@EPLL_CON0_OFFSET = EPLL_CON0_VAL14.设置VPLL#define VPLL_CON1_VAL  0x66010000#define VPLL_CON2_VAL 0x00000080#define VPLL_MDIV 0x48#define VPLL_PDIV   0x2#define VPLL_SDIV    0x3#define VPLL_CON0_VAL    set_pll(VPLL_MDIV,VPLL_PDIV,VPLL_SDIV)@VPLL_CON2_OFFSET = VPLL_CON2_VAL@VPLL_CON1_OFFSET = VPLL_CON1_VAL@VPLL_CON0_OFFSET = VPLL_CON0_VALwait15.其他//((1<<24) | 1) MUX_MPLL_USER_SEL_C | MUX_APLL_SEL@CLK_SRC_CPU_OFFSET = 0x01000001 //((1<<16)|(1<<12))  MUX_PWI_SEL = XusbXTI, MUX_MPLL_SEL=MOUTMPLLFOUT@CLK_SRC_DMC_OFFSET = 0x00011000 //((1<<8)|(1<<4))  MUX_VPLL_SEL=FOUTVPLL, MUX_EPLL_SEL=FOUTEPLL@CLK_SRC_TOP0_OFFSET = 0x00000110/** ((1<<24)|(1<<20)|(1<<16)|(1<<12)) * MUX_ACLK_400_MCUISP_SUB_SEL = DIVOUT_ACLK_400_MCUISP * MUX_ACLK_200_SUB_SEL=DIVOUT_ACLK_200* MUX_ACLK_266_GPS_SUB_SEL=DIVOUT_ACLK_266_GPS* MUX_MPLL_USER_SEL_T=SCLKMPLLL*/ @CLK_SRC_TOP1_OFFSET = 0x01111000wait

tiny4412 基础(五)时钟体系(续)相关推荐

  1. 【嵌入式开发】时钟初始化 ( 时钟相关概念 | 嵌入式时钟体系 | Lock Time | 分频参数设置 | CPU 异步模式设置 | APLL MPLL 时钟频率设置 )

    文章目录 一. 时钟相关概念解析 1. 相关概念术语 ( 1 ) 时钟脉冲信号 ( 概念 : 电压幅度 时间间隔 形成脉冲 | 作用 : 时序逻辑基础 间隔固定 根据脉冲数量可计算出时间 ) ( 2 ...

  2. S3C2440时钟体系 - SOC裸机

    前面章节内容针对ARM内核和ARM内核汇编完成了ARM处理器最基础内容的学习,从本章开始我们针对集合ARM内核的SOC片上系统展开学习.片上系统设计的主要是针对各种外界硬件设备的驱动开发工作,关于这部 ...

  3. 《FPGA设计实战演练》学习笔记(一)FPGA板级基础五要素电路介绍及注意事项(最小系统)

    目录 基础五要素(类似最小系统板) 电源电路 核心电压 I/O电压 辅助电压 常见的供电方案 GND的注意事项 时钟电路 复位电路 配置电路 外设电路 学习书籍:FPGA设计实战演练 逻辑篇吴厚航 编 ...

  4. IOS开发基础之时钟的实现

    IOS开发基础之时钟的实现 源码在我的主页资源下. // // ViewController.m // 29-时钟练习 // // Created by 鲁军 on 2021/2/21. //#imp ...

  5. Bootstrap 基础五表格

    原文:Bootstrap <基础五>表格 Bootstrap 提供了一个清晰的创建表格的布局.下表列出了 Bootstrap 支持的一些表格元素: 标签 描述 <table> ...

  6. 韦东山ARM第一期作业(一)ARM时钟体系

    文章目录 01 - 作业所在路径 02 - 作业描述 03 - 作业解答 01 - 作业所在路径   ARM裸机1期加强版\源码文档图片\文档图片\第010课_掌握ARM芯片时钟体系 02 - 作业描 ...

  7. Django基础五之Django模型层(二)多表操作

    Django基础五之Django模型层(二)多表操作 一 创建模型 表和表之间的关系 一对一.多对一.多对多 # 作者表 比较常用的信息放在这个表中 class Author(models.Model ...

  8. arm linux 时钟源 信息,Linux学习——ARM芯片时钟体系

    跟着视频学习了ARM芯片时钟体系,信息量有点大,做个笔记梳理梳理. 1.时钟体系的结构图 有很多外设,一些工作在AHB总线,一些工作在APB总线 CPU工作在FCLK,AHB总线工作在HCLK,APB ...

  9. 数字电路基础知识|时钟和时序

    时钟的概念 时钟对数字电路而言非常重要,没有时钟数字电路就没法工作,其全称是时钟频率,一般由晶振来提供时钟频率. 在数字电路中,所有数据.逻辑单元等状态的更新都是以时钟为基础的,时钟频率在数字电路中起 ...

  10. s3c6410时钟体系

    S3C6410时钟体系 S3C6410可以使用外部晶振( XXTIpll )(默认为12MHZ)和外部时钟( XEXTCLK )两种方式输入时钟信号.它由跳线OM[0]决定.S3C6410 默认的工作 ...

最新文章

  1. 在 Java 中如何优雅地判空
  2. 【Linux系统编程】进程同步与互斥:POSIX有名信号量
  3. 平面设计师友好的免抠PNG图片素材
  4. 阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_06.入门案例的流程总结
  5. javplayer 使用教程_Revit形状编辑操作大全(文末附39套BIM软件自学教程)
  6. word标题序号变为黑色方块解决方案
  7. SAR影像辐射定标工程化实现之COSMO-Skymod
  8. python中根据视频帧生成视频,保存为mp4格式
  9. mysql视图唯一id_Mysql的视图、存储过程、函数、索引全解析
  10. winform界面渐变色绘制
  11. VMware workstation Pro 15注册码
  12. 红酒类小程序APP开发源码交付
  13. iOS13.7 各机型续航对比测试,更省电了吗?
  14. 将输入值为非数字的字符替换为空
  15. 计算机专业技能比赛方案,计网系第二届计算机技能比赛方案
  16. 免费领取地图下载流量与流量使用方法
  17. VB语音对接验证码短信接口DEMO示例
  18. 程序员分分钟就能把代码和文艺完美结合
  19. matlab中识别过程训练,人脸识别PCA算法matlab实现及详细步骤讲解
  20. 评估默认EEG宏状态及其对刺激反应的方法

热门文章

  1. 微信支付退款解析 对加密串B做AES-256-ECB解密(PKCS7Padding)
  2. 企业安全之内部代码管理平台Gitlab下载及权限审计
  3. [Android]关于aidl
  4. 今日份的要自律日记2
  5. [SSD核心技术:FTL 9] 谁是固态硬盘数据的守护神?盘内RAID1/RAID5图文详解_盘内数据冗余保护
  6. 【JLOI】02金猪贺岁-贪心策略
  7. word打开慢的解决办法
  8. 电脑快捷键~实用大全
  9. 英语作文高分万能句子
  10. 关于fi dd ler 手机抓包 网卡地址地址_面试官:你给我讲讲抓包神器tcpdump的原理...