RM新时代网站-首页

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

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

3天內(nèi)不再提示

詳解CKS32F107xx系列的定時器同步功能

中科芯MCU ? 來源:中科芯MCU ? 2024-11-26 17:51 ? 次閱讀

MCU微課堂

CKS32F107xx TIM(四)

第四十八期 2024.11.22

定時器同步

CKS32F107xx系列部分定時器在內(nèi)部是相連的,可用于定時器同步或鏈接,方便用戶配置不同的同步模式,以便在電機控制、數(shù)據(jù)采集和PWM信號生成等應(yīng)用中,實現(xiàn)復(fù)雜的時間序列和多通道的同步操作。本節(jié)課我們將圍繞定時器同步功能概述展開,并以其中一種功能為例——將定時器2給定時器3當(dāng)預(yù)分頻器,最終級聯(lián)同步PWM輸出。

依據(jù)《CKS32F107xx參考手冊》的從模式控制寄存器相關(guān)章節(jié)得知,并非任意兩個定時器都能任意級聯(lián),硬件方面是固定的,若某個產(chǎn)品中沒有相應(yīng)的定時器,則對應(yīng)的觸發(fā)信號ITRx也不存在。如下表1所示。

表1 普通輸入捕獲概覽圖

bc64d562-a8a3-11ef-93f3-92fbcf53809c.png

如下圖1所示,TIM2更新事件的輸出信號TRGO1可以連接到TIM3的內(nèi)部觸發(fā)信號線ITR1(可由表1查閱得知),作為TIM3 的時鐘輸入。

bc780cc2-a8a3-11ef-93f3-92fbcf53809c.png

圖1 主從定時器示例

要使TIM2和TIM3級聯(lián)同步輸出PWM波形,我們還會用到控制寄存器2(TIMx_CR2)和從模式控制寄存器(TIMx_SMCR)。接下來我們簡單介紹下這兩個寄存器。

首先是控制寄存器2(TIMx_CR2),該寄存器的各位描述如下圖所示:

bc7c3f36-a8a3-11ef-93f3-92fbcf53809c.png

bc842688-a8a3-11ef-93f3-92fbcf53809c.png

圖2 TIMx_CR2

關(guān)于該寄存器的詳細(xì)說明,請參照《CKS32F107xx參考手冊》。這里我們用到的是主模式選擇位域MMS,此部分由3位組成。共有8種模式可供選擇,因為我們使用的是更新模式,所以必須設(shè)置為010。

接下來我們介紹從模式控制寄存器(TIMx_SMCR),該寄存器的各位描述如下圖所示:

bc88dac0-a8a3-11ef-93f3-92fbcf53809c.png

bc8ead74-a8a3-11ef-93f3-92fbcf53809c.png

圖3 TIMx_SMCR

在該寄存器中,我們用到了SMS和TS位域,均由3位組成,各有8種不同模式組合。其中SMS控制從模式選擇,這里我們配置成100,選擇門控模式,確保從定時器的開始和結(jié)束都是由主定時器的輸出信號控制。TS控制觸發(fā)選擇,根據(jù)表1描述得知,我們必須配置成001。

定時器級聯(lián)同步輸出PWM配置操作

通過上述對定時器功能的描述,下面我們要實現(xiàn)TIM2發(fā)生事件更新時發(fā)送觸發(fā)信號驅(qū)動TIM3計數(shù),并使能兩個定時器在PWM1模式下由定時器通道1輸出PWM波形。編程的要點如下所示。

1、配置PA0和PA6引腳為復(fù)用輸出功能

我們調(diào)用如下函數(shù)實現(xiàn):

void TIM_GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_6;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

}

2、TIM2配置為主定時器

TIM2配置為PWM1模式輸出,使能主從模式,并選擇更新事件作為觸發(fā)輸出,主要代碼如下:

void TIM2_Master_Mode_Configuration(void)

{

TIM_TimeBaseInitTypeDef TIM2_TimeBaseStructure;

TIM_OCInitTypeDef TIM2_OCInitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

/* Time Base Configuration */

TIM2_TimeBaseStructure.TIM_Prescaler = 8;

TIM2_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM2_TimeBaseStructure.TIM_Period = 79;

TIM2_TimeBaseStructure.TIM_ClockDivision = 0;

TIM_TimeBaseInit(TIM2, &TIM2_TimeBaseStructure);

/* TIM2 Channel 1 Configuration in PWM1 mode */

TIM2_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM2_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

TIM2_OCInitStructure.TIM_Pulse = 40 ;

TIM2_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

TIM_OC1Init(TIM2, &TIM2_OCInitStructure);

TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable);

