產品簡介
HC32F460 系列是基于 ARM? Cortex?-M4 32-bit RISC CPU,最高工作頻率 200MHz 的高性能 MCU。Cortex-M4 內核集成了浮點運算單元(FPU)和 DSP,實現單精度浮點算術運算,支持 所有 ARM 單精度數據處理指令和數據類型,支持完整 DSP 指令集。內核集成了 MPU 單元, 同時疊加 DMAC 專用 MPU 單元,保障系統運行的安全性。
公司簡介
沈陽芯碩科技術有限公司(Shenyang IC Information Technologies Co.,Ltd.)成立于2020年,公司總部位于沈陽。隨著公司業務的擴大,在深圳,廣州,寧波,青島等均設有銷售分支,團隊成立至今一直致力于集成電路產品的市場推廣。
公司集銷售,技術服務,技術開發于一體,為客戶提供全面解決方案與技術服務。目前,公司涉足的主要領域包括消防,家電,汽車電子,電力系統,儀器儀表等。
展開
產品說明
華大F460支持IAP升級程序,但一般做IAP程序時都需要做一個bootloader,華大官方也提供了一個IAP demo。
但是這個demo例程會有一個問題:
此demo是基于華大F460官方開發板制作的,官方開發板是使用了外部8M晶振。但到了客戶那里,可能不使用外部晶振,使用內部HRC晶振。
那么問題就來了,460 在Flash 0x00000400地址上存儲ICG數據(ICG配置,請參考華大編程手冊第6章內容)
這個IGC功能是在MCU上電時,硬件讀取Flash地址0x0400上的系統配置數據。
其中ICG1存儲了HRC上電時是16M RC還是20M的RC。
客戶出現的問題是,每次編譯bootloader后,系統時鐘一會是16M,一會是20M,每次編譯后都隨機變動。
對比了一下客戶的.map文件和官方SDK內例程的.map :
SDK官方例程uart_dma_rx_tx map文件 華大給的IAP hc32f46x_boot程序(bootloader)map文件
會發現在0x00000400地址上,SDK中例子是data區,放入的是默認的ICG數據信息。而華大IAP bootloader 0x000004000地址范圍內是代碼函數,是code區。
那么MCU上電后從Flash的0x00000400地址開始讀ICG數據 設置MCU硬件,SDK內例子沒問題,而IAP bootloader 讀到的卻是code代碼數據,這樣HRCFREQSEL確定RCH頻率的位就變得不確定。
那么確實,華大官方給的IAP demo中boot代碼工程是由問題的。
那改怎么做呢?看了一下uart_dma_rx_tx例子工程代碼,其中該工程把華大driver中的hc32f46x_icg.c文件加入到了工程參與編譯。
請看hc32f46x_icg.c內容:
hc32f46x_icg.c 中把默認的ICG信息map到了0x00000400地址上,而且是data分區(定義成const數組)。
所以根據460 MCU上電后硬件自動讀取0x00000400地址上數據 ,把數據加載到初始化配置寄存器 這一操作,我們必須把ICG數據放入到0x00000400地址上。
那么可以參考SDK中例程的方法,直接在keil或其他IDE中添加hc32f46x_icg.c文件,讓hc32f46x_icg.c文件參與編譯,參與code map。
這樣 在程序下載hex的同時,ICG數據 自動下載到了地址0x00000400地址上。
當然,我們可以根據我們的需要,更改hc32f46x_icg.c 各個數據,以便ICG配置適合我們的使用。
華大官方460 IAP例子 bootloader代碼中沒有加入hc32f46x_icg.c文件:
以上ICG一定要注意添加,而且華大460 IAP demo代碼是沒有添加ICG的,這個是一個明顯的錯誤。
本頁產品地址:http://lgsztm.com/sell/show-9168937.html

免責聲明:以上所展示的[
華大F460 官方IAP例子問題:無ICG數據]信息由會員[
沈陽芯碩科技有限公司]自行提供,內容的真實性、準確性和合法性由發布會員負責。
[給覽網]對此不承擔任何責任。
友情提醒:為規避購買風險,建議您在購買相關產品前務必確認供應商資質及產品質量!