0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區
會(huì )員中心
創(chuàng )作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內不再提示

靈動(dòng)微MM32F5270定時(shí)器單脈沖輸出

靈動(dòng)MM32MCU ? 來(lái)源: 靈動(dòng)MM32MCU ? 作者: 靈動(dòng)MM32MCU ? 2022-12-01 18:51 ? 次閱讀

1

單脈沖輸出

定時(shí)器單脈沖輸出是比較輸出應用中的一種模式,所謂的單脈沖就是通過(guò)配置定時(shí)器使其在一個(gè)可控延時(shí)后,產(chǎn)生一個(gè)脈寬可控的脈沖。

單脈沖模式(One Pulse Mode)下,計數器響應一個(gè)激勵,產(chǎn)生一個(gè)脈寬可調的脈沖。配置 TIMx_CR1 寄存器的OPM=1,選擇單脈沖模式,觸發(fā)信號有效沿或配置 CEN=1 都可以啟動(dòng)計數器,直到下個(gè)更新事件發(fā)生或配置 CEN=0 時(shí),計數器停止計數。

產(chǎn)生脈沖的必要條件是比較值與計數器的初始值不同,所以在計數器啟動(dòng)之前的必要配置如下:

遞增計數方式:計數器 CNT < CCRx ≤ ARR。

遞減計數方式:計數器 CNT > CCRx。

112b88d2-7162-11ed-8abf-dac502259ad0.png

圖 1 單脈沖模式

例如,在 TI2 檢測到上升沿,延遲 tDELAY 之后,在 OC2 上產(chǎn)生一個(gè)長(cháng)度為 tPULSE 的正脈沖。配置 TI2FP2 作為觸發(fā)源:

1

配置 TIMx_CCMR1 寄存器中的 CC2S = 01,將 TI2FP2 映射到 TI2。

1

配置 TIMx_CCER 寄存器中的 CC2P = 0,檢測 TI2FP2 的上升沿。

3

配置 TIMx_SMCR 寄存器中的 TS = 110, TI2FP2 作為從模式控制器的觸發(fā)(TRGI)。

4

配置 TIMx_SMCR 寄存器中的 SMS = 110,選擇觸發(fā)模式, TI2FP2 使能計數器工作。

OPM 的波形由 TIMx_ARR 和 TIMx_CCR1 決定(要考慮時(shí)鐘頻率和計數器預分頻器):由 TIMx_CCR1寄存器的值和 CNT 初始值決定觸發(fā)信號與單脈沖開(kāi)始之間的延遲 tDELAY, TIMx_ARR - TIMx_CCR1 的值為脈沖的寬度 tPULSE。

下面是一個(gè)產(chǎn)生負脈沖的例子,即發(fā)生比較匹配時(shí)產(chǎn)生從 1 到 0 的波形,計數器達到預裝載值時(shí)產(chǎn)生一個(gè)從 0 到 1 的波形:

1

配置 TIMx_CCMR1 寄存器 OC1M = 111,選擇 PWM 模式 2。

2

配置 TIMx_CCER 寄存器 CC1P = 1,輸出低電平有效。

1

配置 TIMx_CCMR1 中 OC1PE = 1 和 TIMx_CR1 寄存器中 ARPE=1,使能預裝載寄存器。

4

配置 TIMx_CCR1 寄存器和 TIMx_ARR 寄存器。

1

配置 TIMx_EGR 寄存器 UG=1 產(chǎn)生一個(gè)更新事件。

6

等待在 TI2 上的一個(gè)外部觸發(fā)事件。

此例中, TIMx_CR1 寄存器中的 DIR=0、 CMS=0、 OPM= 1,在下一個(gè)更新事件(當計數器從自動(dòng)裝載值返回到 0)時(shí)停止計數。

2

實(shí)驗

2.1 實(shí)驗說(shuō)明

配置TIM1_CH1單脈沖輸出,TIM1_CH2輸入捕獲,TIM1從模式選擇觸發(fā)模式,TIM3_CH1輸出PWM,觸發(fā)TIM1計數器開(kāi)始計數。當TIM1_CH2捕捉到有效信號時(shí),TIM1計數器開(kāi)始計數,按照配置好的脈寬,TIM1_CH1輸出一個(gè)脈沖信號。

2.2 程序編寫(xiě)

程序部分參考MM32提供的例程,相關(guān)代碼在此基礎上更改。

