ARM裸機學習一 S3C2440的時鐘體系

2021-10-08 10:40:22 字數 1485 閱讀 9852

s3c2440的系統時鐘圖如下:

s3c2440a的主時鐘源由外部時鐘(extclk)或者外部晶振(xtipll)提供,輸入時鐘源由模式控制引腳om3和om2控制選擇,在復位訊號的上公升沿參考om3和om2的引腳將om[3:2]的狀態在內部鎖定

大致過程是:經過om3和om2引腳選擇的外部時鐘進入mpll(鎖相環)和upll進行倍頻,經過mpll得到fclk直接供給給cpu,除此以外,fclk還會經過hdiv和pdiv分頻得到hclk和pclk,分別提供給apb匯流排和ahb匯流排。而經過upll的會產生uclk供給usb。如圖:

1.上電後,復位晶元(nreset)等待電源穩定再輸出高電平,復位引腳鬆開後,cpu開始執行,初始的fclk等於晶振的頻率(第一段)

2.在nreset拉高的時候,cpu開始執行,pll鎖存om[3:2]引腳的值

3.隨後可以設定pll,並進入lock time,cpu停止執行,lock time結束的時候cpu就執行在新的時鐘下(第二段fclk)

例:設定fclk為200m,hclk為100m,pclk為50m,比例也就是1:2:4

首先設定clkdivn = 0x03; 根據上表可以查到比例設定為1:2:4,接下來設定pll

公式為:mpll = ( 2 × m × fin ) / ( p × 2^s )

其中m =mdiv+8, p=pdiv+2, s=sdiv,fin為輸入時鐘源,如果晶振則為12,具體數值的設定查表

如果hdivn 不為0,cpu 匯流排模式應該使用以下指令(檢視手冊)使其從快匯流排模式改變為非同步匯流排模式(s3c2440不支援同步匯流排模式)。

**示例:

/*clock registers*/

#define mpllcon (volatile unsigned long *)0x4c000004

#define clkdivn (volatile unsigned long *)0x4c000014

#define s3c2440_mpll_200mhz ((0x5c<<12)|(0x01<<4)|(0x02))

void

clock_init()

(*mpllcon)

= s3c2440_mpll_200mhz;

}

s3c2440裸機串列埠UART

串列埠收發資料 115200,8n1。每一位的時間是t 1 115200。傳輸乙個位元組需要10位 包括起始位1位,資料位8位,停止位1位,需要的時間是t 10 115200。每秒傳輸的的位元組數 1 t 115200 10 11520byte。回環模式 一發出資料就立刻收到,用於測試。main.c...

S3C2440裸機 時鐘

目錄 1.s3c2440的時鐘體系 1.1.s3c2440結構框圖 1.2 s3c2440時鐘樹 1.3 s3c2440上電順序 2.暫存器配置 2.1clkdivn暫存器 2.2mpllcon暫存器 2.3設定cpu為非同步模式 3.程式設計 4.實驗 從上面的結構圖可以看出,s3c2440主要分...

s3c2440裸機 ADC程式設計

模數轉換器即a d轉換器,或簡稱adc,通常是指乙個將模擬訊號轉變為數碼訊號的電子元件。如圖,是把可變電阻上的電壓值變換的模擬訊號通過adc轉換,輸出數碼訊號。對於數碼訊號我們需要得到它的2個屬性 1.轉換精度 用多少位來儲存這個資料 假如是10 bit 那麼最大值0b111111111對應3.3v...