/* Master Mode selection */

TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);

}

從上述代碼可得知,TIM2CLK固定為72MHz,TIM2預(yù)分頻為8,因此主定時器TIM2計數(shù)器時鐘頻率為8MHz頻率,則TIM2頻率=TIM2計數(shù)器時鐘/(TIM2_Period + 1)=100KHz,占空比為TIM2_CCR1/(TIM2_ARR + 1) = 50%。

3、TIM3配置為從定時器

TIM3配置為門控模式,并選擇ITR1作為輸入,主要代碼如下:

void TIM3_Slave_Mode_Configuration(void)

{

TIM_TimeBaseInitTypeDef TIM3_TimeBaseStructure;

TIM_OCInitTypeDef TIM3_OCInitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

/* Time Base Configuration */

TIM3_TimeBaseStructure.TIM_Prescaler = 0;

TIM3_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM3_TimeBaseStructure.TIM_Period = 4;

TIM3_TimeBaseStructure.TIM_ClockDivision = 0;

TIM_TimeBaseInit(TIM3, &TIM3_TimeBaseStructure);

/* TIM3 Channel 1 Configuration in PWM1 mode */

TIM3_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

TIM3_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

TIM3_OCInitStructure.TIM_Pulse = 2;

TIM3_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

TIM_OC1Init(TIM3, &TIM3_OCInitStructure);

/* Slave Mode selection: TIM3 */

TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Gated);

TIM_SelectInputTrigger(TIM3, TIM_TS_ITR1);

}

從上述代碼可得知,從定時器TIM3頻率為(TIM2 frequency)/ (TIM3 period + 1)=20kHz,占空比為TIM3_CCR1/(TIM3_ARR + 1) = 40%。

4、主函數(shù)

初始化主從定時器,最終實現(xiàn)級聯(lián)同步PWM輸出,主要代碼如下:

int main(void)

{

TIM_GPIO_Configuration();

TIM3_Slave_Mode_Configuration();

TIM2_Master_Mode_Configuration();

TIM_Cmd(TIM2, ENABLE); /* Enable TIM2 Counter */

TIM_Cmd(TIM3, ENABLE); /* Enable TIM3 Counter */

while(1)

{

}

}

至此,用示波器測量PA0和PA6引腳的波形(注意共地);下載程序,調(diào)節(jié)示波器,可在示波器看到有PWM波形輸出,如下圖4所示:

bca40002-a8a3-11ef-93f3-92fbcf53809c.png

圖4PWM波形輸出

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

    關(guān)注

    3534

    文章

    1876

    瀏覽量

    268735
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5336

    瀏覽量

    120224
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    114

    文章

    5181

    瀏覽量

    213791
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3246

    瀏覽量

    114714

原文標(biāo)題:MCU微課堂|CKS32F107xx TIM(四)

