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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

S32K144(12)FTM

發(fā)布時間:2023/12/16 编程问答 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 S32K144(12)FTM 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

PWM和輸出比較的區(qū)別

輸出比較模式下:

PWM模式:?頻率和占空比可以任意設(shè)置,起始相位不能設(shè)置。?CNT < CCR時輸出一種電平,CNT > CCR時輸出相反的電平。

輸出比較模式:頻率和起始相位可以任意設(shè)置,占空比不能設(shè)置。輸出頻率為理論計算值一半。 CCR = CNT 時,翻轉(zhuǎn)輸出電平。

1、簡介

開發(fā)板S32K144+S32DS+JLINK,裸機(jī)版的程序編寫

FlexTimer模塊(FTM)是一個2 - 8通道計時器,支持輸入捕獲,輸出比較,并產(chǎn)生PWM信號來控制電機(jī)和電源

特點(diǎn):

  • 時鐘源可選擇:
  • 源時鐘可以是FTM輸入時鐘、固定頻率時鐘或外部時鐘時鐘源
  • 固定頻率時鐘是允許選擇on的額外時鐘輸入芯片時鐘源以外的FTM輸入時鐘
  • 選擇外部時鐘將FTM時鐘連接到一個芯片電平輸入引腳,允許FTM計數(shù)器與芯片外時鐘源同步
  • 預(yù)分頻器除以1、2、4、8、16、32、64或128
  • 16位計數(shù)器:
  • 它可以是一個自由運(yùn)行的計數(shù)器或計數(shù)器的初始值和最終值,
  • 計數(shù)可以向上或向下
  • PWM模式每個通道可以配置為輸入捕獲,輸出比較,或邊緣對齊
  • 輸入捕獲模式下:
  • 捕捉可以發(fā)生在上升邊緣、下降邊緣或兩個邊緣

  • 可以為一些通道選擇一個輸入過濾器。一個獨(dú)特的分頻器是適用于所有過濾器

  • 在輸出比較模式下,輸出信號可以設(shè)置,清除,或翻轉(zhuǎn)

  • 所有通道都可以配置為中央對齊PWM模式

  • 每對通道可以組合起來產(chǎn)生一個PWM信號,并對PWM信號的兩個邊緣進(jìn)行獨(dú)立控制

  • FTM通道可以作為具有相等輸出的成對、具有互補(bǔ)輸出的成對或具有獨(dú)立輸出的獨(dú)立通道來工作

  • 死區(qū)時間插入可用互補(bǔ)對

  • 生成匹配觸發(fā)器

  • PWM輸出軟件控制

  • 多達(dá)4個故障輸入,用于全局故障控制

  • 每個通道的極性是可配置的

  • 每個通道產(chǎn)生一個中斷

  • 當(dāng)計數(shù)器溢出時產(chǎn)生中斷

  • 當(dāng)檢測到故障條件時,中斷的產(chǎn)生

  • 當(dāng)寄存器重新加載點(diǎn)發(fā)生時,中斷的產(chǎn)生

  • 寫入緩沖FTM寄存器的同步加載

  • 半周和全周期寄存器的重新加載能力

  • 關(guān)鍵寄存器的寫保護(hù)

  • 向后兼容TPM

  • 測試輸入捕獲模式

  • 直接訪問輸入引腳狀態(tài)

  • 用于脈沖和周期寬度測量的雙邊緣捕捉

  • 正交解碼器與輸入濾波器,相對位置計數(shù),和中斷位置計數(shù)或捕捉位置取決于外部事件

  • 可以選擇FTM通道在通道輸出上產(chǎn)生觸發(fā)脈沖而不是PWM

  • 抖動能力,以模擬精細(xì)邊緣控制的PWM周期或PWM工作周期

  • 2、原理圖

    3、寄存器

    3.1、SC: Status And Control

    SC包含溢出狀態(tài)標(biāo)志和控制位,用于配置中斷啟用、FTM配置、時鐘源、濾波器預(yù)分頻器和預(yù)分頻器因子。此寄存器還包含輸出啟用控制位和重新加載機(jī)會標(biāo)志控制。這些控件與此模塊內(nèi)的所有通道相關(guān)。

    Field

    Name

    Description

    0-2

    PS

    預(yù)分頻: 1-128

    3-4

    CLKS

    時鐘源選擇

    5

    CPWMS

    配置計數(shù)模式

    6

    RIE

    重載標(biāo)志

    7

    RF

    定時器溢出中斷你使能

    8

    TOIE

    定時器溢出標(biāo)志

    9

    TOF

    時鐘引腳使能

    16-23

    PWMENn

    通道nPWM使能

    24-27

    FLTPS

    濾波器預(yù)分頻

    3.2、CNT: Counter

    Field

    Name

    Description

    0-15

    COUNT

    計數(shù)器的值

    3.3、MOD: Modulo

    模寄存器包含F(xiàn)TM計數(shù)器的模值。當(dāng)FTM計數(shù)器達(dá)到模值后,溢出標(biāo)志(TOF)在下一個時鐘周期設(shè)置,FTM計數(shù)器的下一個值取決于所選的計數(shù)方法

    Field

    Name

    Description

    0-15

    MOD

    模值

    3.4、C0SC - C7SC: Channel (n) Status And Control

    CnSC包含通道(n)狀態(tài)位和選擇通道(n)模式的控制位和它的功能

    Field

    Name

    Description

    0

    DMA

    DMA使能

    1

    ICRST

    輸入捕獲事件復(fù)位FTM計數(shù)器選擇

    2

    ELSA

    通道(n)邊緣或水平選擇

    3

    ELSB

    通道(n)邊緣或水平選擇

    4

    MSA

    通道(n)模式選擇

    5

    MSB

    通道(n)模式選擇

    6

    CHE

    通道(n)中斷使能

    7

    CHIF

    通道(n)事件標(biāo)志

    8

    TRIGMODE

    觸發(fā)模式控制

    9

    CHIS

    通道(n)輸入狀態(tài)

    10

    CHOV

    通道(n)輸出值

    3.5、C0V - C7V: Channel (n) Value

    Field

    Name

    Description

    0-15

    VAL

    通道值

    捕獲的輸入模式的FTM計數(shù)器值或輸出模式的匹配值

    3.6、CNTIN: Counter Initial Value

    Field

    Name

    Description

    0-15

    INIT

    FTM計數(shù)器初始化值

    3.7、STATUS: Capture And Compare Status

    Field

    Name

    Description

    0-7

    CHnF

    通道事件標(biāo)志

    3.8、MODE: Features Mode Selection

    Field

    Name

    Description

    0

    FTMEN

    FTM使能

    1

    INIT

    初始化通道輸出

    2

    WPDIS

    寫保護(hù)禁用

    3

    PWMSYNC

    PWM同步模式

    4

    CAPTEST

    捕獲測試模式使能

    5-6

    FAULTM

    故障控制模式

    7

    FAULTIE

    故障中斷使能

    3.9、SYNC: Synchronization

    Field

    Name

    Description

    0

    CNTMIN

    最小加載點(diǎn)啟用

    1

    CNTMAX

    最大加載點(diǎn)啟用

    2

    REINIT

    同步FTM計數(shù)器重新初始化

    3

    SYNCHOM

    輸出掩碼同步

    4

    TGIG0

    PWM同步硬件觸發(fā)0

    5

    TGIG1

    PWM同步硬件觸發(fā)1

    6

    TGIG2

    PWM同步硬件觸發(fā)2

    7

    SWSYNC

    PWM同步軟件觸發(fā)器

    3.10、OUTINIT: Initial State For Channels Output

    Field

    Name

    Description

    0-7

    CHnOI

    通道n輸出初始值

    3.11、OUTMASK: Output Mask

    Field

    Name

    Description

    0-7

    CHnOM

    通道n輸出掩碼

    3.12、COMBINE: Function For Linked Channels

    Field

    Name

    Description

    0

    COMBINE0

    合并通道,用于通道(n)和(n+1)的組合模式的選擇

    1

    COMP0

    通道(n)的補(bǔ)碼

    2

    DECAPEN0

    啟用雙邊緣捕獲模式

    3

    DECAP0

    雙邊捕獲模式捕獲

    4

    DTEN0

    死區(qū)時間啟用

    5

    SYNCEN0

    啟用同步

    6

    FAULTEN0

    故障控制使能

    7

    MCOMBINE0

    修改合并模式

    依次有1-3,總共0-3,0模式已寫

    3.13、DEADTIME: Deadtime Configuration ?????

    這個寄存器選擇死區(qū)時間的分頻器和值

    Field

    Name

    Description

    0-5

    DTVAL

    死區(qū)時間值

    6-7

    DTPS

    死區(qū)時間分頻值

    16-19

    DTVALEX

    擴(kuò)展死區(qū)時間值

    3.14、EXTTRIG: FTM External Trigger

    外部觸發(fā)器產(chǎn)生的時間,當(dāng)FTM計數(shù)器等于其初始值時,使能生成觸發(fā)器,選擇在外部觸發(fā)器的生成中使用的通道

    Field

    Name

    Description

    0

    CH2TRIG

    通道2外部觸發(fā)啟用

    1

    CH3TRIG

    通道3外部觸發(fā)啟用

    2

    CH4TRIG

    通道4外部觸發(fā)啟用

    3

    CH5TRIG

    通道5外部觸發(fā)啟用

    4

    CH0TRIG

    通道0外部觸發(fā)啟用

    5

    CH1TRIG

    通道1外部觸發(fā)啟用

    6

    INITTRIGEN

    初始化觸發(fā)使能

    7

    TRIGF

    通道觸發(fā)器標(biāo)志

    8

    CH6TRIG

    通道6外部觸發(fā)啟用

    9

    CH7TRIG

    通道7外部觸發(fā)啟用

    3.15、POL: Channels Polarity

    Field

    Name

    Description

    0-7

    POLn

    通道n的極性

    3.16、FMS: Fault Mode Status

    Field

    Name

    Description

    0

    FAULTF0

    故障檢測標(biāo)志0

    1

    FAULTF1

    故障檢測標(biāo)志1

    2

    FAULTF2

    故障檢測標(biāo)志2

    FTM0-3支持此位

    FTM4-7不支持

    3

    FAULTF3

    故障檢測標(biāo)志3

    5

    FAULTIN

    故障輸入

    6

    WPEN

    啟用寫保護(hù)

    7

    FAULTF

    故障檢測標(biāo)志

    3.17、FILTER: Input Capture Filter Control

    這個寄存器為通道的輸入選擇過濾器值。

    通道4、5、6和7沒有輸入過濾器

    Field

    Name

    Description

    0-3

    CH0FVAL

    通道n輸入濾波器

    選擇通道輸入的過濾器值。

    當(dāng)值為零時,將禁用篩選器。

    4-7

    CH1FVAL

    8-11

    CH2FVAL

    12-15

    CH3FVAL

    3.18、FLTCTRL: Fault Control

    Field

    Name

    Description

    0

    FAULT0EN

    故障輸入n使能

    1

    FAULT1EN

    2

    FAULT2EN

    3

    FAULT3EN

    4

    FFLTR0EN

    故障輸入過濾器n使能

    5

    FFLTR1EN

    6

    FFLTR2EN

    7

    FFLTR3EN

    8-11

    FFVAL

    故障輸入過濾器

    15

    FSTATE

    故障輸出狀態(tài)

    3.19、QDCTRL: Quadrature Decoder Control And Status

    該寄存器具有控制位和正交解碼器模式的狀態(tài)位

    Field

    Name

    Description

    0

    QUADEN

    正交解碼器模式啟用

    1

    TOFDIR

    正交解碼器模式下定時器溢出方向

    2

    QUADIR

    正交解碼器模式下定時器計數(shù)方向

    3

    QUADMODE

    正交解碼器模式

    4

    PHBPOL

    B相輸入極性

    5

    PHAPOL

    A相輸入極性

    6

    PHBFLTREN

    B相輸入過濾器使能

    7

    PHAFLTREN

    A相輸入過濾器使能

    3.20、CONF: Configuration

    Field

    Name

    Description

    0-4

    LDPQ

    重新加載的頻率

    6-7

    BDMMODE

    調(diào)試模式

    9

    GTBEEN

    全局時基啟用

    10

    GTBEOUT

    全局時基輸出

    11

    ITRIGR

    加載點(diǎn)初始化觸發(fā)器

    3.21、FLTPOL: FTM Fault Input Polarity

    這個寄存器定義了故障輸入的極性

    Field

    Name

    Description

    0-3

    FLTnPOL

    故障輸入n的極性

    3.22、SYNCONF: Synchronization Configuration

    這個寄存器選擇PWM同步配置

    Field

    Name

    Description

    0

    HWTRIGMODE

    硬件觸發(fā)模式

    2

    CNTINC

    CNTIN寄存器同步

    4

    INVC

    INVCTRL寄存器同步

    5

    SWOC

    SWOCTRL寄存器同步

    7

    SYNCMODE

    加載點(diǎn)初始化觸發(fā)器

    8

    SWRSTCNT

    同步模式

    9

    SWWRBUF

    FTM計數(shù)器同步是由軟件觸發(fā)器激活的

    10

    SWOM

    MOD, HCR, CNTIN和CV寄存器同步是由軟件觸發(fā)器激活的

    11

    SWINVC

    輸出掩碼同步是由軟件觸發(fā)器激活的

    12

    SWSOC

    反向控制同步是由軟件觸發(fā)器激活的

    16

    HWRSTCNT

    軟件輸出控制同步由軟件觸發(fā)器激活

    17

    HWWRBUF

    FTM計數(shù)器同步是由硬件觸發(fā)器激活的

    18

    HWOM

    MOD, HCR, CNTIN和CV寄存器同步是由硬件觸發(fā)器激活的

    19

    HWINVC

    MOD, HCR, CNTIN和CV寄存器同步是由硬件觸發(fā)器激活的

    20

    HWSOC

    輸出掩碼同步是由硬件觸發(fā)器激活的

    3.23、INVCTRL: FTM Inverting Control

    該寄存器控制何時通道(n)輸出成為通道(n+1)輸出,以及通道(n+1)輸出變?yōu)橥ǖ?n)輸出。每一個INVmEN位對應(yīng)對通道m(xù)的反相操作。

    Field

    Name

    Description

    0-3

    INVmEN

    一對通道n反相使能

    3.24、SWOCTRL: FTM Software Output Control

    該寄存器允許軟件控制通道(n)輸出并定義強(qiáng)制值到通道(n)輸出:

    ?CH(n)OC位使軟件能夠控制相應(yīng)的通道(n)輸出。

    ?CH(n)OCV位選擇對應(yīng)通道(n)輸出的強(qiáng)制值。

    Field

    Name

    Description

    0-7

    CHnOC

    通道n軟件輸出控制使能

    8-15

    CHnOCV

    通道n軟件輸出控制值

    3.26、PWMLOAD: FTM PWM Load

    當(dāng)FTM計數(shù)器從MOD寄存器的值更改為下一個值或當(dāng)通道(j)匹配發(fā)生時,啟用MOD, HCR, CNTIN, C(n)V,和C(n+1)V用它們的寫緩沖區(qū)的值寄存器的重載

    Field

    Name

    Description

    0-7

    CHnSEL

    通道n選擇

    8

    HCSEL

    半周期選擇

    9

    LDOK

    加載使能

    10

    GLEN

    全局加載使能

    11

    GLDOK

    全局加載OK

    3.27、HCR: Half Cycle Register

    半周期寄存器包含F(xiàn)TM半周期重新加載特性的匹配值。

    Field

    Name

    Description

    0-15

    HCVAL

    半周期值

    3.28、PAIRnDEADTIME: Pair n Deadtime Configuration

    這個寄存器為這對n選擇死時間的分頻器和值。

    Field

    Name

    Description

    0-5

    DTVAL

    成對死區(qū)時間值

    6-7

    DTPS

    承兌死區(qū)時間分頻值

    16-19

    DTVALEX

    擴(kuò)展死區(qū)時間值

    3.29、MOD_MIRROR: Mirror of Modulo Value

    這個寄存器包含F(xiàn)TM計數(shù)器的整數(shù)和小數(shù)模值

    Field

    Name

    Description

    11-15

    FRACMOD

    計數(shù)器模值小數(shù)部分

    16-31

    MOD

    計數(shù)器模值整數(shù)部分

    3.30、C0V_MIRROR - C7V_MIRROR: Mirror of Channel (n) Match Value

    這個寄存器包含通道(n)匹配的整數(shù)和小數(shù)值。

    Field

    Name

    Description

    11-15

    FRACMOD

    通道匹配小數(shù)部分

    16-31

    MOD

    通道匹配整數(shù)部分

    其中通道模式的選擇如下圖

    ?

    ?

    ?

    4、代碼編程

    代碼編程可以有:邊沿對齊PWM、中間對齊PWM、輸出比較、輸入捕獲

    我偷懶了,其實其他的我也寫了,但是我之前沒保存,尷尬

    4.1、ftm.h

    #ifndef _FTM_H_ #define _FTM_H_#include "common.h" //公共要素頭文件void FTM0_init(void); void start_FTM0_counter (void); void FTM0_CH0_init(vuint_8 dutyoid); void FTM0_CH1_init(uint_8 duty); #endif

    4.2、ftm.c

    #include "ftm.h"void FTM0_init(void) {PCC->PCCn[PCC_FTM0_INDEX] &= ~PCC_PCCn_CGC_MASK; /* Ensure clk disabled for config */PCC->PCCn[PCC_FTM0_INDEX] |= PCC_PCCn_PCS(1) | PCC_PCCn_CGC_MASK;/* Clock Src=1, 8 MHz SOSCDIV1_CLK *//* Enable clock for FTM regs */FTM0->MODE |= FTM_MODE_WPDIS_MASK; /* Write protect to registers disabled (default) */FTM0->SC |= FTM_SC_PWMEN1_MASK | FTM_SC_PWMEN0_MASK | FTM_SC_PS(7); /* Enable PWM channel 0 output*//* TOIE (Timer Overflow Interrupt Ena) = 0 (default) *//* CPWMS (Center aligned PWM Select) = 0 (default, up count) *//* CLKS (Clock source) = 0 (default, no clock; FTM disabled) *//* PS (Prescaler factor) = 7. Prescaler = 128 */FTM0->COMBINE = 0x00000000;/* FTM mode settings used: DECAPENx, MCOMBINEx, COMBINEx=0 */FTM0->POL = 0x00000000; /* Polarity for all channels is active high (default) */FTM0->MOD = 62500 -1 ; /* FTM1 counter final value (used for PWM mode) *//* FTM1 Period = MOD-CNTIN+0x0001 ~= 62500 ctr clks *//* 8MHz / 128 = 62500Hz -> ticks -> 1Hz */FTM0->SC |= FTM_SC_CPWMS_MASK; } void FTM0_CH0_init(uint_8 duty) {//mode selectFTM0->CONTROLS[0].CnSC = FTM_CnSC_ELSB_MASK;/* FTM0 ch0 compare value (~50% duty cycle) */FTM0->CONTROLS[0].CnV = (FTM0->MOD+1)*duty/100; }void FTM0_CH1_init(uint_8 duty) {//mode selectFTM0->CONTROLS[1].CnSC = FTM_CnSC_ELSB_MASK;/* FTM0 ch1 compare value (~50% duty cycle) */FTM0->CONTROLS[1].CnV = (FTM0->MOD+1)*duty/100; } void start_FTM0_counter (void) {FTM0->SC |= FTM_SC_CLKS(3);/* Start FTM0 counter with clk source = external clock (SOSCDIV1_CLK)*/ }

    4.3、main.c

    調(diào)用偽代碼,因為全貼的話,我之前

    FTM0_init(); FTM0_CH0_init(50); /* Init FTM0 CH0 */ FTM0_CH1_init(50); /* Init FTM0 CH0 */ PCC->PCCn[PCC_PORTD_INDEX ]|=PCC_PCCn_CGC_MASK; PORTD->PCR[15]=PORT_PCR_MUX(2); /* Port D15: MUX = ALT2, FTM0CH0 */ PORTD->PCR[16]=PORT_PCR_MUX(2); /* Port D16: MUX = ALT2, FTM0CH1 */ start_FTM0_counter(); /* Start FTM0 counter */

    4.4、irq

    這部分沒貼出來,但是FTM一般有兩個中斷,一個是計數(shù)的溢出中斷,一個是通道觸發(fā)中斷

    /* 使能溢出中斷 */ FTM0->SC |= FTM_SC_TOF(1); /* 注冊中斷 */ S32_NVIC_EnableIRQ(FTM0_Ovf_Reload_IRQn,10); /* 中斷服務(wù)函數(shù) */ void FTM0_Ovf_Reload_IRQHandler(void) {FTM0->SC &= ~FTM_SC_TOF(1); //清中斷標(biāo)志位 }/* 使能溢出中斷 */ FTM0->CONTROLS[0].CnSC |= FTM_CnSC_CHIE_MASK; /* 注冊中斷 */ S32_NVIC_EnableIRQ(FTM0_Ch0_Ch1_IRQn,10); /* 中斷服務(wù)函數(shù) */ void FTM0_Ch0_Ch1_IRQHandler(void) {if((FTM0->CONTROLS[0].CnSC & FTM_CnSC_CHF_MASK)){FTM0->CONTROLS[0].CnSC &= ~FTM_CnSC_CHF_MASK;}if((FTM0->CONTROLS[1].CnSC & FTM_CnSC_CHF_MASK)){FTM0->CONTROLS[1].CnSC &= ~FTM_CnSC_CHF_MASK;} }

    ?

    總結(jié)

    以上是生活随笔為你收集整理的S32K144(12)FTM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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