历史上的今天
返回首页

历史上的今天

今天是:2024年12月24日(星期二)

正在发生

2019年12月24日 | S3C2410时钟部分总结

2019-12-24 来源:elecfans

clock部分比较容易,现在按照datasheet的思路梳理一下。

一、对clock的基本认识   
第 七部分是“clock & power management”,总结如下:

1 s3c2410的clock & power management模块包含三个部分:
clock control、usb control、power control。
现在的关注 点是clock control。

2、s3c2410有两个pll(phase locked loop,锁相环,
在 高频中学过,可以实现倍频,s3c2410的高频就是由此电路产生的)。
其中一个是MPLL,M即为main,用来产生三种时钟信号:
Fclk(给 CPU核供给时钟信号,我们所说的s3c2410的cpu主频为200MHz,
就是指的这个时钟信号,相应的,1/Fclk即为cpu时钟周 期)、
Hclk(为AHB bus peripherals供给时钟信号,
AHB为advanced high-performance bus)、
Pclk(为APB bus peripherals供给时钟信号,
APB为advanced peripherals bus)。在这里,需要了解一下
AMBA system architecture了。这个可以到官方网站,www.arm.com
下载相关资料。

简单的说,AMBA是一种协议,这种协议已经称为
片上组织通信的事实 上的标准
(the de facto standard for on-chip fabric communication)。
下面给 出英文描述:   
The AMBA protocol is an open standard,
on-chip bus specification(规范) that details(详述) a
stategy for the interconnection(互相联络) and management of
functional blocks that makes up a system-on-chip(SoC).
It facilitates(促进) "right-first-time" development of
embedded processors with one or more CPU/signal processors
and multiple peripherals. The AMBA protocol enhances a resuable
design methodology by defining a common backbone(高速链路)
for SoC modules.   

需要知道的是,AMBA总线是ARM提出的一种解决方案,它并非唯一的规范
, 但是因为ARM的广泛使用,AMBA总线也就成为了事实上的规范了。
现在AMBA总线最新为AMBA 3 specification版本,包括
AMBA 3 AXI Interface、AMBA 3 AHB Interface、AMBA 3 APB Interface
、AMBA 3 ATB Interface。而s3c2410还只能支持AMBA 2 specification,
这个版本包含AMBA 2 AHB Interface、AMBA 2 APB Interface。
也就是在s3c2410的框图中看到的两种总线接口。需要注意的是,
这 两种总线所连的外设是有区别的。AHB总线连接高速外设
,低速外设则通过APB总线互连。显然,对不同总线上的外设,
应该使用不同的时钟 信号,AHB总线对应Hclk,APB总线对应Pclk
。那么事先就应该弄清楚,每条总线对应的外设有那些,
这样在设置好时钟信号后,对 应外设的初始化的值就要依此而确定了。   

AHB bus上的外设有LCD controller(CONT代表controller,控制器)、
USB Host CONT、ExtMaster、Nand CONT和nand flash boot loader、
bus CONT、interrupt CONT、power management、memory CONT
(sram/nor/sdram等)。   

APB bus上的外设有UART、USB device、SDI/MMC、Watch Dog Timer、
bus CONT、spi、iic、iis、gpio、rtc、adc、timer/pwm。  

3、主时钟源来自外部晶振或者外部时钟。复位后,MPLL虽然默认启动,
但 是如果不向 MPLLCON 中写入value,那么外部晶振直接作为系统时钟。
EDUKIT-III的外部晶振有两个,一是用于系统时钟, 为12MHz;
一个用于RTC,为32.768KHz。以前实验没有向MPLLCON写入数值,
所以系统时钟都是12MHz。从这里也可 以发现一个问题,
如果外部晶振开始没有焊上,那么系统是无法正常启动的。
因为按照上述规则,复位后还没有写入MPLLCON,这时又没有 可以使用的时钟源,
所以不会启动。也就是硬件完成后,这个12MHz的晶振是一定要焊上的,
才能进行后续的硬件测试工作。


