NXP KEA系列,恩智浦收購飛思卡爾後,推出的基於ARM cortex M0核心的32位微控制器。我在開發使用的過程中,總結了這個晶片的一些相關特性和除錯問題點。
KEA128
IO口暫存器
PDOR:資料輸出暫存器;PDIR:資料輸入暫存器;PDDR:資料方向暫存器;PIDR:輸入禁用暫存器。其中,PIDR輸入禁用暫存器比較特殊。如果要配置輸入口,除了配置PDDR資料方向暫存器外,還要使能PIDR輸入禁用暫存器。這是一種安全設計,保護IO口,可以主動避免微控制器燒IO口。
可以關閉RESET功能
晶片有IO口複用了reset的功能,這個功能是可以透過軟體配置關閉的。特別是在汽車電子的設計中,基於安全考慮,是不允許晶片IO口具備reset功能的。因為,晶片如何受到外部電子干擾,可能會觸發這個reset功能,從而導致電子模組工作異常。
SIM_SOPT0寫入的時候需要注意:RSTPE 和NMIE 在每次復位時只能寫入一次。
重啟上電沒有功能
重啟上電後,觸發中斷陷阱。比如,我有一次在除錯的過程中,沒有將未使用的捕捉口(CCP)沒有關掉,當微控制器外部產生電平跳變,程式進入中斷中,沒有退出。
看門狗
看門狗需要解鎖才能配置,不先進行解鎖直接配置是無效的,配置方法:
WDOG_CNT = 0x20C5; // write the 1st unlock word
WDOG_CNT = 0x28D9; // write the 2nd unlock word
餵狗,需要關中斷,如果不關中斷,會造成餵狗失敗。餵狗方法:
__DI();
WDOG_CNT = 0x02A6;
WDOG_CNT = 0x80B4;
__EI();
PWM輸出
配置發現沒有PWM輸出,分析發現,與佔空比相關引數FTM0_C0V配置不成功有關。寫FTM0_C0V是有條件的:從MOD 更改為CNTIN 之後更新才會有效。
HardFault_Handler
HardFault_Handler,是所有未定義中斷函式的入口地址。如果發現程式掉到HardFault_Handler裡了,可以檢測一下,是不是觸發了某些未定義的中斷。
debug故障
問題1、不進系統時鐘中斷
原因:沒有正確選擇硬體模擬,而是選擇了軟體模擬模擬。
問題2、不進模擬
原因:use flash loader未勾選,程式沒有下載到目標板裡去。
內外部基準時鐘切換
晶片上電預設使用內部基準時鐘,需要使用外部基準時鐘時,先要滿足OSC初始化完成,才能切換成功。OSC初始化完成檢測:
while ((OSC_CR & OSC_CR_OSCINIT_MASK) == 0); // wait until oscillator is ready
埠複用
1、當KBI喚醒與CCP埠複用時,會導致晶片不能被喚醒,也就是KBI喚醒功能失效,就算關CCP使能也無效。可以採用引腳對映切換規避改這個問題,相當於直接把CCP功能給切掉了。
2、設定埠輸出,沒訊號輸出。檢查發現,這個埠複用了AD功能。