一、 序言
東芝 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 的電壓轉換。
參考資料文檔
- 東芝 TMPM3HQA _v113 軟件開發包:TMPM3HQA_V113.zip
請洽世平興業 東芝產品線 FAE Chad Lee : chad.lee@wpi-group.com
- 東芝 Flash Memory 參考手冊 : TXZ-FLASH512-32-A_en_20180720.pdf