日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

s5pv210——定时器理论与操作

發(fā)布時(shí)間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 s5pv210——定时器理论与操作 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

以下內(nèi)容源于朱有鵬《物聯(lián)網(wǎng)大講壇》課程的學(xué)習(xí),如有侵權(quán),請(qǐng)告知?jiǎng)h除。


一、定時(shí)器簡(jiǎn)介

1、定時(shí)器是SoC中常見(jiàn)外設(shè)

(1)定時(shí)器與計(jì)數(shù)器。

  • 計(jì)數(shù)器每隔一個(gè)固定時(shí)間會(huì)計(jì)一個(gè)數(shù);
  • 計(jì)數(shù)值 * 計(jì)數(shù)時(shí)間周期 = 一段時(shí)間。
  • 這個(gè)時(shí)間段就是我們定的時(shí)間。

(2)定時(shí)器/計(jì)數(shù)器作為SoC的外設(shè),主要用來(lái)實(shí)現(xiàn)定時(shí)執(zhí)行代碼的功能。

  • 定時(shí)器相對(duì)SoC而言,就像鬧鐘相對(duì)于人的意義一樣。

2、定時(shí)器作用

(1)通過(guò)定時(shí)器的計(jì)時(shí)功能,計(jì)時(shí)結(jié)束后,定時(shí)器會(huì)產(chǎn)生中斷提醒CPU。

  • 此時(shí)CPU會(huì)去處理中斷,并執(zhí)行定時(shí)器中斷的ISR,從而去執(zhí)行預(yù)先設(shè)定好的事件。

(2)定時(shí)器就好比CPU的秘書(shū),這個(gè)秘書(shū)專門(mén)用來(lái)計(jì)時(shí),并到時(shí)間后提醒CPU做某件事情。

3、定時(shí)器的原理

(1)定時(shí)器通過(guò)計(jì)數(shù)來(lái)實(shí)現(xiàn)定時(shí)。

  • 定時(shí)器內(nèi)部有一個(gè)計(jì)數(shù)器。
  • 計(jì)數(shù)器的時(shí)鐘,由ARM的APB總線時(shí)鐘,經(jīng)過(guò)時(shí)鐘模塊內(nèi)部的分頻器的分頻得到
  • 每隔一個(gè)時(shí)鐘周期,計(jì)數(shù)器就計(jì)數(shù)一次,定時(shí)器的時(shí)間就是計(jì)數(shù)器計(jì)數(shù)值×?xí)r鐘周期。
  • 定時(shí)器內(nèi)部有1個(gè)寄存器TCNT。
  • 計(jì)時(shí)開(kāi)始時(shí),把總的計(jì)數(shù)值放入TCNT寄存器中,然后每隔一個(gè)時(shí)鐘周期TCNT中的值會(huì)自動(dòng)減1(硬件自動(dòng)完成,不需要CPU軟件去干預(yù));
  • 直到TCNT中減為0的時(shí)候,TCNT就會(huì)觸發(fā)定時(shí)器中斷。

(2)由此可知,定時(shí)時(shí)間是由2個(gè)東西共同決定的:一個(gè)是TCNT中的計(jì)數(shù)值,一個(gè)是時(shí)鐘周期。

4、定時(shí)器和看門(mén)狗、RTC、蜂鳴器的關(guān)系

(1)這幾個(gè)東西都是和時(shí)間有關(guān)的部件。

(2)看門(mén)狗其實(shí)就是一個(gè)定時(shí)器,只不過(guò)定時(shí)時(shí)間到了之后不只是中斷,還可以復(fù)位CPU

(3)RTC是實(shí)時(shí)時(shí)鐘,它和定時(shí)器的差別就好象鬧鐘(定時(shí)器)和鐘表(RTC)的差別一樣。

(4)蜂鳴器是一個(gè)發(fā)聲設(shè)備,在ARM里面蜂鳴器是用定時(shí)器模塊來(lái)驅(qū)動(dòng)的。


