S3C2440如何設置系統(tǒng)時鐘
S3C2440是一款嵌入式處理器,屬于SAMSUNG公司的ARM9系列。系統(tǒng)時鐘是嵌入式系統(tǒng)中非常重要的一個參數(shù),它決定了系統(tǒng)的計算速度和精度,是系統(tǒng)穩(wěn)定性的關鍵因素之一。對于S3C2440來說,正確設置系統(tǒng)時鐘是實現(xiàn)其高效穩(wěn)定運行的前提條件之一。本文將詳細介紹如何設置S3C2440的系統(tǒng)時鐘。
一、 S3C2440的時鐘系統(tǒng)架構
在了解如何設置S3C2440的系統(tǒng)時鐘之前,我們需要先了解一下S3C2440的時鐘系統(tǒng)架構。
我們可以看到S3C2440的時鐘系統(tǒng)主要由一個PLL鎖相環(huán)和各種分頻器組成。其中,PLL鎖相環(huán)是時鐘系統(tǒng)的核心,它的作用是將輸入的基準信號(XTAL或OSC)通過分頻器進行分頻,然后通過PLL鎖相環(huán)進行倍頻,最終產生所需要的系統(tǒng)時鐘。在S3C2440中,PLL鎖相環(huán)有兩個,分別為PLL0和PLL1,它們的輸出時鐘可以通過寄存器控制。
二、 S3C2440的系統(tǒng)時鐘設置流程
了解了S3C2440的時鐘系統(tǒng)架構之后,接下來我們就可以開始設置S3C2440的系統(tǒng)時鐘了,下面是系統(tǒng)時鐘設置的詳細步驟:
1、 確定系統(tǒng)時鐘頻率
在設置S3C2440的系統(tǒng)時鐘之前,我們需要先明確所需要的時鐘頻率。根據實際需要,可以選擇不同的時鐘頻率,如12MHz、13MHz、16MHz等。需要注意的是,時鐘頻率不能太高或太低,否則會影響系統(tǒng)的穩(wěn)定性。
2、 設置PLL0時鐘
在確定系統(tǒng)時鐘頻率后,我們可以開始設置PLL0時鐘。PLL0時鐘的輸出頻率需要在50MHz~533MHz之間,可以通過設置PLL0的分頻器和倍頻器來實現(xiàn)。具體的設置方法如下:
(1) 設置MPLLCON寄存器
MPLLCON寄存器用于設置PLL0的參數(shù),包括分頻器和倍頻器。具體的設置方法如下:
```C
#define FCLK 50000000 // FCLK時鐘為50MHz
void PLL0_Init(void)
{
// 定義需要設置的PLL0參數(shù)
unsigned int mdiv, pdiv, sdiv;
unsigned int pllcon, clksrc, clkdivn;
// 設置PLL0的MPLLCON寄存器
Get_Frequency(&mdiv, &pdiv, &sdiv, FCLK, SCLK);
pllcon = (mdiv << 12) | (pdiv << 4) | (sdiv << 0);
rMPLLCON = pllcon;
// 設置系統(tǒng)時鐘的源和分頻器
clksrc = 0x3; // 旁路模式
clkdivn = 0x1; // FCLK = HCLK / 2
rCLKDIVN = (clksrc << 0) | (clkdivn << 4);
}
```
上面的代碼中,我們首先定義了需要設置的PLL0參數(shù)mdiv、pdiv和sdiv,然后通過Get_Frequency函數(shù)計算出具體的參數(shù)值,并將其寫入MPLLCON寄存器中。其中,mdiv和pdiv分別為PLL0輸入頻率與PLL0倍頻系數(shù)的商和余數(shù),sdiv為PLL0輸入頻率與PLL0分頻系數(shù)的商。最后,我們通過設置CLKDIVN寄存器的值來設置系統(tǒng)時鐘的源和分頻器。
(2) 設置MPLLCON寄存器
如果需要使用PLL1時鐘,我們可以按照同樣的方法來設置PLL1的參數(shù)并將其寫入UPLLCON寄存器中,具體代碼如下:
```C
void PLL1_Init(void)
{
// 定義需要設置的PLL1參數(shù)
unsigned int plldivn;
unsigned int pllcon;
// 設置PLL1的UPLLCON寄存器
plldivn = 0x1;
pllcon = (plldivn << 1);
rUPLLCON = pllcon;
}
```
3、 設置系統(tǒng)時鐘
在設置好PLL0/PLL1之后,我們就可以根據實際需要來設置系統(tǒng)時鐘了。系統(tǒng)時鐘可以通過設置CLKDIVN寄存器來實現(xiàn)。具體的設置方法如下:
```C
void System_Init(void)
{
// 設置PLL0/PLL1參數(shù)和系統(tǒng)時鐘分頻器
PLL0_Init();
PLL1_Init();
// 設置系統(tǒng)時鐘分頻器
rCLKDIVN = 0x5;
}
```
上面的代碼中,我們首先調用了PLL0_Init()和PLL1_Init()函數(shù)來設置PLL0和PLL1的參數(shù),然后設置了系統(tǒng)時鐘分頻器為0x5,表示系統(tǒng)時鐘為PLL0的輸出頻率除以5。需要注意的是,系統(tǒng)時鐘的分頻器值不能太小或太大,否則會影響系統(tǒng)的穩(wěn)定性。
4、 配置外設時鐘
在設置好系統(tǒng)時鐘之后,我們還需要配置外設時鐘才能使外設正常工作。在S3C2440中,外設時鐘可以通過CLKCON寄存器來配置。具體的設置方法如下:
```C
void Peripheral_Init(void)
{
// 設置SDRAM時鐘和NAND Flash時鐘
rCLKCON = rCLKCON & (~(1 << 0)) & (~(1 << 1));
// 設置UART0時鐘
rCLKCON = rCLKCON & (~(1 << 9));
}
```
上面的代碼中,我們首先關閉SDRAM時鐘和NAND Flash時鐘,并將CLKCON寄存器的第0和第1位清零。然后,我們關閉UART0時鐘,并將CLKCON寄存器的第9位清零。根據實際需要,我們還可以配置其他外設的時鐘。
三、 總結
本文詳細介紹了如何設置S3C2440的系統(tǒng)時鐘,包括設置PLL0/PLL1和系統(tǒng)時鐘分頻器,以及配置外設時鐘。通過正確設置系統(tǒng)時鐘,可以提高S3C2440的運行效率和穩(wěn)定性,使其更好地適應不同的應用場景。作為嵌入式開發(fā)人員,了解和掌握S3C2440的時鐘系統(tǒng)架構和設置方法是非常重要的。
-
分頻器
+關注
關注
43文章
448瀏覽量
50247 -
S3C2440
+關注
關注
4文章
132瀏覽量
39071 -
嵌入式處理器
+關注
關注
0文章
255瀏覽量
30874 -
倍頻器
+關注
關注
8文章
82瀏覽量
35756 -
系統(tǒng)時鐘
+關注
關注
1文章
30瀏覽量
9407
發(fā)布評論請先 登錄
相關推薦
用txb0108在ARM9 S3C2440的八個數(shù)據口和計數(shù)器8254-2的八個數(shù)據口做了一個轉換,8254-2嚴重發(fā)燙是為什么?
MHMF092L1C3-網絡式伺服A6N 設置例 松下

快速學習全志T113-S3 開發(fā)板時鐘操作

MHMF082L1C3-網絡式伺服A6N 設置例 松下

TMS320C6000系統(tǒng)時鐘電路示例

MHMF042L1C3-網絡式伺服A6N 設置例 松下

MHMF041L1C3-網絡式伺服A6N 設置例 松下

MHMF022L1C3-網絡式伺服A6N 設置例 松下

MHMF021L1C3-網絡式伺服A6N 設置例 松下

MHMF012L1C3-網絡式伺服A6N 設置例 松下

如何設置ESP32C3的I2S LCD多路并行信號輸出?
基于AT89C52的多功能數(shù)字時鐘系統(tǒng)
MHMF011L1C3-網絡式伺服A6N 設置例 松下

基于S3C2440和專用DSP的嵌入式四軸運動控制器

評論