S3C2440定時器原理概述
s3c2440有5個16位定時器,定時器0、1、2和3有脈沖寬度調制(PWM)功能,因此這4個定時器也被稱為PWM定時器。定時器4是一個內部的定時器,沒有外部輸出引腳。
定時器的時鐘源是PCLK,定時器工作所需頻率并不等于PCLK,還要進一步將PCLK通過內部的分頻器分頻才能得到。這里也可以看出外部設備所需的工作頻率不一定等于它的時鐘源。其中,定時器0、1公用一個分頻器,另外3個定時器公用一個分頻器。分頻器輸入信號經過第2級分頻器進一步降低時鐘頻率,然后輸出作為定時器工作的時鐘。下圖為由PCLK得到定時器工作時鐘的框圖:
雖然S3C2440定時器有5個,但是它們的工作原理都是相同的,只需要理解一個定時器的工作原理即可。對于某一個定時器,其內部結構原理如圖2所示。寄存器TCMPBn和TCNTBn用于緩存定時器n的比較值和初始值;TCON用于控制定時器的開啟與關閉;可以通過讀取寄存器TCNTOn得到定時器的當前計數值。注意圖2所示的是PWM定時器,也就是定時器0-3,不包含定時器4,定時器4也沒有外部輸出引腳。
定時器工作原理概述:
● 首先,將定時器的比較值和初始值裝入寄存器TCMPBn和TCNTBn中
● 然后,設置定時器控制寄存器TCON,啟動定時器。此時,TCMPBn和TCNTBn中的值會加載到寄存器TCMPn和TCNTn中
● 此時,定時器會減1計數,即TCNTn進行減1計數,當TCMPn=TCNTn時,TOUTn引腳輸出取反。
S3C2440定時器相關寄存器
● 定時器控制寄存器TCON
由于各個定時器的工作原理相似,下面以定時器0為例進行講解。在定時器控制寄存器TCON中,位[3:0]用于控制定時器0,其含義如表1所示:
● 定時器比較值緩存寄存器TCMPBn、計數值緩存寄存器TCNTBn
這兩個寄存器用于存儲定時器的比較值初始值和計數值初始值。
● 定時器比較值寄存器TCMPn、計數值寄存器TCNTn
這兩個寄存器是定時器內部寄存器,用戶無需對其進行寫操作。
● 定時器觀察值寄存器TCNTOn
在定時器減1計數過程中,TCNTn的值可以通過TCNTOn寄存器得到。
● 定時器配置寄存器TCFG0、TCFG1
這兩個寄存器很重要啊。本節開頭講過,PCLK經過兩級分頻器,輸出頻率作為定時器的工作頻率,如圖1所示。因此,一定要有寄存器來設置分頻系數。
①定時器配置寄存器TCFG0用于控制第1級分頻器的分頻系數,分頻器輸出頻率為:PCLK/(prescaler value+1),其中prescaler value=0~255。
②定時器配置寄存器TCFG1用于控制多路開關。divider value=2,4,8,16
定制器的輸入時鐘=PCLK/(prescaler value+1)/(divider value)。下圖3為定時器0的輸入時鐘產生過程:
從圖1和圖3可以看出,定時器0、1公用一個第1級分頻器,第1級分頻器的分頻系數由TCFG0的位[7:0]控制;定時器2、3、4公用另一個第1級分頻器,該分頻器的分頻系數由TCFG0的位[15:8]控制。同時,從圖3可以看到,第2級分頻器的分頻系數是確定的,只有5種類型:2分頻、4分頻、8分頻、16分頻和外接時鐘TCLKn(n=0或1),定時器配置寄存器TCFG1用于控制多路開關,每個定時器都由其中的連續4位控制。以定時器0為例,TCFG1的位[3:0]用于控制定時器0。下圖為S3C2440數據手冊上關于TCFG1的說明:
下面以定時器0舉例子說明定時器的配置過程。
例:設置適當的分頻系數,是定時器0的輸入時鐘為62.5KHz。
因為PCLK為50MHz,則50MHz/62.5KHz=800,即需要對PCLK進行800分頻。所以使第1級的分頻系數為100,第2級的分頻系數為8即可滿足要求。最后,只需要將分頻系數寫入定時器控制寄存器中相應的位即可,代碼如下:
TCFG0&=~(0xff); //設置第1級分頻系數,分頻系數為99
TCFG0|=99;
TCFG1&=~(0xf); //設置第2級分頻系數,分頻系數為8
TCFG1|=0x02; //62.5KHz=50MHz/(99+1)/8
下一節介紹兩個關于定時器0的實驗,在這里貼出關于定時器0的初始化代碼,相信大家會理解的更好一些的。
/***************************************************************
* 函數名稱:void Timer0_Init(void)
* 參數說明:無
* 全局變量:無
* 返 回 值:無
* 功 能:對于50MHz的PCLK,經過分頻獲得62.5KHz的定時器0
* 的輸入時鐘。
***************************************************************/
void Timer0_Init(void)
{
TCFG0&=~(0xff); //設置第1級分頻系數,分頻系數為99
TCFG0|=99;
TCFG1&=~(0xf); //設置第2級分頻系數,分頻系數為8
TCFG1|=0x02; //62.5KHz=50MHz/(99+1)/8
TCNTB0=62500; //1s中斷一次。經過上述分頻器得到定時器0的輸入時鐘頻率為62.5kHz,即定時器
//每秒鐘計數62500次。因此,初始化時,定時器0計數值初始值為62500
//在這里我們可以看出TCMPBn沒有設置,因為咱們用它的默認值0,所以就不需要設置
TCON|=(1<<1); //開啟手動更新位,即當定時器開啟后,TCMPB0和TCNTB0中的值會加載到寄存器TCMP0和TCNT0中
TCON=0x09; //關閉手動更新位,設置自動加載位,同時開啟定時器,這樣,TCNT0進行減1計數,當TCNT0中的計
//數值減到0時,TCNTB0、TCMPB0中的數據分別會自動加載到TCNT0、TCMP0中并進行新一輪的減1計數
}
上一篇:一起學mini2440裸機開發(七)--UART高級實驗,可變參函數
下一篇:基于s3c2440的簡易bootloader實現
推薦閱讀
史海拾趣
隨著公司規模的擴大和產品線的豐富,品質管理成為CST Master面臨的一個重要問題。為了提升產品品質和客戶滿意度,公司引入了一套先進的質量管理體系,加強對生產過程的監控和檢測。同時,公司還積極開展員工培訓和質量意識教育,提升員工的品質意識和技能水平。這些措施有效地提升了產品品質和市場競爭力。
為了進一步拓展市場份額,達方電子開始在全球范圍內布局生產基地和研發中心。同時,公司加強了對供應鏈的管理,確保原材料的穩定供應和產品質量的持續提升。這一階段的努力,使達方電子在全球電子行業中的地位得到了進一步提升。
隨著5G技術的普及,EOZ S.A.S公司意識到這將為電子行業帶來革命性的變化。公司迅速調整戰略,將研發重心轉向5G相關技術和產品。通過與運營商合作,EOZ S.A.S成功推出了一系列基于5G技術的智能家居和物聯網產品,如智能音箱、智能門鎖等。這些產品憑借高速、低延遲的特點,滿足了消費者對智能家居的多樣化需求,進一步鞏固了公司在市場中的地位。
近年來,輝芒微積極籌備上市工作,旨在通過資本市場進一步拓展融資渠道和品牌影響力。盡管在上市過程中經歷了兩次撤回申請資料的波折,但公司始終保持著對資本市場的熱情和信心。通過不斷優化內部管理、提升產品競爭力和加強市場拓展,輝芒微最終贏得了市場的廣泛認可。其產品被廣泛應用于智能家居、生活電器、智能穿戴等領域,并與小米、飛科、中興等眾多知名品牌建立了長期穩定的合作關系。
在21世紀初,DRS接受了價值16億美元的合同,為美國陸軍和海軍陸戰隊的部隊現代化計劃制造加固式計算機。這一合同不僅展示了DRS在軍事領域的實力,也進一步鞏固了其在全球電子行業的地位。DRS提供的“探索者”MP加固式輕便多平臺工作站,為數字戰場提供了強大的支持。
隨著汽車、通用工程、液壓/氣動、珠寶和醫療設備等行業對高精度切削工具需求的增長,Horn公司不斷加大研發投入。公司成功開發出超硬切削材料如單晶金剛石(MCD)、多晶金剛石(PCD)和立方氮化硼(PCBN),這些材料的應用極大地提高了切削效率和加工精度。Horn公司的技術創新不僅滿足了市場對高質量刀具的需求,還推動了整個切削工具行業的進步。
全國大學生電子設計競賽是個很好的比賽,鍛煉了電子信息工程及其它相關專業的學生,鍛煉了他們的實際動手能力。發出“全國大學生電子設計競賽獲獎作品”,不管是初學者還是老鳥,大家都看看,希望能給予大家一定的幫助。 全國大學生電子 ...… 查看全部問答∨ |
|
一定要創建一個設別來過濾被調用者嗎?還是可以直接構造IRP發送給被調用者?用App來調用驅動B的IOCTL能很快返回,但是我用另一個驅動A來發送同樣的IOCTL調用驅動B,驅動B就進入wait for single object掛起了,這是什么原因呢?… 查看全部問答∨ |
|
在這里我看見唐勉MVP使用ADS調試6410的博客 http://blog.eeworld.net/nanjianhui/archive/2009/05/15/4189270.aspx 我以前用的2440 的jlink卻不行, 請問大家怎么使用jlink 調試6410的,有啥推薦,請回復,謝謝。 使用ADS+JLINK調試硬件比較方 ...… 查看全部問答∨ |
|
用VB寫的一個用來調試ISD系列語音芯片的小軟件,簡單易用,為您節省購買編程器/拷貝機的高昂費用。 配合錄音板可以實現:隨心所欲錄制語音信息,方便記錄語音段地址,隨時試聽等,是調試和開發ISD語音芯片的好工具。 連接好電源線、串口 ...… 查看全部問答∨ |
|
請問哪位大哥,我用EasyArm8962編寫了下面這個程序,想試著通過按鍵KEY1改變PWM的輸出方式,為什么我的GEN0能夠實現按鍵就正常翻轉,而GEN1輸出是翻轉了,但是幅值變得小的很多,現在糾結中。 #include "systemInit.h" #include&n ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 高通攜手中國“汽車朋友圈”亮相2025上海車展: 加速駕駛輔助普惠,推動艙駕創新升級
- 工業市場正在快速回暖,德州儀器如何重塑電力電子市場?
- 特斯拉:美國交付的Model Y/3電池包已實現100%美國生產
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產品
- 強化中國市場戰略布局,德州儀器正靈活應對全球關稅挑戰
- Molex莫仕通過本地合作和創新加強支持中國汽車行業
- 貿澤開售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實現車載充電器小型化!
- 用上車規級UFS 4.0,讓出行變得高效且可靠
- 車載測試技術解析:聚焦高帶寬、多通道同步采集與協議分析