二、S5PV210中的定時(shí)器

在S5PV210內(nèi)部,一共有4類(lèi)定時(shí)器件。這4類(lèi)定時(shí)器件的功能、特征是不同的。

1、PWM定時(shí)器

(1)這種是最常用的,平時(shí)所說(shuō)的定時(shí)器一般指的是這個(gè)。像簡(jiǎn)單單片機(jī)(譬如51單片機(jī))中的定時(shí)器也是這類(lèi)。

(2)為什么叫PWM定時(shí)器?因?yàn)橐话鉙oC中產(chǎn)生PWM信號(hào)都是靠這類(lèi)定時(shí)器器件的。

2、系統(tǒng)定時(shí)器

(1)系統(tǒng)(指的是操作系統(tǒng))定時(shí)器,也是用來(lái)產(chǎn)生固定時(shí)間間隔(TCNT×?xí)r鐘周期)信號(hào)的,稱為systick,這個(gè)systick用來(lái)給操作系統(tǒng)提供tick信號(hào)。

(2)產(chǎn)生systick作為操作系統(tǒng)的時(shí)間片(time slice)的。

(3)一般做操作系統(tǒng)移植的時(shí)候,這里不會(huì)由我們自己來(lái)做,一般原廠提供的基礎(chǔ)移植部分就已經(jīng)包含了,所以幾乎不需要研究。

3、看門(mén)狗定時(shí)器

(1)看門(mén)狗定時(shí)器本質(zhì)上也是一個(gè)定時(shí)器,和上面2個(gè)沒(méi)有任何本質(zhì)區(qū)別。

(2)看門(mén)狗定時(shí)器可以設(shè)置在時(shí)間到了的時(shí)候產(chǎn)生中斷,也可以選擇發(fā)出復(fù)位信號(hào)復(fù)位CPU。

(3)看門(mén)狗定時(shí)器在實(shí)踐中應(yīng)用很多,尤其是工業(yè)領(lǐng)域(環(huán)境復(fù)雜、干擾多)機(jī)器容易出問(wèn)題,而且出問(wèn)題后后果很?chē)?yán)重,此時(shí)一般都會(huì)用看門(mén)狗來(lái)進(jìn)行系統(tǒng)復(fù)位。

4、實(shí)時(shí)時(shí)鐘RTC(real time clock)

(1)區(qū)分時(shí)間段和時(shí)間點(diǎn)。

  • 時(shí)間段是相對(duì)的,兩個(gè)時(shí)間點(diǎn)相減就會(huì)得到一個(gè)時(shí)間段;
  • 時(shí)間點(diǎn)是絕對(duì)的,是絕無(wú)僅有的一個(gè)時(shí)間點(diǎn)。

(2)定時(shí)器關(guān)注的是時(shí)間段,定時(shí)器計(jì)時(shí)從開(kāi)啟定時(shí)器的那一刻開(kāi)始,到定的時(shí)間段結(jié)束為止產(chǎn)生中斷;而RTC中工作用的是時(shí)間點(diǎn)(xx年x月x日……)。

(3)RTC和定時(shí)器的區(qū)別,就相當(dāng)于是鐘表和鬧鐘的區(qū)別。



三、S5PV210的PWM定時(shí)器

1、為什么叫PWM定時(shí)器?

  • 本質(zhì)上是定時(shí)器;
  • 用來(lái)產(chǎn)生PWM波形。

2、PWM定時(shí)器介紹

(1)S5PV210有5個(gè)PWM定時(shí)器。

  • 其中0、1、2、3各自對(duì)應(yīng)一個(gè)外部GPIO,可以通過(guò)這些對(duì)應(yīng)的GPIO產(chǎn)生PWM波形信號(hào)并輸出;
  • Timer4沒(méi)有對(duì)應(yīng)的外部GPIO(它不是為了生成PWM波形而設(shè)計(jì)的,而是為了產(chǎn)生內(nèi)部定時(shí)器中斷而設(shè)計(jì)的);

