K60学习笔记(二)——FTM多功能定时器模块
FTM模塊全稱:FlexTimer Module
FTM是一個有2~8通道定時器,支持數據捕獲,輸出比較,輸出PWM波等功能。
一、FTM寄存器
在所學習K60芯片中,FTM只有三個模塊,即FTM0,FTM1,FTM2。
FTMx_SC(Status and Control)?? configure(配置)
SC包含溢出標志位和用于配置中斷使能的控制位。FTM配置,時鐘源和各種預先設定的都將直接影響這個模塊的所有通道。
FTMx_CNT(Counter) 計數初值寄存器
簡單說,就是記錄你從多少開始計數。
復位清零該CNT寄存器。任何對FTM計數器的寫入操作,都會復位計數器,計數器的值重新回到CNTIN指定值。也可以使用FTM的同步功能,讓計數器重新回到初值。各通道輸出也回到初始值。
當BDM有效,可讀取當前值。
FTMx_CnSC(Channel(n) Status and Control) (或寫為CSC寄存器)
CnSCH包含了通道中斷狀態標志和配置中斷使能、通道配置、引腳功能的位。
FTMx_CnV(Channel(n) Value) 通道值寄存器
這個寄存器包含了FTM計數值捕捉
當CNT計數值與當前通道寄存器中存儲的值相等時,PWM輸出由高電平改為低電平,直到下一個PWM周期來臨,成為高電平。
改變CnV的值,新的值并不會立即生效,而是到一個周期結束,FTM計數器從MOD變為CNTIN時,CnV值才生效。
FTMx_MOD(modulo register),模數寄存器
當FTM計數器達到設置的模數時,溢出標志位在下一個時鐘置1。
FTMx_MODE(Feature Mode Selection),模式選擇寄存器
FTMx_CNTIN(Counter Initial Value) 計數初值寄存器
FTMx_STATUS(Capture and Compare Status)
FTMx_SYNC(Synchronization)
例程:
void FTM_Init(void) { PORTA_PCR6=PORT_PCR_MUX(3);//設置引腳A6引腳為FTM0_CH3的功能 SIM_SCGC6|=SIM_SCGC6_FTM0_MASK;//使能FTM0時鐘 FTM0_MODE|=FTM_MODE_WPDIS_MASK;//寫保護禁止 FTM0_C3SC|=FTM_CnSC_ELSB_MASK; FTM0_C3SC&=~FTM_CnSC_ELSA_MASK; FTM0_C3SC|=FTM_CnSC_MSB_MASK; FTM0_SC=0x0C; FTM0_MODE&=~1; FTM0_OUTMASK=0xF7; FTM0_QDCTRL&=~FTM_QDCTRL_QUADEN_MASK; //禁止正交解碼模式 FTM0_COMBINE=0; //雙邊沿捕捉禁止,COMBINE=0; FTM0_CNTIN=0; FTM0_MOD=37499; FTM0_C3V=5265; FTM0_CNT=0; FTM0_C3SC|=FTM_CnSC_ELSA_MASK; FTM0_C3SC|=FTM }上述例程為總線時鐘60MHz,經過FTM分頻到3.75MHz,FTM遞增計數,周期10ms,高電平時間1.5ms。使用FTM0_CH3通道,由PAT6引腳輸出。
二、PWM產生
1、PWM產生原理
PWM周期=(MOD-CNTIN+1)x計數器周期
PWM占空比=(CnV-CNTIN)/PWM周期
計數器周期由SC決定,因為SC寄存器負責選擇時鐘源(系統時鐘、固定頻率時鐘以及外部時鐘),同時負責輸入頻率的分頻系數。
工作過程:
SC決定了當前FTM模塊時鐘頻率后,CNT寄存器從CNTIN中獲得計數初值,開始計數,直到計數到MOD寄存器中的值后停止,由此產生了一個PWM周期。
上述過程指導了PWM周期決定因素。而PWM作為脈沖,脈寬由CnV決定,當CNT計數器計數到CnV中的值時,PWM輸出由高電平變為低電平,直到CNT計數到MOD寄存器中的模值時,一個PWM周期結束,下個周期開始,PWM輸出又變為高電平。
FTM有多少個通道,就可以控制多少個不同的CnV,從而輸出多少個不同占空比的PWM。
2、PWM程序
以下部分摘自學習過程中閱讀的技術文檔。
39.1.2?? 特征
FTM模塊可以選擇時鐘。
正交解碼(Quadrature decoder)
39.3 存儲器映射和寄存器聲明
計算機最重要的功能單元之一是Memory。Memory是眾多存儲單元的集合,為了使CPU準確地找到存儲有某個信息的存儲單元,必須為這些單元分配一個相互區別的“身份證號”,這個“身份證號”就是地址編碼。在嵌入式處理器內,集成了多種類型的Memory,通常,我們稱同一類型的Memory為一個Memory Block。一般情況下,處理器設計者會為每一個Memory Block分配一個數值連續、數目與其存儲單元數相等、以16進制表示的自然數集合作為該Memory Block的地址編碼。這種自然數集合與Memory Block的對應關系,就是Memory Map(存儲器映射)。
該部分為FTM寄存器模塊提供了詳細的介紹。
39.3.1 Memory Map
參考資料:http://blog.csdn.net/u012802702/article/details/45560467?
總結
以上是生活随笔為你收集整理的K60学习笔记(二)——FTM多功能定时器模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ToString格式化
- 下一篇: leetcode 207课程表