飞凌OK6410之时钟的学习

关于OK6410的时钟部分,从s3c6410的手册上面我们可以在system controller里面找到相关的系统控制器:


Power表示上电,待上电稳定后,12M晶振起振后也稳定下来,接着CPU就能获得一个比较稳定的时钟频率(12M)如果想要改变晶振的频率,我们就给他一个locktime,在locktime内,VCO就能够通过倍频处理将主频提高,locktime结束后,CPU就能在新的频率下面进行工作了

         下面可以进行设置locktime了

我们就设置为默认值

设置指令如下:

         /*1.设置LOCK_TIME */

         ldrr0, =0x7E00F000         /* APLL_LOCK */

         ldrr1, =0x0000FFFF

         strr1, [r0]

        

         strr1, [r0, #4]                 /* MPLL_LOCK */

         strr1, [r0, #8]                   /* EPLL_LOCK */   

 

 

 

 

 

 

从下图我们就可以看到具体哪个时钟是给哪些设备提供的

具体时钟对应的外设设备关系如下

紧接着我们需要设置时钟模式,当CPU工作时钟和内存的时钟不一样的时候,需要把CPU 的时钟模式设为异步模式设置指令 如下

#define OTHERS                0x7e00f900

@ set async mode  /* 当CPU时钟 != HCLK时,要设为异步模式 */

         ldrr0, =OTHERS

         ldrr1, [r0]

         bicr1, #0xc0                      

         strr1, [r0]

本人的理解是,因为s3c6410的手册上写明这个

默认就是0x00,所以不需要设置也行,待我检验之后再更改。

循环延时等待CPU进入异步模式

loop1:                                   /* 等待,直到CPU进入异步模式 */

         ldrr0, =OTHERS

         ldrr1, [r0]

         andr1, #0xf00                                     

         cmpr1, #0

         bneloop1         

接下来就可以设置分频了:

/* SYNC667 */

         /*MISC_CON[19] = 0 */

 

#define ARM_RATIO    0  /* ARMCLK = DOUTAPLL / (ARM_RATIO + 1)   */

#define HCLKX2_RATIO 1   /* HCLKX2 = HCLKX2IN / (HCLKX2_RATIO + 1) */

#define HCLK_RATIO   1   /*HCLK = HCLKX2 / (HCLK_RATIO + 1)       */

#define PCLK_RATIO   3   /*PCLK   = HCLKX2 / (PCLK_RATIO + 1)     */

#define MPLL_RATIO   0   /*DOUTMPLL = MOUTMPLL / (MPLL_RATIO + 1)    */

         ldrr0, =0x7E00F020  /* CLK_DIV0 */

         ldrr1, =(ARM_RATIO) | (MPLL_RATIO << 4) | (HCLK_RATIO << 8) |(HCLKX2_RATIO << 9) | (PCLK_RATIO << 12)

         strr1, [r0]

下面是配置时钟,配置结果为APLL和MPLL都为532M

         /*2.配置时钟 */

         /*2.1 配置APLL */

         /*2.1.1 设置APLL

          * 2.1.2 MUXAPLL

          * 2.1.3 SYNC667

          * 2.1.4 DIVAPLL

          */

#define APLL_CON_VAL  ((1<<31) | (266 << 16) | (3<< 8) | (1))

         ldrr0, =0x7E00F00C

         ldrr1, =APLL_CON_VAL

         strr1, [r0]                  /* APLL_CON,FOUTAPL = MDIV * Fin / (PDIV*2^SDIV) = 266*12/(3*2^1) = 532MHz  */

        

         /*2.2 配置MPLL */

         /*2.2.1 设置MPLL

          * 2.2.2 MUXMPLL

          * 2.2.3 SYNCMUX

          * 2.2.4 SYNC667

          * 2.2.5HCLKX2_RATIO

          * 2.2.6 PCLK_RATIO

          */

#define MPLL_CON_VAL  ((1<<31) | (266 << 16) | (3<< 8) | (1))

         ldrr0, =0x7E00F010

         ldrr1, =MPLL_CON_VAL

         strr1, [r0]                  /* MPLL_CON,FOUTMPL = MDIV * Fin / (PDIV*2^SDIV) = 266*12/(3*2^1) = 532MHz  */

         最后这里低两位为1表示选择PLL,如果是0的话表示选择外部晶振时钟作为时钟源,这也就是为什么不需要初始化时钟,我们也可以进行点灯程序的原因(默认工作在12M下面)

         /*3.选择PLL的输出作为时钟源 */

         ldrr0, =0x7E00F01C

         ldrr1, =0x03

         strr1, [r0]

        

         movpc, lr                   程序调用返回指令


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
飞凌是一种网络时间协议,被广泛用于网络设备的时间同步。其中的ok3568指的是设备的型号,而ptp(Precision Time Protocol)则是飞凌ok3568所使用的授时协议。 飞凌ok3568 ptp授时是一种高精度的时间同步技术,能够将各个网络设备的时钟进行同步,确保网络中的所有设备具有相同的时间参考。这在需要准确时间戳的应用场景中非常重要,例如金融交易、电力系统同步、工业自动化等。 飞凌ok3568是一种高可靠性的设备,它采用了精密的时钟同步算法,能够在微秒级的误差范围内进行时间同步。它通过精确的计算和校正,不仅可以补偿网络传输延迟和设备内部时钟漂移,还可以应对复杂的网络环境和干扰。 飞凌ok3568 ptp授时的工作原理是基于主从结构,其中一个设备充当主时钟,其他设备则作为从属时钟。主时钟通过向从属时钟发送同步消息,告知它们当前时间,从属时钟收到同步消息后进行时间校正,确保与主时钟保持同步。 飞凌ok3568 ptp授时的优点在于精度高、稳定性好、可靠性高,能够满足各种要求严格的应用场景。它可以确保网络中的所有设备具有一致的时间,避免了数据误差和不一致性带来的问题,提高了系统的可靠性和性能。 总之,飞凌ok3568 ptp授时是一种高精度、可靠性高的时间同步技术,适用于各种要求严格的应用场景。它可以确保网络中的所有设备具有相同的时间参考,提高系统的可靠性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值