(2)S5PV210的5個(gè)PWM定時(shí)器的時(shí)鐘源為PCLK_PSYS

  • timer0和timer1共同使用一個(gè)預(yù)分頻器,timer2、3、4共同使用一個(gè)預(yù)分頻器;
  • 每個(gè)timer有一個(gè)專用的獨(dú)立的分頻器;
  • 預(yù)分頻器和分頻器構(gòu)成了2級(jí)分頻系統(tǒng),將PCLK_PSYS兩級(jí)分頻后生成的時(shí)鐘供給timer模塊作為時(shí)鐘周期。

3、S5PV210的PWM定時(shí)器框圖簡(jiǎn)介

關(guān)鍵點(diǎn):時(shí)鐘源、預(yù)分頻器、分頻器、TCMPB&TCNTB、dead zone

(1)預(yù)分頻器與分頻器

  • 兩級(jí)分頻是串聯(lián)(級(jí)聯(lián))的,所以兩級(jí)分頻的分頻數(shù)是相乘的
  • 兩級(jí)分頻的分頻系數(shù)分別在TCFG0和TCFG1兩個(gè)寄存器中設(shè)置。
  • 預(yù)分頻器有2個(gè),prescaler0為timer0&timer1共用,prescaler1為timer2、3、4共用;
  • 兩個(gè)prescaler都是8個(gè)bit位,因此prescaler value范圍為0~255,因此預(yù)分頻器的分頻值范圍為1~256(注意實(shí)際分頻值為prescaler value + 1)。
  • 分頻器實(shí)質(zhì)上是一個(gè)MUX開(kāi)關(guān),多選一開(kāi)關(guān)決定了走哪個(gè)分頻系數(shù)路線。可以選擇的有1/1,1/2,1/4,1/8,1/16等。
  • 計(jì)算一下,兩級(jí)分頻下來(lái),分頻最小為1/1(也可能是1/2),最大分頻為1/256×16(1/4096)。
  • 在PCLK_PSYS為66MHz的情況下(默認(rèn)時(shí)鐘設(shè)置就是66MHz的),此時(shí)兩級(jí)分頻后的時(shí)鐘周期范圍為0.03us到62.061us;
  • 再結(jié)合TCNTB的值的設(shè)置(范圍為1~2的32次方),可知能定出來(lái)的時(shí)間最長(zhǎng)為266548.27s(折合74小時(shí)多,遠(yuǎn)遠(yuǎn)夠用)。

(2)TCNT&TCMP、TCNTB&TCMPB、TCNTO

  • TCNT和TCNTB是相對(duì)應(yīng)的;TCNTB是有地址的寄存器,供程序員操作;TCNT在內(nèi)部和TCNTB相對(duì)應(yīng),它沒(méi)有寄存器地址,程序員不能編程訪問(wèn)這個(gè)寄存器。
  • TCNT寄存器功能就是用來(lái)減1的,它是內(nèi)部的不能讀寫(xiě);我們向TCNT中寫(xiě)數(shù)值要通過(guò)TCNTB往進(jìn)寫(xiě),讀取TCNT寄存器中的值要通過(guò)讀取相對(duì)應(yīng)的TCNTO寄存器。
  • 工作流程:事先算好TCNT寄存器中開(kāi)始減的那個(gè)數(shù)(譬如300),然后將之寫(xiě)入TCNTB寄存器中,在啟動(dòng)timer前,將TCNTB中的值刷到TCNT寄存器中(有一位寄存器專門(mén)用來(lái)操作刷數(shù)據(jù)過(guò)去的),之后就可以啟動(dòng)定時(shí)器開(kāi)始計(jì)時(shí);在計(jì)時(shí)過(guò)程中如果想知道TCNT寄存器中的值減到多少了,可以讀取相應(yīng)的TCNTO寄存器。
  • 定時(shí)功能只需要TCNT、TCNTB兩個(gè)即可;TCNTO寄存器用來(lái)做一些捕獲計(jì)時(shí);TCMPB用來(lái)生成PWM波形。

