【TOSHIBA MCU】TMPM3HQ DAC 使用實作


一、 序言

東芝 TMPM3HQ MCU 是基於 ARM® Cortex®-M3 的核心,具有 real time 應用所需的低功耗、高速、高代碼密度和快速中斷響應時間等特性。


TMPM3HQ MCU 特點:採用 40nm 製程製造

ARM®32 位 Cortex®-M3 CPU

最大操作頻率                :80 MHz

工作電壓                       :2.7 to 5.5V

RAM                             :64KB

Code Flash Memory   :256KB ~ 512KB   (由包裝及型號決定)

Data Flash Memory    :32 KB, rewritable up to 100,000 times


TXZ3 應用領域:

  • 馬達控制
  • 工業設備• 影音設備
  • 家用電器
  • 空氣調節系統 (HVAC)


本篇博文,主要介紹 TMPM3HQ MCU DAC 的實作。

 

二、 編譯工具

TMPM3HQ 支援 IAR 與 Keil IDE,本篇內容採用IAR 做為編譯環境;

此外,還需下載並且安裝 Device Family Pack TXZ3 系列的 Device Family Pack 芯片支援包

https://www.keil.com/dd2/toshiba/tmpm3hpfzfg/#!#eula-container

 

PS:IAR 的環境搭建,請參考此篇博文:  TOSHIBA MCU 環境搭建與實作 GPIO 



三、 TMPM3HQ 軟體開發包

東芝提供 TMPM3HQA _v113 軟體開發包:TMPM3HQA_V113.zip

請洽 世平興業 東芝產品線 FAE Chad Lee : chad.lee@wpi-group.com


取得 TMPM3HQ.zip 檔並且解壓縮後,裡面有 TMPM3HQA_v133 這個資料夾,使用者可以將
這個資料夾解壓到準備開發 TMPM3HQ 程式碼的資料夾中(建議路徑不要使用中文或過長的檔案夾名稱)


以下是這包軟體提供的應用參考程式:

 


四、
開發板介紹

AdBun-M3HQ 為 TMPM3HQ 的 EVM,提供客戶熟悉 TMPM3HQ MCU 的使用與功能驗證。


AdBun-M3HQ (EVB) :

    適用於東芝 TMPM3HQFDFG MCU

    2.54mm 間距 3 pin 跳線連接器 (CN18) 用於電源 3.3V 或 5V 選擇

    4 個綠色按鈕開關 (S4、S5、S6、S7)

    4個LED (D10、D9、D8、D7)

    2 可變電阻 (VR1、VR2)

    內置 USB 拖放 FLASH 編程器

    RAM 大小 (64Kbytes) 和 BACKUP RAM (2Kbytes)。


M3HQ Group(2) EVM – AdBum-M3HQ

 

 

五、 DAC Project 實作

以下的實作,目的是演示透過終端機輸入合理的數值去控制 DAC0 及 DAC1 的電壓輸出;我們將在 IAR 的編譯環境中進行。


(1) 終端機程式

    ① 使用“Tera Team”工具程式

    ② 將Baudrate 設成 115200,透過 UART 設置 DAC0 及 DAC1 的電壓值


(2) 開發板線路圖與 Jump 設定:

    ① 這裡使用 UART0 : TX ( PA1 ),RX ( PA2 )。

    ② 連接 CN12 Pin 53-54 與 Pin 55-56

        評估板的UART TX 及 RX 及 MCU PA1 與 PA2未接通,因此需手動連接起來)

 


(UART TX / RX 連接處)


(3) 開啟 \TMPM3HQA\Examples\DAC\DAC 中的 DAC.eww 的 IAR 專案檔,

 

請依下圖設置 MCU 型號為 “Toshiba TMPM3HQFDFG

 

進入選型列表選取 "Toshiba TMPM3HQFDFG"


(4)
接著 Rebuild DAC專案                    

 


在 Terminal 工具“Tera Term”中 Serial Port 設定Baud rate 設定為“115200”,

  

並且於 Terminal setup 選單中 Receive 及 Transmi 都設成“LF”,並且勾選“Local echo”


(5)
設置好後,開始執行程式,

在 IAR 視窗中點擊“Downloader and Debug”按鍵或者按下“Ctrl+D”功能鍵將程式下載到評估板的 MCU 中

 


接著用滑鼠點擊“Go”按鍵執行程式

 


[執行結果]

程式開始執行時,會打印要求輸入 0 ~ 255 之間的電壓設定值提示;

若輸入的資料不符合要求,則會打印出“Parameter Error!!”的輸入錯誤提示,

若所輸入的資料符合要求,則會打印出該數值所轉換的電壓值,

   

並且可在 DAC0 及 DAC1 量測到該電壓。


[程式討論]

 


TSB_DA0 及 TSB_DA1 則是分別定義以“TSB_DA_TypeDef”為 DAC 暫存器指標資料結構的 DAC0及 DAC1 暫存器的記憶體存取位置


“TSB_DA_TypeDef”
是定義 DAC 所 mapping 對應的暫存器資料結構

typedef struct

{

__IO uint32_t CTL;               /*!< DAC Control Register */

__IO uint32_t REG;               /*!< DAC output Register */

} TSB_DA_TypeDef;


TSB_DA0 及 TSB_DA1 是 DAC0 及 DAC1 暫存器在記憶體所 mapping 的地址

#define TSB_DA0                ((TSB_DA_TypeDef *)     TSB_DA0_BASE)

#define TSB_DA1                ((TSB_DA_TypeDef *)     TSB_DA1_BASE)

 

#define TSB_DA0_BASE              (PERI_BASE + 0x0054000UL)       // DAC0 的暫存器記憶體位置

#define TSB_DA1_BASE              (PERI_BASE + 0x0055000UL)       // DAC1 的暫存器記憶體位置


以下的程式碼,是將 DAC enable,並且設置 0 ~ 255 的數值 (DAC 為 8 bits 解析度) 做為 DAC 電壓設定

TXZ_Result result;

result = REG_DAC_enable(TSB_DA0);                                    // 將 DAC0 enable

result = REG_DAC_enable(TSB_DA1);                                    // 將 DAC1 enable

result = REG_DAC_DAxREG_set(TSB_DA0, res);                     // 輸入設置 DAC0 的電壓輸入

result = REG_DAC_DAxREG_set(TSB_DA1, res);                     // 輸入設置 DAC1 的電壓輸入


result 為接收 REG_DAC_enable() 與REG_DAC_DAxREG_set() 的回傳值,判斷設置是否成功;

REG_DAC_enable(TSB_DAC0) 及 REG_DAC_enable(TSB_DA1) 表示,透過存取 DAC0 及 DAC1 
暫存器的方式,將 DAC0 及 DAC1 enable;
REG_DAC_DAxREG_set(TSB_DA0, res) 及 REG_DAC_DAxREG_set(TSB_DA1, res),表示 res 為
0~255 之間的有效數值,透過 TSB_DA0 及 TSB_DA1 設定 DAC0 及 DAC1 的電壓轉換。



參考資料文檔

  1. 東芝 TMPM3HQA _v113 軟件開發包:TMPM3HQA_V113.zip

     請洽世平興業 東芝產品線 FAE Chad Lee : chad.lee@wpi-group.com

  1. 東芝 Flash Memory 參考手冊 :  TXZ-FLASH512-32-A_en_20180720.pdf

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★博文作者未開放評論功能