富士通MB95F636H輸出PWM

富士通MB95F636H輸出PWM


終於畢業了,想想要不是畢設導師不讓我實習,我可能也不會進入這一行。還好之前做過一些競賽,所以逃脫導師魔爪後很快就找到了一份單片機的工作。

PWM

進入公司的第一個任務是做軟啓動,就是讓電機慢慢轉起來。學過單片機的可能馬上就能想到,這不就是單片機嗎!然後我就屁顛屁顛的去看這款富士通636H的數據手冊了。

PPG

手冊上說636H芯片使用PPG輸出PWM波。然後萬事找百度,好像只有富士通的單片機有PPG。。。好在官方給出了說明。

The 8/16-bit PPG is an 8-bit reload timer module that uses pulse output control based on timer operation to perform PPG output. The 8/16-bit PPG also operates in cascade (8 bits + 8 bits) as 16-bit PPG.

用我蹩腳的英語翻譯一下大概意思是,8位/ 16位PPG是一個8位重載定時器模塊,它使用基於定時器操作的脈衝輸出控制來執行PPG輸出。 8位/ 16位PPG也以16位PPG級聯(8位+ 8位)。

然後看他如何產生PWM,和一般產生PWM的方法是一樣的!

PPG生成PWM波

寄存器配置

這款單片機一共有3個通道,6個輸出,分別是PPG00、PPG01、PPG10、PPG11、PPG20、PPG21,下圖顯示了各個寄存器的功能。

各個寄存器功能

PPS寄存器用來配置PWM週期,PDS寄存器用來配置PWM的佔空比,即佔空比=PDS/PPS。PPGS和REVC的每一位都代表一個輸出,即bit0表示PPG00,bit1表示PPG01,以此類推。當PPGS對應的位爲1時啓動該輸出的計數,即開啓PWM模式。REVC表示輸出是否反相,對應位爲1則該輸出反相,否則不反相。

PC寄存器是最重要的寄存器。PCn1和PCn0的配置略有不同,畢竟PCn1是能成爲16位PPG高位的存在。

下圖是PCn1配置寄存器的各位功能,其中bit6和bit7無意義。

這裏寫圖片描述

下圖展示了PCn0的各個位的功能。

這裏寫圖片描述

配置好這些寄存器就能輸出PWM波了。

PC11 = 0x0b;
PPS11 = 100;
PDS11 = 20;
REVC_REV11 = 0;
PPGS_PEN11 = 1;

上述代碼就演示瞭如何利用PPG11輸出一個8分頻,佔空比爲20%的PWM波。
需要注意的是,636H提供了兩套引腳輸出PPG。對SYSC_PPGSEL進行配置。下圖顯示了不同的配置對應的引腳 。

不同配置對應的不同引腳

利用定時器產生PWM

雖然產生了PWM,用示波器看也沒問題,但是!驅動不了電機!看了原理圖,不知道是不是一段高電平,一段PWM所以無法驅動原因。可是板子都打好了,我又不能改引腳,怎麼辦。只能自己造PWM了啊。

其實自己造PWM很簡單,就是使用定時器,在定時器中翻轉點評就可以了,我寫了兩種方法。

第一種,定義一個短時間t的定時器,然後定義進入多少次定時器爲一個週期。比如定義100次爲一個週期,前20次輸出高電平,後80次輸出低電平,那麼該PWM的週期就爲100×t,佔空比爲20%。這種方法的優點是無需重複配置定時器,缺點是無法實現無級調節佔空比。

第二種,進入定時器中斷後輸出高電平,然後配置定時器時間,改變下一次進入定時器中斷的時間,下一次進入定時器中斷後輸出低電平,然後重新配置定時器時間。比如這一次進入定時器,先置高電平,然後配置定時器時間爲20ms,下一次進入定時器中斷後置低電平,然後配置80ms,這樣就能產生一個週期爲100ms,佔空比爲20%的PWM波了。這種方法的優點是能夠實現無級調節佔空比,缺點是每次都需要重新配置定時器,有些單片機在定時器運行過程中是無法更改定時器配置的。

經過測試,第一種方法能夠完美實現軟啓動的要求,第二種方法會使燈先亮,然後變暗再緩緩變亮,分析原因可能是發光二極管導通電壓比較大,而第一種方法一開始就輸出比較大的佔空比(5次中斷爲一週期,最低也有20%的佔空比),所以沒有這種現象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章