前言
本片博文將以 MCAL 使用者的角度,配置使用芯馳 E3640 Gateway 開發板的 MACL 的 DIO、PORT、WDOG 模塊。目的是通過 MCAL 配置出 GPIO Toggle 輸出和 PINT 中斷檢測,使用 WDOG 配合 GPT 模塊實現定時餵狗,超時復位。
使用工具
- EB Tresos 26.2
- IAR 9.30.1
- 芯馳 E3640 Gateway 開發板
DIO & PORT 配置
對於 E3640 的 GPIO,每一個 GPIO 對應一個 DIO Channel ID,範圍由 0-213 一個 Port 下可以分配多個 Channel ID。
DIO 配置:需確定 GPIO 的 DIO Channel ID(見圖 1)和 Port(見表 1)。
圖 1. DIO Channel ID
Port |
Channel ID |
0 |
0-31 |
1 |
32-63 |
2 |
64-95 |
3 |
96-127 |
4 |
128-134 |
5 |
135-166 |
6 |
167-198 |
7 |
199-213 |
表 1. GPIO Port
Port 配置:
- 在mcal 的 Port 處正常配置 GPIO 的輸入輸出,上下拉即可實現
- 對於 GPIO中斷的使用,需要在 Port 處使能中斷即可。
GPIO Toggle 輸出
控制 GPIO S6
- 配置 DIO:S6 的 DIOChannel ID 為 107,Port 為 Port3,因此配置如圖 2:
圖 2. S6 的 DIO
- 配置 Port:見圖 3。
圖 3. S6 Port 配置
DIO TEST 程序:
圖 4. DIO TEST 程序
下載燒錄,程序運行,在串口控制台輸入:dio test,如圖 5,S6 正常翻轉。
圖 5. S6 正常翻轉
GPIO 中斷檢測
- 使用 S4 作為中斷檢測腳,配置其 DIO和 Port,見圖 6:
圖 6. S4 DIO 和 Port 配置
使用 GPIO 中斷,需將配置好的 GPIO 腳的總中斷打開,需要根據 GPIO 的 Port 找到對應的中斷序列號,見圖 8。
圖 7. 根據 GPIO 的 Port 找到對應的中斷序列號
在 DIO TEST 例程中添加綁定和使能中斷的函數:
圖 8. 在例程運行時綁定並使能 GPIO 中斷
在中斷服務函數中:
圖 9. 在中斷服務函數中進行列印
將 S6 的輸出接到 S4 上,發現在 dio test 進入時,即使不讓 S6 toogle,S4 也會進入中斷一次,之後再輸入 dio test 則不會自動進入中斷,因此一次測試得到的進入中斷的次數為 21 次。
圖 10. 在中斷服務函數中進行列印
WDG 看門狗:
不同的看門狗在不同的核中,1和2在 SF 核,3 和 4 在 FP 核,5 和 6 在 FX 核。
在 SF 核里跑的程序,使用看門狗 1 或 2。
WdgInitialTimeout 是初始情況下的超時配置,在不進行餵狗的情況下,超過 WdgInitialTimeout 將導致看門狗中斷(此值似乎要與 WdgSettingsConfig_4 下的 WdgTimeoutPeriod (0 -> 65535) 值一致)。
圖 11. 看門狗初始配置
在 WdgSettingsConfig_4 下配置 WDT2 為 WDGIF_SLOW_MODE 模式,看門狗超時時間為 1000ms,窗口時間為 500ms。
圖 12. 看門狗基礎配置
圖 13. 看門狗超時時間設置
程序如下,GPT 定時 750ms 進行中斷,在中斷中進行餵狗,進行測試,Debug 模式下復位後串口無法使用,程序不能復位運行:
在 gpt_example 中 gpt6_irq_test 綁定測試例程 201:
圖 14. GPT 測試函數綁定
對於餵狗的程序,Wdg_SetTriggerCondition 的參數 Timeout,最終設定 WDT 的 WTC 寄存器,即重新設定了超時時間,因此,此值應和 EB 中設定的超時時間一致。
圖 15. GPT 和看門狗測試程序
圖 16. 10 次餵狗後復位
參考資料
- 《E3400_E3600_MCU_Datasheet_Rev00.19.pdf》
- 《E3400_E3600_MCU_Technical_Reference_Manual_Rev00.12.pdf》
評論