2.21 GPIO初始化

配置PA8作為T(mén)IM1_CH1、PA9作為T(mén)IM1_CH2

voidTIM1_GPIO_Init(void)
{
GPIO_InitTypeDefGPIO_InitStruct;
RCC_GPIO_ClockCmd(GPIOA,ENABLE);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource8,GPIO_AF_1);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_1);

GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPD;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
}

同樣的,配置PB4作為T(mén)IM3_CH1,代碼略。

2.22 TIM1初始化

程序中調用TIM1_Monopulse_Init()函數配置TIM1的自動(dòng)預裝載值為(10000-1),預分頻器的值為(SystemCoreClock / 1000000 - 1),即TIM1定時(shí)器發(fā)生更新事件的周期為10ms。

TIM1_Monopulse_Init(10000-1,SystemCoreClock/1000000-1);

在該函數中配置了TIM1_CH1輸出PWM,輸出信號極性為高電平有效,脈沖寬度為50%,使能TIM1單脈沖輸出模式。配置TIM1_CH2輸入捕獲,從模式觸發(fā)源選擇TI2FP2作為計數器的觸發(fā)輸入,在信號的上升沿啟動(dòng)。詳見(jiàn)函數定義如下:

voidTIM1_Monopulse_Init(u16arr,u16psc)
{
TIM_TimeBaseInitTypeDefTIM_TimeBaseStruct;
TIM_OCInitTypeDefTIM_OCInitStruct;
TIM_ICInitTypeDefTIM_ICInitStruct;

RCC_APB2PeriphClockCmd(RCC_APB2ENR_TIM1,ENABLE);
TIM_DeInit(TIM1);
TIM_TimeBaseStructInit(&TIM_TimeBaseStruct);
TIM_TimeBaseStruct.TIM_Period=arr;
TIM_TimeBaseStruct.TIM_Prescaler=psc;
TIM_TimeBaseStruct.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseStruct.TIM_RepetitionCounter=0;
TIM_TimeBaseStruct.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStruct);

TIM_OCStructInit(&TIM_OCInitStruct);
TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM2;
TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;
TIM_OCInitStruct.TIM_Pulse=arr/2;
TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;
TIM_OCInitStruct.TIM_OCIdleState=TIM_OCIdleState_Reset;
TIM_OC1Init(TIM1,&TIM_OCInitStruct);
TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);
TIM_ICStructInit(&TIM_ICInitStruct);

TIM_ICInitStruct.TIM_Channel=TIM_Channel_2;
TIM_ICInitStruct.TIM_ICPolarity=TIM_ICPolarity_Rising;
TIM_ICInitStruct.TIM_ICSelection=TIM_ICSelection_DirectTI;
TIM_ICInitStruct.TIM_ICPrescaler=TIM_ICPSC_DIV1;
TIM_ICInitStruct.TIM_ICFilter=0x0;
TIM_ICInit(TIM1,&TIM_ICInitStruct);
TIM_ARRPreloadConfig(TIM1,ENABLE);
TIM_SelectOnePulseMode(TIM1,TIM_OPMode_Single);
TIM_SelectInputTrigger(TIM1,TIM_TS_TI2FP2);
TIM_SelectSlaveMode(TIM1,TIM_SlaveMode_Trigger);
TIM_SetCounter(TIM1,0);
TIM_CtrlPWMOutputs(TIM1,ENABLE);
TIM_Cmd(TIM1,ENABLE);
}

2.23 TIM3初始化

程序中調用TIM3_PWM_Init()函數配置TIM3的自動(dòng)預裝載值為(10000-1),預分頻器的值為(SystemCoreClock / 1000000 - 1),即TIM3定時(shí)器發(fā)生更新事件的周期為20ms。

TIM3_PWM_Init(10000-1,SystemCoreClock/1000000-1);

在該函數中配置了TIM3_CH1輸出PWM,輸出信號極性為高電平有效,脈沖寬度為25%。詳見(jiàn)函數定義如下:

