s5pv210——时钟系统
生活随笔
收集整理的這篇文章主要介紹了
s5pv210——时钟系统
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以下內容源于朱友鵬《物聯網大講壇》課程的學習,以及博客http://www.cnblogs.com/biaohc/p/6349195.html,以及用戶手冊,如有侵權,請告知刪除。
一、s5pv210的時鐘域
(1)MSYS Domain
- 為處理器、3D、intc(中斷)、DMC0、DMC1、IRAM、IROM提供時鐘;
- HCLK_MSYS:200MHZ(DM0、DM1使用)
- PCLK_MSYS:100MHz
- ARMCLK:1000MHZ(cpu主頻)
- HCLK_IMEM:100MHZ(IROM、IRAM使用)
(2)DSYS Domain
- 為音視頻等設備提供時鐘;
- HCLK_DSYS:166MHZ
- PCLK_DSYS:83MHz
(3)PSYS Domain
- 為外設提供時鐘,如GPIO、I2C、PWM、UART、WDT等。
- HCLK_PSYS:133MHZ
- PCLK_PSYS:66MHz
二、s5pv210的晶振
1、s5pv210有四個晶振
(1)XRTCXTI
- 提供32.768KHz,RTC 使用;
- XRTCXTI and XRTCXTO pins
(2)XXTI
- CMU and PLL使用這個時鐘,為APLL、MPLL、VPLL、EPLL提供時鐘。
- 推薦頻率24MHz。
- XXTI and XXTO pins。
(3)XUSBXTI
- 為APLL、MPLL、VPLL、EPLL、USB PHY提供時鐘。
- 推薦24MHz。
- XUSBXTI and XUSBXTO pins
(4)XHDMIXTI :
- 27MHz,VPLL、HDMI PHY為TV解碼器提供54MHz時鐘。
- XHDMIXTI and XHDMIXTO pins。
三、s5pv210推薦時鐘設置
根據推薦值來設置相應的MUX開關、PLL鎖相環倍頻、DIV分頻器的值來得到相應的時鐘。
四、時鐘設置的關鍵性寄存器
1、xPLL_LOCK寄存器
(1)設置鎖定周期,一般為默認值。因為PLL倍頻需要一定時間才能達到相應的頻率。
2、xPLL_CON,xPLL_CON0,xPLL_CON1
(1)用來打開或關閉PLL電路,設置倍頻參數,查看PLL鎖定狀態等。
(2)APLL_CON0/APLL_CON1, R/W, Address =0xE010_0100/0xE010_0104
設置APLL的倍頻率:FOUT = MDIV X FIN / (PDIV × 2^(SDIV)-1)
如1000MHZ,則1000=125*24 / (3*2^1-1)
(3)MPLL_CON, R/W, Address = 0xE010_0108
設置MPLL的倍頻率:FOUT = MDIV X FIN / (PDIV X 2^(SDIV))
上述的1、2是用來控制鎖相環相關的。
3、CLK_SRCn(n=0~6)、CLK_SRC_MASKn(n=0~6)
(1)設置MUX開關;
(2)如CLK_SRC0寄存器。首先要關閉4個PLL的MUX開關,設置好相應寄存器以后再把PLL的MUX開關打開。
4、CLK_DIVn寄存器
(1)主要是設置各個分頻器的值
(2)如CLK_DIV0寄存器
五、代碼實戰
#define _REG_APLL_LOCK *((unsigned int*)0xE0100000) #define _REG_MPLL_LOCK *((unsigned int*)0xE0100008) #define _REG_EPLL_LOCK *((unsigned int*)0xE0100010) #define _REG_VPLL_LOCK *((unsigned int*)0xE0100020) #define _REG_APLL_CON0 *((unsigned int*)0xE0100100) #define _REG_MPLL_CON *((unsigned int*)0xE0100108) #define _REG_CLK_SRC0 *((unsigned int*)0xE0100200) #define _REG_CLK_DIV0 *((unsigned int*)0xE0100300)#define APLL_SDIV (1) #define APLL_PDIV (3) #define APLL_MDIV (125) #define APLL_EN (1)#define MPLL_SDIV (1) #define MPLL_PDIV (12) #define MPLL_MDIV (667) #define MPLL_EN (1)void clock_init(void) {//第一步關閉PLL的MUX開關_REG_CLK_SRC0 = 0x0;//第二步設置LOCK時間,設置為默認值0x0FFF_REG_APLL_LOCK = 0x0FFF;_REG_MPLL_LOCK = 0x0FFF;_REG_EPLL_LOCK = 0x0FFF;_REG_VPLL_LOCK = 0x0FFF;//第三步設置DIV分頻器的值 _REG_CLK_DIV0 = 0x14131400;//第四步設置APLL、MPLL的倍頻值。_REG_APLL_CON0 = (APLL_EN<<31) | (APLL_MDIV<<16) | (APLL_PDIV<<8) | (APLL_SDIV<<0);_REG_MPLL_CON = (MPLL_EN<<31) | (MPLL_MDIV<<16) | (MPLL_PDIV<<8) | (MPLL_SDIV<<0);//第五步設置MUX開關_REG_CLK_SRC0 = 0x1111; }總結
以上是生活随笔為你收集整理的s5pv210——时钟系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言程序设计—01基础知识
- 下一篇: 7号信令应用