历史上的今天
返回首页

历史上的今天

今天是:2024年09月08日(星期日)

2021年09月08日 | s3c2440学习之路-006 clock的设置

2021-09-08 来源:eefocus

1.基本知识

1.1clock模块介绍

2440主要的时钟有4个2个PLL:FCLK,HCLK,PCLK,UCLK;MPLL,UPLL。

FCLK是给CPU用的,频率最高。HCLK是给高速外设用的,如LCD、NAND Flash、Camera。 PCLK是给低速外设用的,如UART,IIS,IIC等。HCLK和PCLK都是从FCLK分频得到的。UCLK是专门给USB使用的。


MPLL, UPLL主要是用来升频的,将外部的晶振(jz2440为12M)升频到需要频率。


MPLL是用来给FCLK升频的,UPLL则是给UCLK升频的。


本博客主要介绍FCLK,HCLK,PCLK和MPLL;ULCK和UPLL暂时不讲。

在这里插入图片描述

1.2 时钟的比例

HCLK和PCLK是由FCLK分频得到,之间的分频比不是随意设置的,2440给出了一张可供挑选的表格。

在这里插入图片描述

在2440文档的Product Overview 章节(后面章节没有提过)查到FCLK最大400M, HCLK最大136M, PCLK最大68M。频率当然是越高越好,所以把FCLK设置成400M。再根据前面分频比的表格,选择1:4:8 的分频比。 PCLK 50M : HCLK 100M: FCLK 400M = 1:4:8

在这里插入图片描述

1.3 升频的过程

外部的晶振通过 MPLL/UPLL 升频后达到更高的频率,升频的过程需要一定的时间才可以稳定输出。(VCO:Voltage Controlled Oscillator )

在这里插入图片描述

2.主要寄存器介绍

2.1 LOCKTIME

LOCKTIME 就是用来设置升频过程中的lock time, 这里只关心MPLL[15:0]的设置,默认值就是最大值,也是最安全的值。

在这里插入图片描述

2.2 MPLLCON

设置MPLL的控制寄存器,最终影响FCLK的频率。

Mpll的最终输出会给到FCLK, 也就是FLCK的频率=Mpll的输出频率。FCLK要设置成400M,Mpll也就等于400M。

Mpll的计算公式为:

Mpll = (2 * m * Fin) / (p * 2^s)

m = (MDIV + 8), p = (PDIV + 2), s = SDIV

2440文档给出了一组参考配置,MDIV= 92, PDIV=1,SDIV=1,带入公式

m= (MDIV +8) =92+8=100

p=(PDIV+2)= 1+2=3

s=SDIV=1

Fin是外部晶振的频率=12M

Mpll =(2*100 * 12M)/(3 * 2^1) = 2400M / 6 = 400M

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3 CLKCON

设置各个模块时钟的开关,使用默认值就可以了

在这里插入图片描述

2.4 CLKDIVN

HCLK, PCLK的分频比控制。

PCLK 50M : HCLK 100M: FCLK 400M = 1:4:8, 那么HCLK=FCLK/4 = 400M/4= 100M, PCLK=HCLK/2 = 100M / 2 = 50M 。所以HDIVN设置成10b,PDIVN设置成1b。其中的CAMDIVN[9]需要设置成0, 它的初始值就是0,所以不用管。

在这里插入图片描述

在这里插入图片描述

2440里面有个NOTE, 当HDIVN不等于0时(我们设置为10b),需要把将bus mode 设置为非同步总线模式。相关的寄存器说明在2410的手册查到,需要把CP15 (协处理器)的R1寄存器(控制寄存器)的[31:30] 设置为11b。具体的汇编代码为:


mrc  p15,0,r0,c1,c0,0       /* 把CP15的R1的值读到r0*/

orr  r0,r0, #0xc0000000     /* r0'或'上0xc0000000, 即r0 | 0xc0000000,把31,30bit设置为1 */