4、自動(dòng)重載和雙緩沖(auto-reload and double buffering)

(1)定時(shí)器工作的時(shí)候,一次定時(shí)算一個(gè)工作循環(huán)。

  • 定時(shí)器默認(rèn)是單個(gè)循環(huán)工作的,也就是說(shuō)定時(shí)一次,計(jì)時(shí)一次,到期中斷一次就完了。下次如果還要再定時(shí)中斷,需要另外設(shè)置。
(2)現(xiàn)實(shí)中用定時(shí)器來(lái)做的時(shí)候往往是循環(huán)的

  • 可以寫(xiě)代碼反復(fù)重置定時(shí)器寄存器的值(在每次中斷處理的isr中再次給TCNTB中賦值,再次刷到TCNT中再次啟動(dòng)定時(shí)器),早期的單片機(jī)定時(shí)器就是這樣的;
  • 高級(jí)SoC中的定時(shí)器已經(jīng)默認(rèn)內(nèi)置這種循環(huán)定時(shí)工作模式,就叫自動(dòng)裝載(auto-reload)機(jī)制。

(3)自動(dòng)裝載機(jī)制就是當(dāng)定時(shí)器初始化好開(kāi)始計(jì)時(shí)后再不用管了,一個(gè)周期到了之后,自動(dòng)從TCNTB中再次裝載值到TCNT中,再次啟動(dòng)定時(shí)器開(kāi)始下個(gè)循環(huán)。

5、什么是PWM?

(1)PWM(pulse wide modulation,脈寬調(diào)制)

  • PWM波形是一個(gè)周期性波形,周期為T(mén),在每個(gè)周期內(nèi)波形是完全相同的。
  • 每個(gè)周期內(nèi)由一個(gè)高電平和一個(gè)低電平組成。
(2)PWM波形的2個(gè)重要參數(shù)

  • 一個(gè)是周期T,另一個(gè)是占空比duty(占空比就是一個(gè)周期內(nèi)高電平的時(shí)間除以周期時(shí)間的商)。

(3)PWM波形的用處

  • 譬如通信上用PWM來(lái)進(jìn)行脈寬調(diào)制對(duì)基波進(jìn)行載波調(diào)制;
  • 在發(fā)光二極管LED照明領(lǐng)域可以用PWM波形來(lái)調(diào)制電流進(jìn)行調(diào)光;
  • 用來(lái)驅(qū)動(dòng)蜂鳴器等設(shè)備。

6、PWM波形的生成原理

(1)早期的簡(jiǎn)單單片機(jī)里(譬如51單片機(jī))沒(méi)有專用的PWM定時(shí)器

  • 需要自己結(jié)合GPIO和定時(shí)器模塊來(lái)生產(chǎn)PWM波形;
  • 流程:先將GPIO引腳電平拉高,同時(shí)啟動(dòng)定時(shí)器定T*duty時(shí)間,時(shí)間到了在isr中將電平拉低,然后定時(shí)T*(1-duty)后再次啟動(dòng)定時(shí)器,然后時(shí)間到了后在isr中將電平拉高,然后再定時(shí)T*duty時(shí)間再次啟動(dòng)定時(shí)器……

(2)因?yàn)槎〞r(shí)器經(jīng)常和PWM的產(chǎn)生有關(guān),所以設(shè)計(jì)SoC的時(shí)候就直接把定時(shí)器和一個(gè)GPIO引腳內(nèi)部綁定起來(lái)

  • 然后在定時(shí)器內(nèi)部給設(shè)置了PWM產(chǎn)生的機(jī)制,可以更方便的利用定時(shí)器產(chǎn)生PWM波形。
  • 利用PWM定時(shí)器來(lái)產(chǎn)生PWM波形時(shí),就可以不用中斷,而是直接生成PWM。
  • 綁定之后壞處就是GPIO引腳是固定的、死板的、不能隨便換的。