文章出處:【微信號:中科芯MCU,微信公眾號:中科芯MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    CKS32F4xx系列ETH通信詳解

    CKS32F4xx系列芯片自帶以太網(wǎng)模塊,該模塊包括帶專用DMA控制的MAC 802.3(介質(zhì)訪問控制)控制
    的頭像 發(fā)表于 11-10 11:13 ?991次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>ETH通信<b class='flag-5'>詳解</b>

    基于CKS32F4xx系列的MCU互補PWM方案

    互補輸出實際跟比較輸出章節(jié)一樣使用的是定時器功能,所以相關(guān)的函數(shù)設(shè)置同樣在庫函數(shù)文件CKS32f4xx_tim.h和CKS32f4xx_tim.c文件中。 1)開啟TIM1和GPIO
    發(fā)表于 12-02 10:13 ?633次閱讀
    基于<b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>的MCU互補PWM方案

    CKS32F4xx系列MCU SysTick定時器的原理及使用方法

    本課將為大家講解CKS32F4xx系列產(chǎn)品的SysTick定時器原理及使用方法。SysTick定時器也叫SysTick滴答定時器,屬于Cor
    的頭像 發(fā)表于 12-18 09:21 ?1330次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>MCU SysTick<b class='flag-5'>定時器</b>的原理及使用方法

    STM32定時器詳解

    結(jié)合起來使用的話可以實現(xiàn)非常豐富的功能,可以測量輸入信號的脈沖寬度,可以生產(chǎn)輸出波形。定時器生產(chǎn) PWM 控制電機狀態(tài)是工業(yè)控制普遍方法,這方面知識非常有必要深入了解。STM32F4xx系列
    發(fā)表于 08-18 06:17

    stm32f103zet6定時器詳解及應(yīng)用

    大容量的STM32F103XX增強型系列產(chǎn)品包含最多2個高級控制定時器、4個普通定時器和2個基本定時器,以及2個看門狗
    發(fā)表于 11-10 13:26 ?2.4w次閱讀

    CKS32F4xx系列產(chǎn)品的定時器使用-基本特征和定時操作

    這一課我們將介紹CKS32F4XX系列產(chǎn)品的定時器使用,CKS32F4XX定時器功能十分強大,
    的頭像 發(fā)表于 05-19 09:18 ?889次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產(chǎn)品的<b class='flag-5'>定時器</b>使用-基本特征和<b class='flag-5'>定時</b>操作

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-定時器脈沖計數(shù)

    上一章我們介紹了CKS32F4的通用定時器定時操作的使用方法,這一章我們將向大家介紹通用定時器作為定時器脈沖計數(shù)的使用。在本章中,我們將用T
    的頭像 發(fā)表于 06-05 09:39 ?1018次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產(chǎn)品Timer的基本使用方法-<b class='flag-5'>定時器</b>脈沖計數(shù)

    STM32各類系列定時器概覽

    本文檔:概述了 STM32F1xx、STM32F2xx、STM32F4xx、STM32L1xx 和 STM32F30/31/37/38x微控
    發(fā)表于 08-31 10:49 ?0次下載

    CKS32F4xx系列RNG功能設(shè)置

    ? MCU 微課堂 CKS32F4xx 系 列RNG功能 隨機數(shù)發(fā)生簡介 ? ? CKS32F4xx系列自帶了硬件隨機數(shù)發(fā)生
    的頭像 發(fā)表于 09-08 10:01 ?602次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>RNG<b class='flag-5'>功能</b>設(shè)置

    CKS32F4xx系列DAC功能

    CKS32F4xx系列DAC功能
    的頭像 發(fā)表于 11-06 16:56 ?845次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>DAC<b class='flag-5'>功能</b>

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-定時器脈沖計數(shù)

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-定時器脈沖計數(shù)
    的頭像 發(fā)表于 11-09 17:38 ?1062次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產(chǎn)品Timer的基本使用方法-<b class='flag-5'>定時器</b>脈沖計數(shù)

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-定時操作

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-定時操作
    的頭像 發(fā)表于 11-09 17:41 ?614次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產(chǎn)品Timer的基本使用方法-<b class='flag-5'>定時</b>操作

    CKS32F107xx系列時鐘系統(tǒng)具體配置方法講解

    上一章節(jié)對CKS32F107xx系列時鐘做了整體介紹,本章節(jié)以使用HSI內(nèi)部高速時鐘為例對時鐘具體配置方法進(jìn)行講解。
    的頭像 發(fā)表于 05-28 10:05 ?583次閱讀
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>時鐘系統(tǒng)具體配置方法講解

    CKS32F107xx系列MCU中ADC介紹

    CKS32F107xx系列產(chǎn)品提供2個12位的模擬/數(shù)字轉(zhuǎn)換(ADC),每個ADC共用多達(dá)16個外部通道,各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。ADC的結(jié)果可以左對齊或右對齊方式存儲在16位數(shù)據(jù)寄存
    的頭像 發(fā)表于 06-22 11:04 ?686次閱讀

    CKS32F107xx系列MCU的GPIO內(nèi)部硬件結(jié)構(gòu)和工作模式

    16個引腳,如型號為CKS2F107VET6型號的芯片有GPIOA、GPIOB、GPIOC至GPIOE共5組GPIO,芯片一共100個引腳,其中GPIO就占了一大部分,所有的GPIO引腳都有基本的輸入輸出功能。
    的頭像 發(fā)表于 07-22 09:23 ?685次閱讀
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>MCU的GPIO內(nèi)部硬件結(jié)構(gòu)和工作模式
    RM新时代网站-首页