浅析嵌入式系统之uboot详解(5.3)—PWM定时器(番外)
bootloader詳解目錄—廢鐵是怎么產生價值的
淺析嵌入式系統之uboot詳解(1)—板子上電后uboot做了什么
淺析嵌入式系統之uboot詳解(2)—CPU工作模式
淺析嵌入式系統之uboot詳解(3)—看門狗
淺析嵌入式系統之uboot詳解(4.1)—內部中斷
淺析嵌入式系統之uboot詳解(4.2)—外部中斷(GPIO)
淺析嵌入式系統之uboot詳解(4.3)—異常和異常向量
淺析嵌入式系統之uboot詳解(5.1)—時鐘分頻
淺析嵌入式系統之uboot詳解(5.2)—省電模式(番外)
淺析嵌入式系統之uboot詳解(5.3)—PWM定時器(番外)
淺析嵌入式系統之uboot詳解(6)—關閉緩存和mmu
淺析嵌入式系統之uboot詳解(7)—初始化SDRAM
uboot詳解—PWM定時器(番外)
- 1. 前言
- 2. PWM定時器
- 2.1 概述
- 2.2 實例
- 3. 小結
1. 前言
??這篇文章是一些拓展內容,如果想了解uboot的啟動過程,可以先跳過本章,如果需要掌握一些編寫裸機程序或者內核與計時器相關的驅動的知識,可以了解一下。
2. PWM定時器
2.1 概述
??脈沖寬度調制(PWM),是英文“Pulse Width Modulation”的縮寫,簡稱脈寬調制,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在測量、通信到功率控制與變換的許多領域中——百科上如是說,科學語言總是這樣的嚴謹卻又不好理解,這里用草根語言解釋一下:PWM是改變輸出波形的一種方法,包括改變波形的頻率和占空比。
??模擬信號的值可以連續變化,其時間和幅度的分辨率都沒有限制。9V電池就是一種模擬器件,因為它的輸出電壓并不精確地等于9V,而是隨時間發生變化,并可取任何實數值。與此類似,從電池吸收的電流也不限定在一組可能的取值范圍之內。模擬信號與數字信號的區別在于后者的取值通常只能屬于預先確定的可能取值集合之內,例如在{0V, 5V}這一集合中取值。
??模擬電壓和電流可直接用來進行控制,如對汽車收音機的音量進行控制。在簡單的模擬收音機中,音量旋鈕被連接到一個可變電阻。擰動旋鈕時,電阻值變大或變小;流經這個電阻的電流也隨之增加或減少,從而改變了驅動揚聲器的電流值,使音量相應變大或變小。與收音機一樣,模擬電路的輸出與輸入成線性比例。
??盡管模擬控制看起來可能直觀而簡單,但它并不總是非常經濟或可行的。其中一點就是,模擬電路容易隨時間漂移,因而難以調節。能夠解決這個問題的精密模擬電路可能非常龐大、笨重(如老式的家庭立體聲設備)和昂貴。模擬電路還有可能嚴重發熱,其功耗相對于工作元件兩端電壓與電流的乘積成正比。模擬電路還可能對噪聲很敏感,任何擾動或噪聲都肯定會改變電流值的大小。
??通過以數字方式控制模擬電路,可以大幅度降低系統的成本和功耗。此外,許多微控制器和DSP已經在芯片上包含了PWM控制器,這使數字控制的實現變得更加容易。
??總的來說,數字信號的波形比模擬信號的波形規則穩定,而且方便便宜,便于操作,可以用pwm控制器進行管理,比如我們人眼對光比聲音敏感,也許可以用模擬電路產生的時鐘來驅動音頻,但是用來驅動顯示器是不好的,稍微有點偏差就會影響我們的觀看質量。
??我們知道,模擬電路中的波形常常是正弦形式的,有波峰有波谷,但是數字電路中的波形常常是鋸齒形式的,有高電平有低電平,所以一個波形的上升沿到下一個波形的上升沿這段區間就是一個周期,然而這中間的下降沿的位置就決定了該波的占空比,這個下降沿可能位一一個波的中間,也可能位于一個波的前三分之一的位置,芯片中的pwm就是用編程的方式來改變這兩個量的。
2.2 實例
??下面將分析怎么使用s3c2440的pwm產生想要的時鐘。
??s3c2440有5個16比特的計時器,0,1,2,4具有pwm功能,但是4沒有輸出引腳,用作內部時鐘,計時器0有死區發生器,用于大電流的設備。
??計時器0和1共用一個8比特的預分頻器,計時器2,3,4共用另外一個8位的預分頻器,每一個計時器有一個時鐘除法器,可以分出5種不同等分的時鐘信號(1/2,1/4,1/8,1/16和TCLK),每一個定時器從相應的除法器得到自己的時鐘信號,這個8位的預分頻器是可編程的,它可以將PCLK進行分頻,具體分頻的值可以通過設置TCFG0和TCFG1來完成。
??定時計數緩沖寄存器(TCNTBn)包含了一個當使能了定時器時的被加載到遞減計數器中的初始值。
??定時比較緩沖寄存器(TCMPBn)包含了一個被加載到比較寄存器中的與遞減計數器相比較的初始值。這種 TCNTBn 和CMPBn的雙緩沖特征保證了改變頻率和占空比時定時器產生穩定的輸出。
??每個定時器有它自己的由定時器時鐘驅動的 16 位遞減計數器。當遞減計數器到達零時,產生定時器中斷請求通知CPU定時器操作已經完成。當定時器計數器到達零時,相應的TCNTBn的值將自動被加載到遞減計數器以繼續下一次操作。然而,如果定時器停止了,例如,在定時器運行模式期間清除 TCONn 的定時器使能位,TCNTBn的值將不會被重新加載到計數器中。
??TCMPBn的值是用于脈寬調制(PWM)。當遞減計數器的值與定時器控制邏輯中的比較寄存器的值相匹配時定時器控制邏輯改變輸出電平。因此,比較寄存器決定PWM輸出的開啟時間(或關閉時間)。
定時器專用寄存器有6種共17個寄存器
- TCFG0 配置寄存器0
- TCFG1 配置寄存器1
- TCON 控制寄存器
- TCNTBn 計數初值寄存器(5個)
- TCMPBn 比較寄存器(4個)
- TCNTOn 觀察寄存器(5個)
從上圖可以看出,要配置一個定時器,必須要配置下面這些寄存器:
TCON(定時器控制寄存器):這個寄存器是用來配置每個寄存器的工作模式的,包括自動加載,手動配置或者死區等
TCFG0(定時器配置寄存0):這個寄存器是用來配置prescaler的,設置prescaler0預分頻的大小是0 ~ 7bit,最大值是255,16 ~ 23bit用來設置死區的長度
TCFG1(定時器配置寄存1):這個寄存器用來配置clock divider,包括設置哪個除數和DMA模式選擇
TCMPB和TCNTB:用來設置比較寄存器和計數初值寄存器
TCNTOn: 觀察寄存器
設置完這些寄存器以后,就可以在對應的輸出口上獲取到想要的波形了
3. 小結
??關于pwm定時器和實時時鐘用途雖然比較廣泛,但是在uboot的啟動過程卻影響不大,這里只是概述一下。
總結
以上是生活随笔為你收集整理的浅析嵌入式系统之uboot详解(5.3)—PWM定时器(番外)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 巨量千川投放新手必备知识点
- 下一篇: mac系统下载nvm管理node版本