(3)在S5PV210中,PWM波形產(chǎn)生有2個(gè)寄存器很關(guān)鍵,一個(gè)是TCNTB、一個(gè)是TCMPB。

  • TCNTB決定PWM波形的周期,TCMPB決定PWM波形的占空比。
  • 最終生成的PWM波形的周期是:TCNTB×?xí)r鐘周期(PCLK_PSYS經(jīng)過(guò)兩極分頻后得到的時(shí)鐘周期)。
  • 最終生成的PWM波形的占空比是:TCMPB/TCNTB

7、輸出電平翻轉(zhuǎn)器

(1)PWM定時(shí)器可以規(guī)定:當(dāng)TCNT>TCMPB時(shí)為高電平,當(dāng)TCNT<TCMPB時(shí)為低電平。也可以規(guī)定:當(dāng)TCNT>TCMPB時(shí)為低電平,當(dāng)TCNT<TCMPB時(shí)為高電平。在這兩種規(guī)定下,計(jì)算時(shí)TCMP寄存器的值會(huì)變化。

(2)基于上面講的,當(dāng)duty從30%變到70%時(shí),我們TCMPB寄存器中的值就要改(譬如TCNTB中是300時(shí),TCMPB就要從210變化到90)。這樣的改變可以滿足需要,但是計(jì)算有點(diǎn)麻煩。于是乎210的PWM定時(shí)器幫我們提供了一個(gè)友好的工具叫做電平翻轉(zhuǎn)器。

(3)電平翻轉(zhuǎn)器在電路上的實(shí)質(zhì)就是一個(gè)電平取反的部件,在編程上反映為一個(gè)寄存器位。寫(xiě)0就關(guān)閉輸出電平反轉(zhuǎn),寫(xiě)1就開(kāi)啟輸出電平反轉(zhuǎn)。開(kāi)啟后和開(kāi)啟前輸出電平剛好高低反轉(zhuǎn)。(輸出電平一反轉(zhuǎn)30%的duty就變成70%了)

(4)實(shí)戰(zhàn)中到底是TCNT和TCMPB誰(shuí)大誰(shuí)小時(shí)高電平還是低電平,一般不用理論分析,只要寫(xiě)個(gè)代碼然后用示波器實(shí)際看一下出來(lái)的波形就知道了;如果反了就直接開(kāi)啟電平翻轉(zhuǎn)器即可。

8、死區(qū)生成器

(1)PWM有一個(gè)應(yīng)用就是用在功率電路中用來(lái)對(duì)交流電壓進(jìn)行整流。整流時(shí)2路整流分別在正電平和負(fù)電平時(shí)導(dǎo)通工作,不能同時(shí)導(dǎo)通(同時(shí)導(dǎo)通會(huì)直接短路,瞬間的同時(shí)導(dǎo)通都會(huì)導(dǎo)致電路燒毀)。大功率的開(kāi)關(guān)電源、逆變器等設(shè)備廣泛使用了整流技術(shù)。特別是逆變器,用SoC的GPIO輸出的PWM波形來(lái)分別驅(qū)動(dòng)2路整流的IGBT。

(2)PWM波形用來(lái)做整理時(shí)要求不能同時(shí)高或低,因?yàn)闀?huì)短路。但是實(shí)際電路是不理想的,不可能同時(shí)上升/下降沿,所以比較安全的做法是留死區(qū)。

(3)死區(qū)這東西離不了也多不了。死區(qū)少了容易短路,死區(qū)多了控制精度低了不利于產(chǎn)品性能的提升。

(4)S5PV210給大家提供了自帶的死區(qū)生成器,只要開(kāi)啟死區(qū)生成器,生產(chǎn)出來(lái)的PWM波形就自帶了死區(qū)控制功能,用戶不用再自己去操心死區(qū)問(wèn)題。

