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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

S32K144(12)FTM

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

PWM和輸出比較的區別

輸出比較模式下:

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

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

1、簡介

開發板S32K144+S32DS+JLINK,裸機版的程序編寫

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

特點:

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

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

  • 在輸出比較模式下,輸出信號可以設置,清除,或翻轉

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

  • 每對通道可以組合起來產生一個PWM信號,并對PWM信號的兩個邊緣進行獨立控制

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

  • 死區時間插入可用互補對

  • 生成匹配觸發器

  • PWM輸出軟件控制

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

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

  • 每個通道產生一個中斷

  • 當計數器溢出時產生中斷

  • 當檢測到故障條件時,中斷的產生

  • 當寄存器重新加載點發生時,中斷的產生

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

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

  • 關鍵寄存器的寫保護

  • 向后兼容TPM

  • 測試輸入捕獲模式

  • 直接訪問輸入引腳狀態

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

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

  • 可以選擇FTM通道在通道輸出上產生觸發脈沖而不是PWM

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

  • 2、原理圖

    3、寄存器

    3.1、SC: Status And Control

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

    Field

    Name

    Description

    0-2

    PS

    預分頻: 1-128

    3-4

    CLKS

    時鐘源選擇

    5

    CPWMS

    配置計數模式

    6

    RIE

    重載標志

    7

    RF

    定時器溢出中斷你使能

    8

    TOIE

    定時器溢出標志

    9

    TOF

    時鐘引腳使能

    16-23

    PWMENn

    通道nPWM使能

    24-27

    FLTPS

    濾波器預分頻

    3.2、CNT: Counter

    Field

    Name

    Description

    0-15

    COUNT

    計數器的值

    3.3、MOD: Modulo

    模寄存器包含FTM計數器的模值。當FTM計數器達到模值后,溢出標志(TOF)在下一個時鐘周期設置,FTM計數器的下一個值取決于所選的計數方法

    Field

    Name

    Description

    0-15

    MOD

    模值

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

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

    Field

    Name

    Description

    0

    DMA

    DMA使能

    1

    ICRST

    輸入捕獲事件復位FTM計數器選擇

    2

    ELSA

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

    3

    ELSB

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

    4

    MSA

    通道(n)模式選擇

    5

    MSB

    通道(n)模式選擇

    6

    CHE

    通道(n)中斷使能

    7

    CHIF

    通道(n)事件標志

    8

    TRIGMODE

    觸發模式控制

    9

    CHIS

    通道(n)輸入狀態

    10

    CHOV

    通道(n)輸出值

    3.5、C0V - C7V: Channel (n) Value

    Field

    Name

    Description

    0-15

    VAL

    通道值

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

    3.6、CNTIN: Counter Initial Value

    Field

    Name

    Description

    0-15

    INIT

    FTM計數器初始化值

    3.7、STATUS: Capture And Compare Status

    Field

    Name

    Description

    0-7

    CHnF

    通道事件標志

    3.8、MODE: Features Mode Selection

    Field

    Name

    Description

    0

    FTMEN

    FTM使能

    1

    INIT

    初始化通道輸出

    2

    WPDIS

    寫保護禁用

    3

    PWMSYNC

    PWM同步模式

    4

    CAPTEST

    捕獲測試模式使能

    5-6

    FAULTM

    故障控制模式

    7

    FAULTIE

    故障中斷使能

    3.9、SYNC: Synchronization

    Field

    Name

    Description

    0

    CNTMIN

    最小加載點啟用

    1

    CNTMAX

    最大加載點啟用

    2

    REINIT

    同步FTM計數器重新初始化

    3

    SYNCHOM

    輸出掩碼同步

    4

    TGIG0

    PWM同步硬件觸發0

    5

    TGIG1

    PWM同步硬件觸發1

    6

    TGIG2

    PWM同步硬件觸發2

    7

    SWSYNC

    PWM同步軟件觸發器

    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)的補碼

    2

    DECAPEN0

    啟用雙邊緣捕獲模式

    3

    DECAP0

    雙邊捕獲模式捕獲

    4

    DTEN0

    死區時間啟用

    5

    SYNCEN0

    啟用同步

    6

    FAULTEN0

    故障控制使能

    7

    MCOMBINE0

    修改合并模式

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

    3.13、DEADTIME: Deadtime Configuration ?????

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

    Field

    Name

    Description

    0-5

    DTVAL

    死區時間值

    6-7

    DTPS

    死區時間分頻值

    16-19

    DTVALEX

    擴展死區時間值

    3.14、EXTTRIG: FTM External Trigger

    外部觸發器產生的時間,當FTM計數器等于其初始值時,使能生成觸發器,選擇在外部觸發器的生成中使用的通道

    Field

    Name

    Description

    0

    CH2TRIG

    通道2外部觸發啟用

    1

    CH3TRIG

    通道3外部觸發啟用

    2

    CH4TRIG

    通道4外部觸發啟用

    3

    CH5TRIG

    通道5外部觸發啟用

    4

    CH0TRIG

    通道0外部觸發啟用

    5

    CH1TRIG

    通道1外部觸發啟用

    6

    INITTRIGEN

    初始化觸發使能

    7

    TRIGF

    通道觸發器標志

    8

    CH6TRIG

    通道6外部觸發啟用

    9

    CH7TRIG

    通道7外部觸發啟用

    3.15、POL: Channels Polarity

    Field

    Name

    Description

    0-7

    POLn

    通道n的極性

    3.16、FMS: Fault Mode Status

    Field

    Name

    Description

    0

    FAULTF0

    故障檢測標志0

    1

    FAULTF1

    故障檢測標志1

    2

    FAULTF2

    故障檢測標志2

    FTM0-3支持此位

    FTM4-7不支持

    3

    FAULTF3

    故障檢測標志3

    5

    FAULTIN

    故障輸入

    6

    WPEN

    啟用寫保護

    7

    FAULTF

    故障檢測標志

    3.17、FILTER: Input Capture Filter Control

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

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

    Field

    Name

    Description

    0-3

    CH0FVAL

    通道n輸入濾波器

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

    當值為零時,將禁用篩選器。

    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

    故障輸出狀態

    3.19、QDCTRL: Quadrature Decoder Control And Status

    該寄存器具有控制位和正交解碼器模式的狀態位

    Field

    Name

    Description

    0

    QUADEN

    正交解碼器模式啟用

    1

    TOFDIR

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

    2

    QUADIR

    正交解碼器模式下定時器計數方向

    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

    調試模式

    9

    GTBEEN

    全局時基啟用

    10

    GTBEOUT

    全局時基輸出

    11

    ITRIGR

    加載點初始化觸發器

    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

    硬件觸發模式

    2

    CNTINC

    CNTIN寄存器同步

    4

    INVC

    INVCTRL寄存器同步

    5

    SWOC

    SWOCTRL寄存器同步

    7

    SYNCMODE

    加載點初始化觸發器

    8

    SWRSTCNT

    同步模式

    9

    SWWRBUF

    FTM計數器同步是由軟件觸發器激活的

    10

    SWOM

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

    11

    SWINVC

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

    12

    SWSOC

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

    16

    HWRSTCNT

    軟件輸出控制同步由軟件觸發器激活

    17

    HWWRBUF

    FTM計數器同步是由硬件觸發器激活的

    18

    HWOM

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

    19

    HWINVC

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

    20

    HWSOC

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

    3.23、INVCTRL: FTM Inverting Control

    該寄存器控制何時通道(n)輸出成為通道(n+1)輸出,以及通道(n+1)輸出變為通道(n)輸出。每一個INVmEN位對應對通道m的反相操作。

    Field

    Name

    Description

    0-3

    INVmEN

    一對通道n反相使能

    3.24、SWOCTRL: FTM Software Output Control

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

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

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

    Field

    Name

    Description

    0-7

    CHnOC

    通道n軟件輸出控制使能

    8-15

    CHnOCV

    通道n軟件輸出控制值

    3.26、PWMLOAD: FTM PWM Load

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

    Field

    Name

    Description

    0-7

    CHnSEL

    通道n選擇

    8

    HCSEL

    半周期選擇

    9

    LDOK

    加載使能

    10

    GLEN

    全局加載使能

    11

    GLDOK

    全局加載OK

    3.27、HCR: Half Cycle Register

    半周期寄存器包含FTM半周期重新加載特性的匹配值。

    Field

    Name

    Description

    0-15

    HCVAL

    半周期值

    3.28、PAIRnDEADTIME: Pair n Deadtime Configuration

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

    Field

    Name

    Description

    0-5

    DTVAL

    成對死區時間值

    6-7

    DTPS

    承兌死區時間分頻值

    16-19

    DTVALEX

    擴展死區時間值

    3.29、MOD_MIRROR: Mirror of Modulo Value

    這個寄存器包含FTM計數器的整數和小數模值

    Field

    Name

    Description

    11-15

    FRACMOD

    計數器模值小數部分

    16-31

    MOD

    計數器模值整數部分

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

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

    Field

    Name

    Description

    11-15

    FRACMOD

    通道匹配小數部分

    16-31

    MOD

    通道匹配整數部分

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

    ?

    ?

    ?

    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

    調用偽代碼,因為全貼的話,我之前

    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一般有兩個中斷,一個是計數的溢出中斷,一個是通道觸發中斷

    /* 使能溢出中斷 */ FTM0->SC |= FTM_SC_TOF(1); /* 注冊中斷 */ S32_NVIC_EnableIRQ(FTM0_Ovf_Reload_IRQn,10); /* 中斷服務函數 */ void FTM0_Ovf_Reload_IRQHandler(void) {FTM0->SC &= ~FTM_SC_TOF(1); //清中斷標志位 }/* 使能溢出中斷 */ FTM0->CONTROLS[0].CnSC |= FTM_CnSC_CHIE_MASK; /* 注冊中斷 */ S32_NVIC_EnableIRQ(FTM0_Ch0_Ch1_IRQn,10); /* 中斷服務函數 */ 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;} }

    ?

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。