历史上的今天
返回首页

历史上的今天

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

2021年09月16日 | TQ2440开发板学习纪实(3)--- 设置时钟频率,让CPU运行的更快

2021-09-16 来源:eefocus

0 原理

0.1 时钟源自哪里

所谓的时钟,就是电压高低的变化,只有不断的0,1交替变化,CPU才能被驱动运行。S3C2440支持多种时钟源,这通过CPU针脚OM3和OM3来选择。对于QT2440板子来说,OM3和OM2均直接接地,这就意味着时钟源来自针脚XTIpll和XTOpll,这两个针脚在TQ2440的核心板上被连接上了一个12MHz的晶振。


0.2 S3C2440的时钟原理与设置

CPU、RAM、UART等不同的设备运行时需要不同的时钟频率,这些不同的频率需要通过变频电路来提供,在电子行业这个变频电路叫做PLL(Phase Locked Loop)。作为软件出身的程序员,不太可能精通电路设计,只需要知道这个PLL可以把输入的时钟转换为很多其他不同的时钟供系统使用。


Fin(12MHz)——>(PLL变频)——–>FCLK、HCLK、PCLK


而输出频率和输入频率的关系则通过响应的寄存器进行控制。控制参数的设置在s3c2440数据手册上有详细说明。这里只列出特别需要注意的地方。


If HDIVN is not 0, the CPU bus mode has to be changed from the fast bus mode to the asynchronous

bus mode using following instructions(S3C2440 does not support synchronous bus mode).

MMU_SetAsyncBusMode

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

orr r0,r0,#R1_nF:OR:R1_iA

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

If HDIVN is not 0 and the CPU bus mode is the fast bus mode, the CPU will operate by the HCLK.

This feature can be used to change the CPU frequency as a half or more without affecting the HCLK

and PCLK.

也就是说,S3C2440不支持异步总线模式(S3C2440A支持)。所以只能工作在fast bus模式下,此时如果HDIVN不是0的的话,驱动CPU工作的将不是FCLK,而是HCLK。


FCLKOUT must be bigger than 200MHz (It does not mean that the ARM core has to run more than 200MHz).因为CPU可能以HCLK工作,如第一条所示。