(5)大部分人工作是用不到這個(gè)的,直接關(guān)掉死區(qū)生成器即可。



四、蜂鳴器和PWM定時(shí)器編程實(shí)踐

1、蜂鳴器的工作原理

(1)蜂鳴器里面有2個(gè)金屬片,離的很緊但沒(méi)挨著;沒(méi)電的時(shí)候兩個(gè)片在彈簧本身張力作用下分開(kāi)彼此平行;有電的時(shí)候兩邊分別充電,在異性電荷的吸力作用下兩個(gè)片挨著;

(2)我們只要以快速的頻率給蜂鳴器的正負(fù)極:供電、斷電。進(jìn)行這樣的循環(huán),蜂鳴器的兩個(gè)彈簧片就會(huì)挨著分開(kāi)挨著分開(kāi)……,從而敲擊發(fā)出聲音。

(3)因?yàn)槿说亩淠苈?tīng)見(jiàn)的聲音頻率有限制(20Hz-20000Hz),我們做實(shí)驗(yàn)時(shí)一般給個(gè)2KHz的頻率。

(4)頻率高低會(huì)影響聲音的音頻,一般是音頻越低聲音聽(tīng)起來(lái)越低沉、音頻越高聽(tīng)起來(lái)越尖銳。

(5)只要用PWM波形的電壓信號(hào)來(lái)驅(qū)動(dòng)蜂鳴器,把PWM波形的周期T設(shè)置為要發(fā)出的聲音信號(hào)的1/頻率即可;PWM的占空比只要確保能驅(qū)動(dòng)蜂鳴器即可(驅(qū)動(dòng)能力問(wèn)題,一般引腳驅(qū)動(dòng)能力都不夠,所以蜂鳴器會(huì)額外用三極管來(lái)放大流來(lái)供電)。

2、原理圖和硬件信息

(1)查閱原理圖可知,開(kāi)發(fā)板底板上的蜂鳴器通過(guò)GPD0_2(XpwmTOUT2)引腳連接在SoC上。

(2)GPD0_2引腳通過(guò)限流電阻接在三極管基極上,引腳有電蜂鳴器就會(huì)有電(三極管導(dǎo)通);引腳沒(méi)電蜂鳴器就會(huì)沒(méi)電(三極管關(guān)閉)。這些都是硬件問(wèn)題,軟件工程師不用管,軟件工程師只要寫(xiě)程序控制GPD0_2引腳的電平產(chǎn)生PWM波形即可。

(3)GPD0CON(0xE02000A0),要把bit8~bit11設(shè)置為0b0010(功能選擇為T(mén)OUT_2,就是把這個(gè)引腳設(shè)置為PWM輸出功能)。

(4)從GPD0_2引腳可以反推出使用的是timer2這個(gè)PWM定時(shí)器。

3、PWM定時(shí)器的主要寄存器詳解

相關(guān)的寄存器有TCFG0、TCFG1、CON、TCNTB2、TCMPB2、TCNTO2

4、蜂鳴器和PWM定時(shí)器編程實(shí)踐

(1)基于uart_stdio項(xiàng)目源碼來(lái)添加PWM定時(shí)器驅(qū)動(dòng)蜂鳴器實(shí)驗(yàn);

(2)PWM定時(shí)器來(lái)產(chǎn)生PWM波形時(shí)是不需要中斷干預(yù)的。



五、看門(mén)狗定時(shí)器

1、什么是看門(mén)狗、有什么用?

(1)看門(mén)狗定時(shí)器和普通的定時(shí)器并無(wú)本質(zhì)區(qū)別。定時(shí)器可以設(shè)定一個(gè)時(shí)間,在這個(gè)時(shí)間完成之前定時(shí)器不斷計(jì)時(shí),時(shí)間到的時(shí)候定時(shí)器會(huì)復(fù)位CPU(重啟系統(tǒng))。

