第10章  CLOCK
2013-05-07 20:13
169 查看
|
|
时钟控制逻辑给整个芯片提供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" />
初始计数值
相关文章推荐
- LOG日志时间与show clock时间…
- HDOJ  4256   The Famous Clock
- make: warning:  Clock skew detec…
- microtime()函数用法 及&nbsp…
- poj 3255 Roadblocks (A*)
- Build openh323 in Windows using …
- Uncaught exception 'Re
- JAVA 连接池
- HDU 3397 Sequence operation(线段…
- [转]GDBINT gdb internal Notes …
- delete和delete[] 的区别
- iOS 数据持久化-归档
- Yaf 路由配置测试
- msiexec.exe 进程
- win 下通过Jstack截取Java进…
- poj 2488 A Knight…
- [转] RedHat邮件程序mutt的设置
- FW: swig
- adb 操作 Android 虚拟机
- [置顶] 基于nutcracker …