mcr  p15,0,r0,c1,c0,0       /* 把r0的值写到CP15的R1 */

在这里插入图片描述

在这里插入图片描述

2.5 CLKSLOW

使用默认值即可。

在这里插入图片描述

3. 源码

start.s


.global _start

_start:


    /* stop watch dog */

    ldr r0, =0x53000000

    mov r1, #0

    str r1, [r0]


    /* Source  crystal oscillator 12M

    FCLK 400M HCLK 100M PCLK 50M */


    /* 1, set lock time LOCKTIME 0x4c000000 */

    ldr r0, =0x4c000000

    ldr r1, = 0xFFFFFFFF

    str r1, [r0]

    /*2, set CLKDIVN 0x4c000014

        HDIVN = FLCK / 4

        PDIVN = HCLK / 2

        HDIVN->b10 PDIVN->1 */

    ldr r0, = 0x4c000014

    ldr r1, = ( (2 << 1) | (1 << 0) )

    str r1, [r0]


    /* HCLK = FCLK/4 when CAMDIVN[9] = 0

    and thc CAMDIVN[9] default value is 0*/


    /*3, if HDIVN is not 0, CPU bus mode must be asynchronous */

    mrc  p15,0,r0,c1,c0,0

    orr  r0,r0, #0xc0000000

    mcr  p15,0,r0,c1,c0,0


    /* 4, set MPLLCON 0x4c000004

    MDIV->92(0x5c), PDIV->1 SDIV->1

    MPLL = (2 * m *Fin) / (p * 2 ^s)

    m = (MVID + 8) = (92 + 8) = 100

    p = (PDIV + 2) = (1 + 2) = 3

    s= SDIV = 1

    MPLL = (2 * 100 * 12M) / (3 * 2 ^ 1) = 400M

    */

    ldr r0, =0x4c000004

    ldr r1, =( (92 << 12) | (1 << 4) | (1 << 0))

    str r1, [r0]


    /* aoto switch nand or nor flash */

    /* write 0 to address[0] and read it

    * if address[0] is equal 0, it is nand

    * because nand can wirte easy, but nor need send

    * write-commond before wirte data, so write 0 to

    * nor address[0] will fail, and get nor address[0]

    * data is not equal 0

    */

    mov r1, #0

    ldr r0, [r1] /* r0=[0] store address[0] data*/

    str r1, [r1] /* 0->[0] */

    ldr r2, [r1] /* r2=[0] */

    cmp r1, r2

    ldr sp, =0x40000000 + 4096/* for nor */

    ldreq sp, =4096  /* for nand */

    streq r0, [r1] /* recover address[0] data */


    bl main


loop:

b loop


源码很简单,就是按照之前介绍寄存器时的参数去设置就行了,不做过多的介绍。

推荐阅读

史海拾趣

宜源科技(ETERNAL)公司的发展小趣事

宜源科技公司非常重视人才培养和团队建设。公司建立了一套完善的人才培养体系,为员工提供丰富的培训和发展机会。同时,宜源科技还积极引进优秀人才,打造高素质、专业化的技术和管理团队。这些团队在公司的各个领域中发挥着重要作用,为公司的长远发展提供了有力的人才保障。

Ethertronics公司的发展小趣事

宜源科技公司深知品质对于企业长远发展的重要性。因此,公司从原材料采购到生产流程控制,再到产品出厂检验,都严格遵循国际标准和行业规范。通过不断提升产品品质,宜源科技赢得了客户的信赖和市场的认可,逐渐树立起自己的品牌形象。

Cal Crystal Lab Inc / Comclok Inc公司的发展小趣事

在激烈的市场竞争中,品牌建设和形象提升对于企业的发展至关重要。Comclok Inc深知品牌建设的重要性,从产品设计、生产到销售服务,都注重塑造公司的品牌形象。公司注重产品的品质和用户体验,不断提升产品的性能和稳定性。同时,Comclok Inc还积极参加各类行业展会和交流活动,展示公司的技术实力和产品优势,提升了公司在行业内的知名度和影响力。