(2)系統(tǒng)正常工作的時(shí)候當(dāng)然不希望被重啟,但是系統(tǒng)受到干擾、極端環(huán)境等可能會(huì)產(chǎn)生異常工作或者不工作,這種狀態(tài)可能會(huì)造成不良影響(至少是不工作),此時(shí)解決方案就是重啟系統(tǒng)。

(3)普通設(shè)備重啟不是問(wèn)題,但是有些設(shè)備人工重啟存在困難。這時(shí)候我們希望系統(tǒng)能夠自己檢驗(yàn)自己是否已經(jīng)跑飛,并且在意識(shí)到自己跑飛的時(shí)候,可以很快的(幾個(gè)ms或者更短)自我重啟。這個(gè)功能就要靠看門(mén)狗定時(shí)器來(lái)實(shí)現(xiàn)。

(4)典型應(yīng)用的情景是:我們?cè)趹?yīng)用程序中打開(kāi)看門(mén)狗設(shè)備,初始化好給它一個(gè)時(shí)間,然后應(yīng)用程序使用一個(gè)線程來(lái)喂狗,這個(gè)線程的執(zhí)行時(shí)間安全短于看門(mén)狗的復(fù)位時(shí)間。當(dāng)系統(tǒng)(或者應(yīng)用程序)異常后,喂狗線程自然就不工作了,然后到時(shí)候看門(mén)狗就會(huì)復(fù)位。

(5)補(bǔ)充:實(shí)戰(zhàn)中有時(shí)候?yàn)榱私^對(duì)的可靠,我們并不會(huì)用SoC中自帶的看門(mén)狗,而是使用專門(mén)的外置的看門(mén)狗芯片來(lái)實(shí)現(xiàn)看門(mén)狗。

2、S5PV210看門(mén)狗定時(shí)器的結(jié)構(gòu)框圖

(1)PCLK_PSYS經(jīng)過(guò)兩級(jí)分頻后生成WDT(watchdog timer)的時(shí)鐘周期,然后把要定的時(shí)間寫(xiě)到WTDAT寄存器中,刷到WTCNT寄存器中去減1,減到0時(shí)(定時(shí)時(shí)間到)產(chǎn)生復(fù)位信號(hào)或中斷信號(hào)。

(2)典型應(yīng)用中是配置為產(chǎn)生復(fù)位信號(hào),我們應(yīng)該在WTCNT寄存器減到0之前給WTDAT寄存器中重新寫(xiě)值以喂狗。

3、看門(mén)狗定時(shí)器的主要寄存器

WTCON WTDAT WTCNT WTCLRINT

4、看門(mén)狗定時(shí)器的編程實(shí)踐

(1)產(chǎn)生中斷信號(hào)

(2)產(chǎn)生復(fù)位信號(hào)

六、實(shí)時(shí)時(shí)鐘RTC

1、何為實(shí)時(shí)時(shí)鐘?

(1)real time clock,真實(shí)時(shí)間,即xx年x月x日x時(shí)x分x秒;

(2)RTC是SoC中一個(gè)內(nèi)部外設(shè),擁有獨(dú)立的晶振提供RTC時(shí)鐘源(32.768KHz),內(nèi)部有一些寄存器用來(lái)記錄時(shí)間(年月日時(shí)分秒星期)。

  • 一般情況下為了在系統(tǒng)關(guān)機(jī)時(shí)時(shí)間仍然在走,還會(huì)給RTC提供一個(gè)電池供電。

2、S5PV210實(shí)時(shí)時(shí)鐘的結(jié)構(gòu)框圖

(1)時(shí)間寄存器7個(gè);

(2)鬧鐘發(fā)生器;

3、鬧鐘發(fā)生器

(1)可以定鬧鐘時(shí)間,到時(shí)間會(huì)產(chǎn)生RTC alarm interrupt,通知系統(tǒng)鬧鐘定時(shí)到了。

