发 帖  
原厂入驻New

[经验] 用S3C2440学习时钟体系

2020-8-31 17:27:19  247 时钟 定时器
分享
1
1、三星的S3C2440的的时钟体系有什么?它们各自起着什么样的作用?
答:玩微机的人,善于观察,不免就会有这个疑问,CPU运行那么快,外部的设备运行的比较慢,数据的传输对于时序上的要求来说两者是不匹配的,那它们的时钟源怎么匹配呢?抽空看了下数据手册,原来是因为它们有不同的时钟源,就拿S3C2440来说,它有三种时钟源:
(1)FCLK:用于CPU核。
(2)HCLK:用于AHB总线上的设备,比如CPU核存储器控制器、中断控制器、LCD控制器、DMA和USB主机模块等高性能的设备。
(3)PCLK:用于APB总线上的设备,比如WATCHDOG、IIS、I2C、PWM定时器、MMC接口、ADC、UART、GPIO、RTC和SPI等低速设备。

产生这些时钟源的简要流程可以这样描述:
(1)系统刚上电的时候,FCLK即等于外部输入的时钟。一般是12M或者24M的晶振
(2)然后用软件的方式打开MPLL(锁相环电路,用于提高系统时钟频率),把12M或者24M的时钟频率提高到100-400M(针对于S3C2440)。
(3)再然后,通过设置一些寄存器,可以改变FCLK、HCLK、PCLk的时钟频率比例(比如说1:2:2)
这样,其他的两个时钟源也就提高了。

我们需要明白的是,系统在运行的时候,是三个时钟源一起在工作,分别为不同的设备提供不同的时钟频率。当然,有些设备对这些频率还不是很“满意”、它会自己进行一些倍频或者分频的工作。

2、本质上,定时器的工作原理是什么?
答:定时器的工作原理简要说起来其实也很简单。就是利用系统给的时钟(一般是PCLK)进行计数,当数计满了,就会产生一次中断。我们想要所长时间进行一次中断,把这个数计算好就行了。

其他:在敲代码的过程中,发现一个小问题。书上说:就是在CPU在转到中断服务的时候,LR保存的是前一个工作模式的的即将执行的地址,就中断而言,是当前PC+4。可是给的代码例程里计算返回地址的时候用的是SUB lr,lr,#4—–是lr-4,这不又回到需要中断的指令了。有问题。

后来,查了一些资料才知道,可能是书上写错了,这是我摘自一篇博客的话:
IRQ异常发生时,因为这个异常是在指令执行时候发生的,PC的值等于当前执行指令加8,然后将这个值保存在LR中。但是LR寄存器中保存的是PC+8,指向的是后面的第二条指令,如果不进行减4处理,将会漏执行一条指令,所以PC恢复的时候就需要LR减4,所以正常从子程序返回的时候会使用如:
SUBS PC, LR,#4 返回到当前指令的下一条指令。


S3C2440全套中文手册.pdf

下载积分: 积分 -1 分

12.84 MB, 下载次数: 0, 下载积分: 积分 -1 分

相关经验

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表