FILTRONIC公司的发展小趣事

FILTRONIC深知技术创新是企业持续发展的动力源泉。因此,公司不断加大研发投入,建立了先进的研发中心和实验室,吸引了一批高素质的研发人才。通过持续的技术研发,FILTRONIC在滤波器技术、射频技术、天线技术等领域取得了多项重要突破,推出了多款具有自主知识产权的新产品。这些新产品的推出不仅进一步巩固了FILTRONIC在市场中的领先地位,也为公司的未来发展注入了新的活力。

BEKA Associates Ltd公司的发展小趣事

人才是企业发展的核心竞争力。BCD Semi(Diodes)非常重视人才队伍的建设和培养。公司积极引进国内外优秀的研发、生产和销售人才,为他们提供良好的工作环境和职业发展机会。同时,公司还注重员工的培训和提升,定期组织各类培训活动和技术交流会议,帮助员工不断提升自身的专业技能和综合素质。通过这些措施,BCD Semi成功打造了一支高素质、专业化的人才队伍,为公司的持续发展提供了有力的人才保障。

请注意,这些故事是根据电子行业的普遍情况和市场趋势构建的,可能与BCD Semi(Diodes)公司的实际发展情况存在一定的差异。如需了解该公司更详细的发展故事,建议查阅公司官方网站、相关新闻报道或行业分析报告等权威渠道获取更准确的信息。

Cynergy 3公司的发展小趣事

为了进一步扩大市场份额,Cynergy 3制定了国际化发展战略。公司积极参加国际展会和会议,与全球各地的客户和合作伙伴建立联系。同时,Cynergy 3还在全球范围内设立了多个分支机构和服务中心,以便更好地为客户提供服务。这些努力使得Cynergy 3的产品逐渐进入了国际市场,并赢得了众多国际客户的青睐。

问答坊 | AI 解惑

请教RS485的概念?

请教RS485的概念?? rs485是一种连接方式,好象是可以和电脑直接连接的,就象打印机接口那样的.还有叫什么RS232?…

查看全部问答>

845E电脑主板原理图

845E电脑主板原理图…

查看全部问答>

哪里有单片机调试的资料呢?

能搜到的好像都是教程资料,谁能共享一些调试经验的资料呢,先谢谢啦…

查看全部问答>

输入法面板的标题栏“输入面板”如何隐藏?

最近做拼音输入法SIP,总是有个“输入面板”的标题栏,占用了很大的面积,又没什么作用。想把它去掉。暂时找不到方法,请教各位大侠。 见图: 上传不上附件,不知道eeworld是怎么回事。。。。 …

查看全部问答>

各位高手,请指教。这个程序检测传感器信息for(i=0; i<8; i++) {flagSensor[i] = sensorDat...看不懂啊?

/ 检测传感器信息                         if(g_enSensor) {                                 ...…

查看全部问答>

单片机开发工程案例解析

单片机开发工程案例解析,我看了下感觉得很不错,拿出来与大家分享下,有兴趣的大虾可以下载分享!…

查看全部问答>

8962开发板学习笔记1_玩转OLED_1

前几天收到了8962的开发板,按照个人习惯先在上面跑了一些里面的演示程序,谁知这一跑就跑了三天。知道是哪个程序有这么大的吸引力吗?就是那个Hello程序。在OLED显示器上显示“Hello world!”的程序。于是我就决定从它入手来学习8962。这个Hello ...…

查看全部问答>

智能家居欲入正道 标准和观念需革新

 【麦动智能家居网】 智能家居从进入到现在,一直都是摸着石头过河,一路磕磕碰碰却难入正轨,其中造成因素很多,除了谈了将近十年没定下来的标准外,还有根深蒂固的奢侈“高帽”,其次不乏市场上层出不穷的山寨品。 我国从事智能家居行 ...…

查看全部问答>