二、clock设置的步骤 
首先应该读懂下一段:Power-On Reset (XTIpll)
Figure 7-4 shows the clock behavior(行为) during the power-on reset
sequence. The crystal oscillator begins oscillation within several
milliseconds. When nRESET is released after the stabilization
of OSC (XTIpll) clock, the PLL starts to operate according to
the default PLL configuration. However, PLL is commonly known to be
unstable after power-on reset, so Fin is fed directly to FCLK
instead of the Mpll (PLL output) before the software newly configures
the PLLCON. Even if the user does not want to change the default
value of PLLCON register after reset, the user should write the same
value into PLLCON register by software.
The PLL restarts the lockup sequence toward the new frequency
only after the software configures the PLL with a new frequency.
FCLK can be configured as PLL output (Mpll) immediately after lock time.

这个主要是基于PLL的特点。简单的描述就是,上电复位后,几个ms后晶振起振。
当OSC时钟信号稳定之后,nRESET电平拉高(这是硬件自动 检测过程)。这个时候,
PLL开始按照默认的PLL配置开始工作,但是特殊性就在于PLL在上电复位后开始是
不稳定的,所以 s3c2410设计为把Fin在上电复位后直接作为Fclk,这时MPLL是不起
作用的。如果要想是MPLL起作用,那么方法就是写入 MPLLCON寄存器值,
然后等待LOCKTIME时间后,新的Fclk开始工作。

 

下面把这些步骤分来来描述,软件步骤部分结合程序进行。  

1、上电几个ms后,晶振输出稳定。Fclk=晶振频率。nRESET恢复高电平后,
cpu开始执行指令,这完全是硬件动作,不需要软件设 置。  