(2)鬧鐘定時(shí)是定的時(shí)間點(diǎn),而timer定時(shí)是定的時(shí)間段。

4、S5PV210實(shí)時(shí)時(shí)鐘的主要寄存器

(1)INTP,中斷掛起寄存器

(2)RTCCONRTC控制寄存器

(3)RTCALM ALMxxx鬧鐘功能有關(guān)的寄存器

(4)BCDxxx,時(shí)間寄存器

5、BCD碼

(1)RTC中所有的時(shí)間(年月日時(shí)分秒星期,包括鬧鐘)都是用BCD碼編碼的。

(2)BCD碼本質(zhì)上是對(duì)數(shù)字的一種編碼,用4位二進(jìn)制數(shù)表示1位十進(jìn)制數(shù)字,比如十進(jìn)制的56被編碼成0x56。

(3)BCD碼的作用

  • 將十進(jìn)制數(shù)拆成組成這個(gè)十進(jìn)制數(shù)的各個(gè)數(shù)字的編碼,變成編碼后就沒(méi)有位數(shù)的限制了。
  • 譬如123456789123456789,如果這個(gè)數(shù)純粹當(dāng)數(shù)字肯定超出了int的范圍,計(jì)算機(jī)無(wú)法直接處理。
  • 想讓計(jì)算機(jī)處理這個(gè)數(shù),計(jì)算機(jī)首先得能表達(dá)這個(gè)數(shù),表達(dá)的方式就是先把這個(gè)數(shù)轉(zhuǎn)成對(duì)應(yīng)的BCD碼(123456789123456789)。

(4)BCD碼在計(jì)算機(jī)中可以用十六進(jìn)制的形式來(lái)表示。也就是說(shuō)十進(jìn)制的56轉(zhuǎn)成BCD碼后是0x56,在計(jì)算機(jī)中用0x56來(lái)表達(dá)(暫時(shí)存儲(chǔ)與運(yùn)算)。

(5)需要寫(xiě)2個(gè)函數(shù),一個(gè)是bcd轉(zhuǎn)十進(jìn)制,一個(gè)是十進(jìn)制轉(zhuǎn)bcd。

  • 當(dāng)要設(shè)置時(shí)間的時(shí)候(譬如要設(shè)置為23分),需要將這個(gè)23轉(zhuǎn)成0x23,然后再賦值給相應(yīng)的寄存器BCDMIN;
  • 當(dāng)從寄存器BCDMIN中讀取一個(gè)時(shí)間時(shí)(譬如讀取到的是0x59),需要轉(zhuǎn)成十進(jìn)制再去顯示(0x59當(dāng)作BCD碼就是59,轉(zhuǎn)成十進(jìn)制就是59,所以顯示就是59分)。

七、RTC實(shí)戰(zhàn)

1、設(shè)置時(shí)間與讀取顯示時(shí)間

(1)為了安全,默認(rèn)情況下RTC讀寫(xiě)是禁止的,此時(shí)讀寫(xiě)RTC的時(shí)間是不允許的;當(dāng)我們要更改RTC時(shí)間時(shí),應(yīng)該先打開(kāi)RTC的讀寫(xiě)開(kāi)關(guān),然后再進(jìn)行讀寫(xiě)操作,操作完了后立即關(guān)閉讀寫(xiě)開(kāi)關(guān)。

(2)讀寫(xiě)RTC寄存器時(shí),一定要注意BCD碼和十進(jìn)制之間的轉(zhuǎn)換。

(3)年的問(wèn)題。

  • BCDYEAR寄存器存的并不是完整的年數(shù),而是基于2000年的偏移量來(lái)存儲(chǔ)的;
  • 譬如今年2015年,實(shí)際存的就是15(2015-2000);
  • 還有些RTC芯片是以1970年為基點(diǎn)的。

2、鬧鐘實(shí)驗(yàn)














總結(jié)

以上是生活随笔為你收集整理的s5pv210——定时器理论与操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。