天嵌 ARM开发社区

 找回密码
 注册
查看: 4886|回复: 5

2440lib.c的一个错误函数ChangeClockDivider()

[复制链接]
luowei3 发表于 2012-10-21 12:23:11 | 显示全部楼层 |阅读模式
先贴上那个函数:
void ChangeClockDivider(int hdivn,int pdivn)
{
     // hdivn,pdivn FCLK:HCLK:PCLK
     //     0,0         1:1:1
     //     0,1         1:1:2
     //     1,0         1:2:2
     //     1,1         1:2:4
     //     2,0         1:4:4
     //     2,1         1:4:8
     //     3,0         1:3:3
     //     3,1         1:3:6
    rCLKDIVN = (hdivn<<1) | pdivn;   

        if (hdivn == 2)
                rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<9);                       
        if (hdivn == 3)
                rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<8);
}
就以ChangeClockDivider(2, 1)为例,按照函数说明,调用ChangeClockDivider(2, 1)后,分频比应该为
1:4:8。执行 rCLKDIVN = (hdivn<<1) | pdivn 后, HDIVN = 10, PDIVN = 1,然后执行第一个if语句
rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<9),此时HCLK4_HALF = 1, HCLK3_HALF = 0,但按照数据手册当 HDIVN = 10, PDIVN = 1,HCLK4_HALF = 1, HCLK3_HALF = 0时,分频比应该为1:8:16。。。。。。。
不知道我分析的对不对,还是有些东西我没考虑进去,真的很郁闷,自己写了个配置分频比的函数,设置成1:4:8,总是达不到预期效果,望各位指点指点啊啊啊啊啊啊啊啊,谢过了
embedsky_lhh 发表于 2012-10-22 10:39:05 | 显示全部楼层
你要考虑HCLK,PCLK在MPLL分频时你没考虑进去,你可以看下PLLCON寄存器,和CLKSLOW怎么配置的,这系统时钟,楼主如果没搞清里边的源,建议不要随便改,很多控制器都用同一时钟源,一改动就很多控制器的分频都要变动的     
 楼主| luowei3 发表于 2012-10-23 11:36:07 | 显示全部楼层
本帖最后由 luowei3 于 2012-10-23 11:40 编辑
embedsky_lhh 发表于 2012-10-22 10:39
你要考虑HCLK,PCLK在MPLL分频时你没考虑进去,你可以看下PLLCON寄存器,和CLKSLOW怎么配置的,这系统时钟, ...


额,斑竹,我首先调用SetSysFclk(FCLK_400M)将系统时钟设为400M,然后调用ChangeClockDivider(2, 1),按照注释是将 FCLK:HCLK:PCLK设为1:4:8,关键是这个比率,调用ChangeClockDivider(2, 1)后,HDIVN = 10, PDIVN = 1,HCLK4_HALF = 1, HCLK3_HALF = 0,查数据手册,比率应该是1:8:16。如果要设置成1:4:8,应该把        
               if (hdivn == 2)
                       rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<9);
改成        if (hdivn == 2)
                       rCAMDIVN = (rCAMDIVN & ~(3<<8)) & ~(1<<9);
这时,HDIVN = 10, PDIVN = 1,HCLK4_HALF = 0, HCLK3_HALF = 0,正好是1:4:8;
麻烦斑竹点拨下,真的想不通那个函数,谢过谢过
 楼主| luowei3 发表于 2012-10-23 11:42:09 | 显示全部楼层
本帖最后由 luowei3 于 2012-10-23 11:45 编辑

附上比率表

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
embedsky_lhh 发表于 2012-10-23 16:14:19 | 显示全部楼层
luowei3 发表于 2012-10-23 11:42
附上比率表

你说的没错,你如果系统时钟PLLCON这些你都设置好了,你还没有达到预期的效果应该是你程序其他地方出问题了,与这个地方关系,
 楼主| luowei3 发表于 2012-10-24 12:55:30 | 显示全部楼层
embedsky_lhh 发表于 2012-10-23 16:14
你说的没错,你如果系统时钟PLLCON这些你都设置好了,你还没有达到预期的效果应该是你程序其他地方出问题 ...

额,我再看看,多谢斑竹了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-6 14:10 , Processed in 1.078125 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表