voidTIM3_PWM_Init(u16arr,u16psc)
{
TIM_TimeBaseInitTypeDefTIM_TimeBaseStruct;
TIM_OCInitTypeDefTIM_OCInitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1ENR_TIM3,ENABLE);
TIM_TimeBaseStructInit(&TIM_TimeBaseStruct);
TIM_TimeBaseStruct.TIM_Period=arr;
TIM_TimeBaseStruct.TIM_Prescaler=psc;
TIM_TimeBaseStruct.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseStruct.TIM_RepetitionCounter=0;
TIM_TimeBaseStruct.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStruct);
TIM_OCStructInit(&TIM_OCInitStruct);
TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM2;
TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;
TIM_OCInitStruct.TIM_Pulse=(arr/4)*3;
TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;
TIM_OC1Init(TIM3,&TIM_OCInitStruct);
TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM3,ENABLE);
TIM_SetCounter(TIM3,0);
TIM_Cmd(TIM3,ENABLE);
}

按照上述配置,PB4(TIM3_CH1)作為PA9(TIM1_CH2)的輸入端,當PA9捕捉到PB4輸出的PWM的上升沿時(shí),TIM1計數器啟動(dòng)計數,控制延時(shí)為5ms,PA8輸出一個(gè)脈寬為5ms的脈沖。

2.3 下載驗證

連接PA9(TIM1_CH2)和PB4(TIM3_CH1),使用邏輯分析儀連接PA8和PA9,運行程序觀(guān)測波形如下:

144608da-7162-11ed-8abf-dac502259ad0.png

其中,通道8連接PA8,通道9連接PA9:

146688b2-7162-11ed-8abf-dac502259ad0.png

測量?jì)啥伍g距均為5ms,運行結果和上述配置一致。

1484b300-7162-11ed-8abf-dac502259ad0.png

關(guān)于靈動(dòng)

上海靈動(dòng)微電子股份有限公司成立于 2011 年,是中國本土領(lǐng)先的通用 32 位 MCU 產(chǎn)品及解決方案供應商。公司基于 Arm Cortex-M 系列內核開(kāi)發(fā)的 MM32 MCU 產(chǎn)品擁有 F/L/A/SPIN/W 五大系列,目前已量產(chǎn) 200多款型號,累計交付超3億顆,每年都有近億臺配備了靈動(dòng) MM32MCU 的優(yōu)秀產(chǎn)品交付到客戶(hù)手中,在本土通用 32 位 MCU 公司中位居前列。

靈動(dòng)客戶(hù)涵蓋智能工業(yè)、汽車(chē)電子、通信基建、醫療健康、智慧家電、物聯(lián)網(wǎng)、個(gè)人設備、手機電腦等應用領(lǐng)域。靈動(dòng)是中國為數不多的同時(shí)獲得了 Arm-KEIL、IAR、SEGGER 官方支持的本土 MCU 公司,并建立了獨立、完整的通用 MCU 生態(tài)體系。靈動(dòng)始終秉承著(zhù)“誠信、承諾、創(chuàng )新、合作”的精神,為客戶(hù)提供從硬件芯片到軟件算法、從參考方案到系統設計的全方位支持。

15025026-7162-11ed-8abf-dac502259ad0.jpg

聲明:本文內容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權轉載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習之用,如有內容侵權或者其他違規問(wèn)題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16148

    瀏覽量

    345135
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3156

    瀏覽量

    112538
  • 單脈沖
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    12653
  • 靈動(dòng)微電子
    +關(guān)注

    關(guān)注

    7

    文章

    109

    瀏覽量

    19571
  • 靈動(dòng)微
    +關(guān)注

    關(guān)注

    3

    文章

    173

    瀏覽量

    22576
  • MM32
    +關(guān)注

    關(guān)注

    1

    文章

    106

    瀏覽量

    611

原文標題:靈動(dòng)微課堂 (第238講)|MM32F5270定時(shí)器單脈沖輸出

