TOSHIBA TMPM037 實作 Timer 操作手冊

一、 簡介

        本篇文章介紹在 TMPM037 EVB 實作 Timer 的操作手冊,並舉兩個範例來做演示。
        範例一 : 透過 Timer 控制 LED1 產生 1 秒的週期閃爍。
        範例二 : Timer 產生 PWM 的輸出,佔空比 10% 於 PC3 管腳。

二、 工具準備

     1. TMPM037 開發板
         2-1    

     2. Mini USB Cable
         用途說明 : 提供電源輸入與程式燒錄。

三、 實作範例一 : 透過 Timer 控制 LED1 產生 1 秒的週期閃爍

    1. 編譯範例程式
        1) 下載範例程式 :
             https://toshiba.semicon-storage.com/tw/semiconductor/knowledge/application-note/ev1.html
             3-1

        2) 開啟範例程式 : tmpm037_v2.3.2\tx00_cmsis_v2.3.2\M037\TMPM037\Project\Examples\TMRB\TMRB_TIMER\IAR\ TMRB_TIMER.eww。
             

        3) 進入主程式【main.c】可以看到範例程式是採用 1ms 的 Timer,然後再 TMRB0 interrupt service routine 計數 500 次,讓 LED1 產生 1 秒的週期閃爍。
             

        4) 編譯程式,選擇【Project】,再選擇【Clean】。
             
        5) 接著選擇【Rebuild All】。
             
        6) 確認編譯完成。
             

    2. 硬體連接
        1) 在【TMPM037FWFG Starter kit Hardware Manual_Rev1.0.pdf】文件第 4.3 章節說,任意一個 PIN 可以連接至 PORT_LED (0 - 3)。
             
            線路圖如下 :
             

        2) 這裡使用 GPIO ( PC3) 與 PORT_LED1 連接。
             

        3) 本篇文章演示是透過 USB 給 MCU 3.3V 電,開發板上自帶仿真器功能 ( CMSIS—DAP ) 。
             

        4) Jumper 連接方式如下:
             

    3. 燒錄與驗證
        1) 選擇專案,點擊右鍵並選擇【Options】。
             

        2) 選擇【Debugger】,將 Driver 選取為【CMSIS DAP】。
             

        3) 點擊【Download and Debug】 圖示,進入範例程式的 Debug 頁面。
             
        4) 點擊【Go】 圖示,讓程式運行起來,此時即可以看到開發板上的 LED1 以 1 秒週期做亮滅的閃爍。
             

        5) 用示波器測量 PC3 pin 輸出的波形,如下圖
             

四、 實作範例二 : Timer 產生 PWM 的輸出,佔空比 10% 於 PC3 管腳

    1. 編譯範例程式
        1) 開啟範例程式 : tmpm037_v2.3.2\tx00_cmsis_v2.3.2\M037\TMPM037\Project\Examples\TMRB\TMRB_PPG\IAR\ TMRB_PPG.eww。
             

        2) 編譯程式,選擇【Project】,再選擇【Clean】。
             
        3) 接著選擇【Rebuild All】。
             
        4) 確認編譯完成。
             

    2. 燒錄與驗證
        1) 點擊【Download and Debug】 圖示,進入範例程式的 Debug 頁面。
             

        2) 點擊【Go】 圖示,讓程式運行起來,此時即可以看到開發板上的 PC3 ( 與 LED1 相連接 ) ,以 10% 的佔空比做 PWM 輸出。
             

        3) 用示波器測量 PC3 pin 輸出的波形,如下圖
             

五、實作範例一程式介紹

    1. TMRB source clock & Timer register ( TBxRG0 與 TBxRG1 ) 設定
        1) 本範例使用 EVB 上外掛的 10 MHz 震盪器,經由 PLL 倍頻 ( x2 ),因此系統工作頻率為 20 MHz。
             

        2) 本範例使用 1/8 分頻器,當系統工作頻率為 20 MHz 下,此時提供 TMRB 計數的時鐘源 (ΦT0 ) 為 2.5 MHz。
             

        3) 當要產生 1 ms 的定時中斷,寄存器 TBxRG0 與 TBxRG1 的計算如下 :
             

    2. main.c
             

             底下將針對 TMRB_Enable(TSB_TB0)TMRB_Init(TSB_TB0, &m_tmrb)
             TMRB_SetRunState(TSB_TB0, TMRB_RUN) 等函式內之寄存器設定說進一步的解說。

        1) TMRB_Enable(TSB_TB0) :
             TB0EN 寄存器 bit7(TBEN) 裡寫入“1”。
                 

        2) TMRB_Init(TSB_TB0, &m_tmrb) :
             TB0MOD 寄存器的 bit3(TBCLE ) 寫入“1”, bit2-0 ( TBCLK ) 寫入“010”, TB0RG0 以及 TB0RG1 中寫入相當於 1ms 值。
             TB0RG0 – 表示 m_tmrb.LeadingTiming
             TB0RG1 – 表示 m_tmrb.TrailingTiming
                 
              
              

        3) TMRB_SetRunState(TSB_TB0, TMRB_RUN) :
             TB0RUN 寄存器的 bit2(TBPRUN ) 和 bit0 ( TBRUN ) 寫入“1”。
                 

    3. tmpm037_tmrb_int.c
              

    4. led.h
              

六、實作範例二程式介紹

    1. TB0OUT 輸出腳位與 Timer register ( TBxRG0 與 TBxRG1 ) 設定
        1) TB0OUT 輸出腳位定義:PC3。
             

        2) TBxRG0 與 TBxRG1 之設定:
             TB0RG0 – 表示 m_tmrb.LeadingTiming ( PWM 正 duty cycle value )
             TB0RG1 – 表示 m_tmrb.TrailingTiming ( 週期 )

             已知 : TrailingTiming = 500 us,Ttmrb = 0.4 us
             如果要設定輸出 PWM 10% duty cycle ( TB0RG0 ) :
             high-level time is 500 * 10% = 50 us,low-level time is 500-50 = 450us, LeadingTiming = 450 us / Ttmrb = 0x465U
             

    2. main.c
              
              
        1) TMRB_SetFlipFlop (TSB_TB0, &PPGFFInital) :
             TB0FFCR 寄存器的 bit3(TBE1T1) 寫入“1”, bit2 ( TBE0T1) 寫入“1”, Bit1-0 ( TBFF0C) 寫入“10”。
             

        2) TMRB_SetDoubleBuf (TSB_TB0, ENABLE) :
             TB0CR 寄存器的 bit7(TBWBF ) 寫入“1”。
             

七、參考資料

        [1] TMPM037FWFG Starter kit Hardware Manual_Rev1.0.pdf
        [2] TOSHIBA TX00 Peripheral Driver User Guide (TMPM037)_EN.pdf
        [3] TX00 Peripheral Driver Usage Example (TMPM037)_EN.pdf

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★博文作者未开放评论功能