When you set MPLL&UPLL values, you have to set the UPLL value first and then the MPLL value. (Needs intervals

approximately 7 NOP。即是说,UPLL设置要在MPLL设置之前,切之间间隔至少7个NOP。


如果没有设置MPLL,那么CPU会一直以Fin的频率时钟运行。

MPLL和UPLL的计算公式并不完全相同。

MPLL Control Register

Mpll = (2 * m * Fin) / (p * 2S)

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

UPLL Control Register

Upll = (m * Fin) / (p * 2S)

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


1 关键代码说明

尽管理论稍显复杂,实际设置代码非常简单。我们要设置的最终结果是:FCLK=200MHz,并且CPU以此来运行。当然可以根据手册上的数据,设置成更高的频率,只不过尝试后发现高频率下CPU发热明显,为保护好测试板子,采用了一个较低的FCLK。


/* Fin=12MHz, FCLK=200MHz */

.equ MPLLCON,   0x4c000004

.equ M_MDIV,    92

.equ M_PDIV,    4

.equ M_SDIV,    1


/* Fin=12MHz, UPLLCLK = 48MHz */

.equ UPLLCON,   0x4c000008

.equ U_MDIV,    56

.equ U_PDIV,    2

.equ U_SDIV,    2


/* HCLK=FCLK, PCLK=FCLK, UCLK=UPLLCLK */

.equ CLKDIVN,   0x4c000014

/*

  if If HDIVN is not 0 and the CPU bus mode is the fast bus mode,

  the CPU will operate by the HCLK

*/

.equ HDIVN,     0

.equ DIVN_UPLL, 0

.equ PDIVN,     0


    ldr r0, =CLKDIVN

    ldr r1, =(DIVN_UPLL<<3) + (HDIVN<<1) + PDIVN

    str r1, [r0]


    ldr r0, =UPLLCON

    ldr r1, =(U_MDIV<<12) + (U_PDIV<<4) + U_SDIV

    str r1, [r0]

    nop

    nop

    nop

    nop

    nop

    nop

    nop


    ldr r0, =MPLLCON

    ldr r1, =(M_MDIV<<12) + (M_PDIV<<4) + M_SDIV

    str r1, [r0]


2 测试说明

我们还是使用了与上一篇博文同样的一个LED流水灯C程序,不过由于CPU工作频率由12MHz提高到了200MHz,流水灯的速度较上一版本变化非常明显,这也直观上验证了我们设置CPU时钟成功了。

推荐阅读

史海拾趣

Eurofarad公司的发展小趣事

Eurofarad始终将品质管理作为公司发展的重要保障。公司建立了完善的质量管理体系,从原材料采购到生产、检测、包装等各个环节都进行严格的质量控制。同时,Eurofarad还注重持续改进,不断优化生产流程和提高生产效率,确保产品的品质和性能始终保持在行业领先水平。

GISMA Steckverbinder GmbH公司的发展小趣事

随着全球电子市场的不断扩大,GISMA积极实施国际化战略,努力拓展海外市场。公司不仅在欧洲市场建立了稳固的地位,还逐步将业务拓展到亚洲、北美等地区。通过参加国际展会、建立海外销售网络等方式,GISMA成功吸引了众多国际客户的关注,进一步提升了品牌知名度和市场占有率。同时,GISMA还积极寻求与国际知名企业的合作机会,共同推动电子行业的发展。

恒连电子(EVERCOM)公司的发展小趣事

恒连电子成立于XX年代初,当时正值电子行业的快速发展期。创始人张先生凭借对电子技术的敏锐洞察力和对市场趋势的精准把握,决定投身于电子行业。然而,初创时期的公司面临着资金短缺、技术团队匮乏以及市场竞争激烈等多重挑战。张先生带领团队日夜兼程,通过自主研发和不断创新,逐渐在市场中站稳脚跟。他们首先推出了几款性能稳定、价格合理的电子产品,赢得了客户的信赖。随着产品的逐步推广,恒连电子逐渐在市场中打开了局面。

ABI Electronics公司的发展小趣事

ABI Electronics公司深知研发实力是企业发展的核心竞争力。因此,公司不断加大对研发的投入,引进了一批高素质的研发人才,建立了完善的研发体系。通过与高校、科研机构等合作,ABI不断吸收新的技术和知识,推动产品的升级换代,保持了在行业内的技术领先地位。

CTS公司的发展小趣事

在业务发展过程中,CTS公司还通过一系列收购来扩展其业务范围和增强竞争力。例如,CTS完成了对Alpha Ceramics的收购,这是一家为军事和航空航天市场提供传感器和换能器制造商的压电陶瓷材料供应商。这一收购使CTS能够进一步增强其在特定领域的专业能力,并为客户提供更全面的解决方案。

GTK UK Ltd公司的发展小趣事
通过增加滤波电路、采用屏蔽措施等方式来减少环境干扰对电路的影响。

问答坊 | AI 解惑

wince 程序自动启动问题

如果不把应用程序加载到内核中,能实现开机时自动启动吗? 如何实现?…

查看全部问答>

如何安装DLL形式的打印驱动程序

用DDK的例子生成的DLL打印驱动程序,但是不知道怎么进行安装。使打印列表里有这个打印机。谢谢!!…

查看全部问答>

6SE7021的问题

有个6SE7021的机器,在客户那里一运行就报F011或者F012,有时候转个几秒钟再报,然后我把机器拿回公司,把参数初始化后,带7.5K的空载电机(现场是6.3KW的电机),带了很长时间都没报警,简单处理了下,再拿回到客户那里,结果一运行还是报警,把主 ...…

查看全部问答>

FPGA硬件系统的调试方法

在调试FPGA电路时要遵循一定的原则和技巧,才能减少调试时间,避免误操作损坏电路。一般情况下,可以参考以下步骤进行FPGA硬件系统的调试。(1)首先在焊接硬件电路时,只焊接电源部分。使用万用表进行测试,排除电源短路等情况后,上电测量电压是 ...…

查看全部问答>

谁有关于STM32的英文期刊啊?

毕业了,学校要求必须得有英文文献,找遍网络没发现啊。…

查看全部问答>

PIC18F96J60问题请教

求助啊!!各位高手:     小弟想入手PIC18F96J60单片机,主要想使用它的tcp/ip功能,但我只学过PIC16F877的汇编,网上也找不到较好的PIC18F96J60单片汇编语言、C语言学习资料。请问PIC18F96J60单片汇编语言与PIC16F877单片机汇编语言一 ...…

查看全部问答>

(转个消息)没抢到Sitara AM335x Starter Kit 的兄弟们还有机会

以下四个地点还有研讨会啊,参会者可以半价购买这款开发板,大家加油啊↖(^ω^)↗ 报名链接http://www.deyisupport.com/question_answer/f/25/t/15050.aspx 快来报名!现场5折购买Sitara入门套件!!仅此一天!! 2012 TI ARM 产品研讨会 - Sitara 系 ...…

查看全部问答>

dm365开发板 demo程序中OSD显示中文问题?

dm365开发板 demo程序中OSD显示中文问题?      OSD界面  显示中文? 还有demo程序录得mpeg4视频,在暴风影音里面放,为什么速度特别快,而且没有显示时间长度?…

查看全部问答>

CW的单步调试看中断程序执行情况可以么

我写了一个SCI接收中断,用CW单步调试,有问题。中断进去之后本来有一个判断接收状态寄存器的步骤,中断进去了这个寄存器的值应为1,但是单步调试的时候看到是0,所以接下来要走的程序都不能进行,想问一下想看中断执行情况是不是不能用单步调试的 ...…

查看全部问答>