文章出處:【微信號:MindMotion-MMCU,微信公眾號:靈動(dòng)MM32MCU】歡迎添加關(guān)注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    STM32定時(shí)器單脈沖模式的相關(guān)資料分享

    STM32的定時(shí)器可以配置為單脈沖模式,所謂的單脈沖就是通過(guò)配置定時(shí)器使其在一個(gè)可控延時(shí)后,產(chǎn)生一個(gè)脈寬可控的脈沖。使用STM32CubeM
    發(fā)表于 12-08 06:05

    基于MM32F5270開(kāi)發(fā)板獲取雨滴傳感的數據相關(guān)資料介紹

    1、基于MindSDK對接雨滴傳感我們還是來(lái)介紹一下開(kāi)發(fā)板的相關(guān)參數。靈動(dòng)MM32F5270開(kāi)發(fā)板是搭載安謀科技“星辰”STAR-MC1處理的全新高性能
    發(fā)表于 08-24 15:20

    一文解析MM32F5270開(kāi)發(fā)板+PWM測試與調制

    1、MM32F5270開(kāi)發(fā)板+ PWM測試與調制  PWM接口引腳  MM32F5270開(kāi)發(fā)板有引出PWM引腳給我們,我們可以直接使用就行?! ≈饕a部分如下  2.1 hal_tim.c
    發(fā)表于 09-06 11:24

    MM32F5270是如何通過(guò)MindSwitch和CLU實(shí)現可任意編程外設間互聯(lián)系統的

    MindSwitch 和比較的窗口功能可實(shí)現全硬件過(guò)零檢測。首先,MM32F5270 在模擬比較中新增了窗口使能控制,僅在窗口信號有效時(shí),比較
    發(fā)表于 09-06 15:13

    一文簡(jiǎn)析MM32F5270定時(shí)器單脈沖輸出模式

    1 單脈沖輸出定時(shí)器單脈沖輸出是比較輸出應用中的一種模式,所謂的
    發(fā)表于 12-30 16:09

    介紹幾種MM32F5270定時(shí)器常用的精準輸出脈沖數量的方法

    (測量輸入信號的脈沖寬度、頻率,PWM 輸入等),輸出功能(PWM 輸出、死區時(shí)間可編程的互補輸出、 單脈沖模式
    發(fā)表于 12-30 16:28

    關(guān)于定時(shí)器單脈沖輸出模式應用

    單脈沖輸出模式是定時(shí)器比較輸出應用中的一種特殊情況或者特殊應用,是一種特殊的PWM輸出模式。既然這么說(shuō),要想了解
    的頭像 發(fā)表于 02-14 15:54 ?1.5w次閱讀
    關(guān)于<b class='flag-5'>定時(shí)器</b>的<b class='flag-5'>單脈沖</b><b class='flag-5'>輸出</b>模式應用

    STM32定時(shí)器單脈沖輸出模式

    STM32定時(shí)器單脈沖輸出模式
    發(fā)表于 12-08 20:51 ?48次下載
    STM32<b class='flag-5'>定時(shí)器</b><b class='flag-5'>單脈沖</b><b class='flag-5'>輸出</b>模式

    基于MM32F5270控制器的I2S音頻播放

    MM32F5270 系列控制器支持 I2S 總線(xiàn)接口,本章節在接下來(lái)會(huì )對 MM32F5270 I2S進(jìn)行介紹,并使用 MM32F5270 和 CS4344 芯片進(jìn)行 I2S 通信來(lái)演示播放一段聲音。
    的頭像 發(fā)表于 09-16 10:39 ?1692次閱讀

    MM32F5270 TIM精準脈沖數量輸出

    (測量輸入信號的脈沖寬度、頻率,PWM 輸入等),輸出功能(PWM 輸出、死區時(shí)間可編程的互補輸出、 單脈沖模式
    的頭像 發(fā)表于 12-09 10:09 ?920次閱讀

    MM32F5270 產(chǎn)品手冊(中文版)

    MM32F5270 產(chǎn)品手冊(中文版)
    發(fā)表于 02-23 18:45 ?0次下載
    <b class='flag-5'>MM32F5270</b> 產(chǎn)品手冊(中文版)

    MM32F5270 產(chǎn)品手冊(英文版)

    MM32F5270 產(chǎn)品手冊(英文版)
    發(fā)表于 02-23 18:45 ?0次下載
    <b class='flag-5'>MM32F5270</b> 產(chǎn)品手冊(英文版)

    MM32F5270 勘誤表(中文版)

    MM32F5270 勘誤表(中文版)
    發(fā)表于 02-23 18:47 ?0次下載
    <b class='flag-5'>MM32F5270</b> 勘誤表(中文版)

    MM32F5270 勘誤表(英文版)

    MM32F5270 勘誤表(英文版)
    發(fā)表于 02-23 18:48 ?0次下載
    <b class='flag-5'>MM32F5270</b> 勘誤表(英文版)

    基于MM32F5270的I2S音頻播放

    基于MM32F5270的I2S音頻播放
    的頭像 發(fā)表于 10-30 17:13 ?666次閱讀
    基于<b class='flag-5'>MM32F5270</b>的I2S音頻播放
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看