2、第一步软件工作: 设置PMS divider control,也就是设置MPLLCON寄存器。
关于PMS,可以看Figure 7-2.寄存器MPLLCON的设置呢,其实有一定的规则,并非你
想要的每个Fclk频率都可以得到。官方推荐了一个表PLL VALUE SELECTION TABLE,
要按照这个进行。否则的话,就需要自己按照公式推算,但是mizi公司并不保证你
的设置是合适的。所 以,如果想要工作在200MHz,还是按照vivi的推荐值即可。
step1: set P M S divider control
mov r1, #CLK_CTL_BASE
ldr r2, =vMPLLCON_200
str r2, [r1, #oMPLLCON]

其中,MDIV=0x5c,PDIV=0x04,SDIV=0x00.公式Mpll(Fclk)=(m*Fin)/(p*(2^s))
(m=MDIV+8, p="PDIV"+2,s=SDIV)   

3、第二步软件工作: 设置CLKDIVN。   
这一步是设置分频 系数,即Fclk为cpu主频,Hclk由Fclk分频得到,Pclk由Hclk分频得到。
假设Hclk是Fclk的二分频,Pclk是Hclk 的二分频,那么分频系数比就是Fclk:Hclk:Pclk=
1:2:4.那么Hclk为100MHz,总线时钟周期为10ns。Pclk为 50MHz。
step2: change clock divider
mov r1, #CLK_CTL_BASE
mov r2, #vCLKDIVN
str r2, [r1, #oCLKDIVN]

4、第三步软件工作: CLKDIVN的补充设置  
If HDIVN = 1, the CPU bus mode has to be changed from the fast bus mode to

the   ynchron   bus mode using following instructions.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="1" 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 without affecting the HCLK and PCLK.

看了上段话,只需要翻译出来就可以了。
FCLK:HCLK=1:2
.macro MMU_SetAsyncBusMode
mrc p15, 0, r0, c1, c0, 0
orr r0, r0, #(R1_iA | R1_nF)
mcr p15, 0, r0, c1, c0, 0
.endm

step3: set asynchronous bus mode
MMU_SetAsyncBusMode

5、第四步软件工作:等待locktime时间,让新的Fclk生效
step4: stay locktime
mov r1, #CLK_CTL_BASE
ldr r2, =vLOCKTIME
str r2, [r1, #oLOCKTIME]

6、对外设的影响   
在 这个实验中,主要是有两个需要改变,一个外设是UART,一个外设是SDRAM。    
(1) UART,它是接在APB总线上,所以对应的时钟信号为Pclk,现在为50MHz。
如果想要设置波特率为115200bps,那么根据公式 UBRDIV0=(int)(PCLK/(bps*16))-1
计算,应该为26。如果放到程序中,那么应该注意形式。具体如下:
UBRDIV0 = ((int)(PCLK/16./UART_BAUD_RATE) -1);

(2)SDRAM,主要的影响因素为刷新频率。前面在SDRAM中没有具体分析,
现在可以详细说明。使用了两片HY57V561620CT-H, 查看手册其刷新频率为
8192 refresh cycles/64ms,所以刷新周期64ms/8192=7.8125us。
看寄存器 REFRESH的各个位的设置情况:   
·REFEN[23]:开启自动模式,设为1   
·TREFMD[22]:设为Auto refresh模式,设为0   
·Trp[21:20]:看看RAS precharge Time,查看SDRAM手册,发现-H系列此参数至少为20ns
,现在Hclk对应的时钟周期为10ns,所以至少应该为2个clock。可以 设为00   
·Tsrc: Semi Row Cycle Time,也就是RAS Cycle Time,至少65ms,所以至少得6.5clock,
按照可选值,应该设置为11   
·Refresh[10:0]:   
公 式refresh period = (2^11 - refresh_count +1)/Hclk,
由此推导出 refresh_count=2^11+1-refresh period*Hclk。
带入数值,计算得出1268=0x04f4,这个数值要用 四舍五入,减少误差。   
·其余的保留值,均设置为0    由此得出该寄存器的值应该为0x008c04f4。

阿南解说的:开发板上的12M晶振经过PLL倍频得到 FCLK;

lisuwei兄弟说:
为了降低电磁干扰和降低板间布线要求,芯片外接的晶振频率通常很低
,通过时钟控制逻辑的PLL提高系统使时钟。S3C2410/2440有两个 PLL,
MPLL和UPLL:UPLL用于USB设备,MPLL用于设置FCLK,HCLK,FCLK。
FCLK与输入晶振的比例通过寄 存器MPLLCON设置。
FCLK,HCLK,FCLK三者的比例通过寄存器CLKDIVN,CAMDIVN(2440)设置。

推荐阅读

史海拾趣

Bipolar Integrated Technology Inc公司的发展小趣事

随着技术的成熟,BIT开始积极寻找市场机会。他们与多家电子设备制造商建立了合作关系,将自家的集成电路应用于各种电子产品中。通过与这些合作伙伴的紧密合作,BIT的产品逐渐在市场上占据了一席之地,公司规模也逐渐扩大。

Delock公司的发展小趣事

随着公司规模的扩大和产品线的丰富,Delock公司开始积极拓展国际市场。公司先是在欧美等发达国家设立了办事处和分销中心,随后又逐步进入亚洲、非洲等新兴市场。为了更好地满足全球用户的需求,Delock公司还针对不同地区的市场特点进行产品定制和营销策略的调整。这一系列的全球化战略让Delock公司的产品在全球范围内获得了广泛的认可和应用。

Alutronic Kuhlkorper Gmbh & Co Kg公司的发展小趣事

在快速发展的同时,Delock公司始终将产品质量放在首位。公司建立了严格的质量控制体系,从原材料采购到生产流程,再到产品出厂,每一个环节都经过严格的检验。这种对品质的坚持让Delock公司的产品赢得了用户的信赖和好评。同时,公司还积极参与各类国际认证和评测,不断提升产品的品质水平。这些努力让Delock公司逐渐在电子行业中树立起了品质卓越的品牌形象。

Cermetek Microelectronics公司的发展小趣事

在追求经济效益的同时,Cermetek Microelectronics公司也积极履行社会责任。公司注重环保和可持续发展,采用环保材料和生产工艺,减少对环境的影响。此外,公司还积极参与社会公益事业,为社会做出贡献。这种负责任的态度不仅赢得了社会各界的认可,也为公司的长远发展注入了正能量。

这五个故事展示了Cermetek Microelectronics公司在电子行业中的发展历程和取得的成就。通过技术积累、品质管理、持续创新、国际化战略和社会责任等方面的努力,公司逐渐在微电子领域树立起了自己的品牌形象和市场地位。

CSR plc(剑桥硅晶无线电)公司的发展小趣事

CSR plc的创始人们怀揣着对音频技术的热情与追求,在剑桥这个科技创新的摇篮中开始了他们的征程。初创时期,公司的主要业务集中在音频领域,他们研发出了一系列创新的音频技术,为当时的移动设备市场带来了前所未有的听觉体验。这些技术的成功应用,不仅让CSR plc在行业内崭露头角,也为公司的后续发展奠定了坚实的基础。

富瀚(Fullhan)公司的发展小趣事
使用负载设备逐渐增加电动机的负载,直至达到或超过保护器设定的过载保护阈值。

问答坊 | AI 解惑

请大家发布一些生产一线的技术资料

请大家发布一些生产一线的技术资料,比如DIE BOND WIRE BOND等资料…

查看全部问答>

电脑控制开关电源控制箱

COM口   寻求合作商  广东  东莞        13431362147   陈耀峰  632022229…

查看全部问答>

我的蓝牙模块通信问题,PC和开发板之间采用蓝牙通信,能发不能收,附带测试源码

采用BLUEZ蓝牙协议栈 客户端,开发板上: #include #include #include #include #include \"bluetooth/bluetooth.h\" #include \"bluetooth/l2cap.h\" struct sockaddr_l2 cli_addr; int clientfd,result,byte; int cli_len; char msg ...…

查看全部问答>

WinCE5.0下U盘显示的是中文“硬盘”,请问如何把它变成英文的?

如题,WinCE5.0下U盘显示的是中文“硬盘”,请问如何把它变成英文的?例如“U Disc”。在bsp的哪个地方可以修改 啊?…

查看全部问答>

WinCE6.0/6410 如何修改LCD 输入的时钟频率.

WinCE6.0/6410 如何修改LCD 输入的时钟频率.…

查看全部问答>

待机处理问题请求~

我最近做了一段stm32微功耗的程序的处理,本以为,按照要求进入了微功耗状态,但是实际测量电流后,才发现电流1ma,郁闷至极,不知道什么原因,急求帮助。 我判断进入微功耗的的原因是:第一程序不能烧写,第二led灯进入高阻态,灯不亮了~ ...…

查看全部问答>

DSP288335的IIC模块与PCF8563的通信问题

各位大侠,偶现在用DSP28335的IIC模块与PCF8563进行通信,程序编译没有问题,我在单步运行的时候感觉不能读写PCF8563的数据,并且感觉程序进入死循环的模式了,我的IIC模块的驱动程序如下: Uint16 I2CA_WriteData(struct I2CMSG *msg) {   ...…

查看全部问答>

我该如何学好STM32?

本人是学生,刚学完郭天祥的51单片机。打算学习32,32板子,视频都弄好了。可是刚开始看觉得好难,用的书是例说32.有人能指点我一点嘛,我该如何进行有条理的学习? 万分感谢!…

查看全部问答>

25元一片低价处理全新数字红外传感器 MLX90615SSG-DAG 送液晶 有例程

MLX90615是用于非接触温度测量的红外温度计。对 IR灵 敏的热电堆探测器芯片和信号处理 ASSP被集成在同一 TO- 46 密封罐封装里。 由于集成了低噪声放大器,16位 ADC和强大的 DSP单 元,使得高度集成和高精度的温度计得以实现。 温度计具备出厂 ...…

查看全部问答>

串口通信的自动重装载值

TH1 = TL1 = 256 -  晶振值/12 /2/16 /波特率 最后面是啥意思啊,为啥要这样写啊…

查看全部问答>