<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 系統(tǒng)時(shí)鐘和定時(shí)器簡單記錄

          系統(tǒng)時(shí)鐘和定時(shí)器簡單記錄

          作者: 時(shí)間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
          S3C2440A 中的時(shí)鐘控制邏輯可以產(chǎn)生必須的時(shí)鐘信號,包括CPU的FCLK,AHB總線外設(shè)的HCLK以及APB總線外設(shè)的PCLK。S3C2440A 包含兩個(gè)鎖相環(huán)(PLL):一個(gè)提供給 FCLK、HCLK 和PCLK,另一個(gè)專用于USB模塊(48MHz)。時(shí)鐘控制邏輯可以不使用PLL來減慢時(shí)鐘,并且可以由軟件連接或斷開各外設(shè)模塊的時(shí)鐘,以降低功耗。
          鎖相環(huán)(PLL):時(shí)鐘發(fā)生器之中作為一個(gè)電路的MPLL,參考輸入信號的頻率和相位同步出一個(gè)輸出信號。用于生成與輸入直流電壓成比例的輸出頻率的壓控振蕩器(VCO)、用于將輸入頻率(Fin)按p分頻的分頻器 P 、用于將VCO輸出頻率按m分頻并輸入到相位頻率檢測器(PFD)中的分頻器M用于將VCO輸出頻率按s分頻成為Mpll(輸出頻率來自MPLL模塊)的分頻器S、鑒相器、電荷泵以及環(huán)路濾波器。
          鑒相器(PFD ):PFD檢測 Fref 和Fvco之間的相位差,并在檢測到相位差時(shí)產(chǎn)生一個(gè)控制信號(跟蹤信號)。Fref 意思為參考頻率。
          電荷泵(PUMP )
          電荷泵將PFD 控制信號轉(zhuǎn)換為一個(gè)按比例變化的電壓并通過外部濾波器來驅(qū)動(dòng) VCO。
          環(huán)路濾波器
          PFD產(chǎn)生用于電荷泵的控制信號,在每次 Fvco與Fref 比較時(shí)可能產(chǎn)生很大的偏差(紋波)。為了避免 VCO過載,使用低通濾波器采樣并且濾除控制信號的高頻分量。濾波器是一個(gè)典型由一個(gè)電阻和一個(gè)電容組成的單極性RC濾波器。
          壓控振蕩器(VCO)
          從環(huán)路濾波器的輸出電壓驅(qū)動(dòng) VCO,引起其振蕩頻率線性增大或減小,如同均勻變化電壓的功能。當(dāng)Fvco與Fref 頻率和相位都在限期內(nèi)相匹配時(shí),PFD 停止發(fā)送控制信號給電荷泵,并轉(zhuǎn)變?yōu)榉€(wěn)定輸入電壓給環(huán)路濾波器。VCO頻率保持恒定,PLL 則保持固定為系統(tǒng)時(shí)鐘
          PLL和時(shí)鐘產(chǎn)生器的通常條件 (參見文檔)
          如何控制鎖相環(huán)PLL的輸出頻率呢?MPLLCON(FCLK和Fin的比例關(guān)系)和CLKDIVN寄存器(FCLK、HCLK和PCLK之間的比例關(guān)系):FCLK=(2*m*Fin)/(p*2^s)
          m=MDIV+8,p=PDIV+2,s=SDIV。(MPLLCON寄存器中)。注意:在系統(tǒng)初始化階段應(yīng)該先初始化UPLL(USB時(shí)鐘),然后等待大約7個(gè)nop指令之后,再初始化MPLL.這也就是啟動(dòng)代碼時(shí),需要注意的。同時(shí)最好按照官方給出的系統(tǒng)時(shí)鐘配置參考。
          例子:已知系統(tǒng)外部晶振輸入為12MHz,要求FCLK輸出為200MHz,經(jīng)過計(jì)算可以得到MDIV=92,PDIV=4,SDIV=1。
          M_MDIV EQU 92 //Fin=12.0MHz,F(xiàn)out=200MHz
          M_PDIV EQU 4
          M_SDIV EQU 1
          ldr r0 ,=MPLLCON
          ldr r1 ,=((M_MDIV<<12)+(M_PDIV<<4)+M_SDIV)
          str r1,[r0]
          下面配置CLKDIVN寄存器,實(shí)現(xiàn)FCLK、HCLK、PCLK之間的分頻比。其中HDIVN用于控制FCLK和PCLK的比例關(guān)系;PDIVN主要用于控制HCLK和PCLK的比例關(guān)系。
          定時(shí)器原理與應(yīng)用
          S3C2440有5個(gè)16位定時(shí)器,定時(shí)器0、1、2、3被稱為PWM定時(shí)器。定時(shí)器 4 是一個(gè)無輸出引腳的內(nèi)部定時(shí)器。定時(shí)器 0 還包含用于大電流驅(qū)動(dòng)的死區(qū)發(fā)生器。(時(shí)鐘源是PCLK)
          定時(shí)器原理相同,寄存器TCMPBn和TCNTBn用于緩存定時(shí)器n的比較值和初始化值;TCON用于控制定時(shí)親的開啟與關(guān)閉;可以通過讀取寄存器TCNTOn得到定時(shí)器的當(dāng)前計(jì)數(shù)值。
          TCMPBn的值是用于脈寬調(diào)制(PWM)。當(dāng)遞減計(jì)數(shù)器的值與定時(shí)器控制邏輯中的比較寄存器的值相匹配時(shí)定時(shí)器控制邏輯改變輸出電平。因此,比較寄存器決定 PWM 輸出的開啟時(shí)間(或關(guān)閉時(shí)間)。
          定時(shí)器工作原理概述:
          首先、將定時(shí)器的比較值和初始值裝入寄存器TCMPBn和TCNTBn中。
          然后、設(shè)置定時(shí)器控制器TCON啟動(dòng)定時(shí)器。此時(shí)、TCMPBn和TCNTBn中的值會(huì)加載到寄存器TCMPn和TCNRn中。
          此時(shí)、定時(shí)器會(huì)減1計(jì)數(shù),即TCNTn進(jìn)行減1計(jì)數(shù),當(dāng)TCMPn=TCNTn時(shí),TOUTn引腳輸出取反。TCNTn繼續(xù)減1計(jì)數(shù)。
          當(dāng)TCNTn的值到達(dá)0時(shí),其輸出管腳TOUTn再次發(fā)轉(zhuǎn),并觸發(fā)定時(shí)器n的中斷。(如果中斷使能的話)
          當(dāng)TCNTn的值到達(dá)0時(shí),如果在TCON寄存器中將定時(shí)器n設(shè)置為“自動(dòng)取反”,則自動(dòng)加載初值,下一輪計(jì)數(shù)流程開始。
          可以通過讀取TCNTOn讀取觀察定時(shí)器當(dāng)前的值。PCLK經(jīng)過兩級分頻器,輸出頻率作為定時(shí)器的工作頻率。
          定時(shí)器配置寄存器TCFG0用于控制第1級分頻器的分頻系數(shù),分頻器輸出頻率為:
          PCLK/(prescaler value+1),其中prescaler value=0~255.
          定時(shí)器配置寄存器TCFG1用于控制多路開關(guān)。
          定時(shí)器的輸入時(shí)鐘=PCLK/(prescaler value+1)/(divider value)
          prescaler value=0~255;divider value=2、4、8、16
          例子:設(shè)置適當(dāng)?shù)姆诸l系數(shù),使定時(shí)器0的輸入時(shí)鐘為62.5kHz
          假如PCLK為50MHz,則50MHz/62.5kHz=800,可以是第一級分頻系數(shù)為100,第2級的分頻系數(shù)為8即可滿足要求。
          rTCFG0 &= ~(0xFF);
          rTCFG0 |=99;
          rTCFG1 &=~(0xf);
          rTCFG1 |=0x02;
          總體思路是先將這幾位清零,然后將數(shù)據(jù)寫入這幾位。
          WATCHDOG定時(shí)器可以像16位定時(shí)器一樣用于產(chǎn)生周期性的中斷,也可以用于發(fā)出復(fù)位信號以重啟失常的系統(tǒng)。


          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();