您的位置:首页 > 其它

第10章  CLOCK

2013-05-07 20:13 169 查看



From Evernote:


第10章

10.1时钟体系及各类时钟部件
时钟控制逻辑给整个芯片提供3种时钟:

FCLK用于cpu核;HCLK用于AHB总线上设备,比如cpu核、存储器控制器、中断控制器、lcd控制器、DMA和USB主机模块等;PCLK用于APB总线上的设备如WATCHDOG、Ⅱs、i2c、pwm定时器、MMC接口、ADC、UART、GPIO、RTC、SPI
AHB(ADVANCED high PERFORMANCE BUS)总线主要用于cpu、DMA和DSP
APB用于低带宽的周边外设之间的连接UART/I2C

S3C2440/S3C2440有两个pll:mpll和upll,upll专用于usb设备,mpll用于设置fclk、hclk、plck


CLOCK" TITLE="第10章 CLOCK" />
1.上电几毫秒,晶振输出稳定,flck=fin,nreset信号恢复高电平,cpu开始工作

2.可以在程序开头启动MPLL,设置MPLL的几个寄存器,需要等待一段时间。mpll的输出才稳定,这段时间内fclk停振,cpu停止工作;lock
time的长短由寄存器LOCKTIME设定。
3.LoCKTIME 之后,MPLL输出正常,cpu工作在新的FLCK下。
fclk、hclk、pclk的比例可以改变,设置他们三者的比例启动MPLL只需要设置3个寄存器:
1.LOCKTIME寄存器


CLOCK" TITLE="第10章 CLOCK" />

2.MPLLCON寄存器:用于设置FCLK与Fin的倍数


CLOCK" TITLE="第10章 CLOCK" />
上表记录mdiv、pdiv、sdiv各种值组合是的输出频率

3.CLKDIVN寄存器:用于设置fclk、hclk、pclk三者的比例


CLOCK" TITLE="第10章 CLOCK" />
4.camdivn寄存器


CLOCK" TITLE="第10章 CLOCK" />
通过设置CLKDIVN和CAMDIVN来设置fclk、hclk、pclk的比例


CLOCK" TITLE="第10章 CLOCK" />

s32440 pwm &定时器

1、5个16位定时器

2、0定时器是用于大电流设备的死角信号发生器,3定时器带pwm,4为内部定时器,没有输出引脚。

3.0和1定时共用一个8位的预分频器,2,3,4共用另一个8位预分频器。每个定时器自带一个时钟分频器(1/2,1/4,1/8,1/16和TCLK)。

4、编程→TCFG0和TCFG1寄存器→8位预分频器→各时钟分频器→定时器

5、TCNTBn(定时器计数缓冲寄存器),得到一个被装载到递减计数器的初始值,TCMPBn(比较寄存器)转载到比较寄存器中用来和递减数计数器值做比较的初始值。

每个定时器有一个自己的定时器时钟驱动的16位递减计数器。

6、TCMPBn的值用于脉宽调制,当递减计数器的值和定时器控制逻辑中的比较寄存器的值匹配,定时器控制逻辑改变输出电平,因此,比较寄存器决定了pwm输出的开启时间


CLOCK" TITLE="第10章 CLOCK" />

自动重载和双缓冲功能

TCNTBN
的下一个值被写入时不会影响当前计数值工作,当tcnt为零且auto-reload=1,从tcntbn载入值到tcntn中。


CLOCK" TITLE="第10章 CLOCK" />

一个定时器的手动更新位和反相器位的定时器初始化

1、写初始值到TCNTBN和TCMPBN

2、设置相应定时器的手动更新位。

3、设置相应定时器的开始位开启定时器且清除手动更新位。

pwm

TCNTBn决定pwm的频率(因为定时器输出时钟频率=PCLK
÷ (prescaler+1) ÷ divider=PCLK/16/8),TCMPBn决定pwm的值,TCMPBn减小,pwm增大,TCMPBn增大,PWM减小。
tcntn从TCNTBn读取初始值开始递减,当递减到与Tcmpbn值一样时,改变outn,直到tcntn递减为零,outn为零

输出OUTN控制
1.自动重载位置0,当TCNTn递减到0时,TOUTn变为高电平,定时器停止工作。

2.通过置定时器开始停止位=0来停止定时器,如果TCNT《=TCMPn,输出高电平,如果TCNTn>TCMPN,输出低电平。

定时器设置寄存器


CLOCK" TITLE="第10章 CLOCK" />
经过预分频器出来的时钟频率为:PCLK/(precscaler+1)


CLOCK" TITLE="第10章 CLOCK" />


CLOCK" TITLE="第10章 CLOCK" />

inverter反转、需要设置手动更新位1以使TCNTBn/TCMPBn寄存器的值装入内部寄存器TCNtn、TCMPBn,下次如果还要设置这一位需要先清0。


CLOCK" TITLE="第10章 CLOCK" />

10.1.3WATCHDOG定时器。


CLOCK" TITLE="第10章 CLOCK" />

watchdog定时器可以用于产生周期性的中断,也可以用于发出复位信号的以重启失常系统。
watchdog需要通过三个寄存器来工作:
1.wtcon寄存器


CLOCK" TITLE="第10章 CLOCK" />
watchdog定时器工作频率=PCLK/(PRESCALER VALUE+1)/(DIVIDER VALUE)
prescaler value=0~255 divider value=16、32、64、128
2.wtdat寄存器


CLOCK" TITLE="第10章 CLOCK" />
保存当wtcnt=0时的重载值
3.wtcnt寄存器


CLOCK" TITLE="第10章 CLOCK" />
初始计数值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: