半亩花草 发表于 2024-9-13 20:41:27

ARM----时钟

时钟频率可以是由晶振提供的,我们必要高频率,但是外部接高的晶振会不稳定,所有使用PLL(锁相环)来放大频率。接下来就让我们学习用外部晶振提供的频率来设置时钟频率。

一.时钟源的选择

在这里我们选择外部晶振作为时钟源,通过检察芯片手册和原理图来看我们的时钟源。
https://i-blog.csdnimg.cn/direct/c88fb6f37a1e4544a595acd82fc14d51.png
这是手册上面,通过OM2和OM3的引脚的电位来设置时钟源。那我们去检察原理图。
https://i-blog.csdnimg.cn/direct/5bfb21270cd64831b22c3811bc478e5e.png
通过原理图我们得知,OM2和OM3是连接的低电平也就是00,以是时钟源是晶振。

二。晶振的大小为12M,看原理图得知。
https://i-blog.csdnimg.cn/direct/b10c6c47013245bf8baa0614368b0d9f.png
我们以
                FCLK:400M
                HCLK: 100 M
                PCLK:    50M
这三个时钟频率分别对不同的地域提供,由芯片手册可以得到
https://i-blog.csdnimg.cn/direct/fa92ac7eaccb4601ab82953978af4f26.png
那么详细的流程是怎么进行的呢?
看芯片手册就可以得到详细的步调。
https://i-blog.csdnimg.cn/direct/e2dc437d12fb420c8ed8b9a3893b1485.png
外部晶振提供12M频率,由MPLL来进行放大,具有放大多少怎么设置,由PDIV、MDIV、SDIV,来决定。
https://i-blog.csdnimg.cn/direct/fe7874238a48469db472561abbc844ac.png
我们选择400M,那么MDIV, PDIV, SDIV分别设置为127、2、1。
详细设置方法为:
https://i-blog.csdnimg.cn/direct/6b8a84450eb142c49f59d48920b59ca1.png
将MPLLCON寄存器的对应MDIV,PDIV,SDIV设置为127,2,1
        MPLLCON = (127 << 12) | (2 << 4) | (1 << 0); 这里FCLK已经设置好了,那接下来就要设置HCLK和PCLK
由FCLK \ HCLK\ PCLK 的比例关系我们得知HDIVN  PDIVN的详细设置;
https://i-blog.csdnimg.cn/direct/2056a57ef5304cb98b9cebd300cb953c.png
这里可以得知HDIVN 设置为2, PDIVN设置为1。
那么怎么在寄存器中设置呢
https://i-blog.csdnimg.cn/direct/7d3f32cb898c4846b8414ecb7c1f5fbd.png
这里可以得知详细的位数。
代码如下
        CLKDIVN = (2 << 1) | (1 << 0); 这样我们就设置好了时钟的频率。
实在在设置的时候我们要先设置HCLK .PCLK,因为先设置FCLK的时候,频率太高,会烧坏后面的电路,以是先设置好分频,在区设置主频。
总结就是如下
        1.通过芯片手册和原理图看时钟源是什么。
        2.看时钟源的晶振详细大小为多少
        3.确定FCLK,HCLK,PCLK的大小
        4.由这三个的比例关系来看HDIVN 、PDIVN的值(用来设置HCLK和PCLK的大小)
        5.由CLKDIV寄存器来设置HDIVN和PDIVN
        6.由FCLK的大小来查手册看MDIV ,PDIV, SDIV的值(用来设置FCLK的大小)
        7.MPLLCON来设置这三个的大小就完成了。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: ARM----时钟