STM32學習【1】ERROR:RAM check failed @ADDRESS 0x20000000

       早就聽說過ARM的各種牛逼,可是一看那密密麻麻的引腳就退縮了,一直停留在單片機層次上。這次自己畫了一塊STM32芯片的PCB板,想自己學習一下。

       芯片型號:STM32F103C8T6,Cortex-M3系列,支持ISP串口燒寫,支持單線調試SWD和JTAG接口。

       封裝:LQFP48

       原理圖如下:


       設計時考慮以兩種方法燒寫程序:一、串口接口P4接TTL轉USB直接接電腦,用mcuisp軟件下載程序;二、SWD接口P5接某寶上購來的jlink ob ARM下載器,用SEGGER J-Link ARM軟件或keil下載。

       焊接後發現SWD無法下載。

       設備管理器中“通用串行總線控制器”下出現J-Link driver標識,J-Link Commander軟件能夠正常識別芯片,J-Flash軟件可以正常執行Target下Connect、Unsecure chip等軟件,但執行Program或Auto(F7)命令時報錯:


-connecting....
--connected successfully,
--ERASING affecttd secttor.....
-ERROR:RAM check failed @ADDRESS 0x20000000


       在網上查詢後,一般認爲是以下問題:

       1、STM32芯片電源引腳電壓不夠

       2、jlink下載線過長,干擾太大

       3、復位腳被拉低

       4、SEGGER J-Link ARM軟件版本過老

       5、焊接問題與接線問題

       6、BOOT0和BOOT1設置問題

       7、PCB板上電路干擾


       J-Link Commander軟件能夠正常識別芯片能正確識別芯片,說明接線和焊接沒有什麼問題。jlink ob ARM下載線長不到30cm。SEGGER J-Link ARM軟件版本V4.40。BOOT0和BOOT1都接100k接地。

       反覆嘗試確定問題後,檢查芯片所有引腳,電源引腳和GND引腳電壓正常,正常時NRST引腳電壓爲2V左右,被拉低,重新檢查復位電路,發現復位電容C22 104電壓確實爲2V左右,網上有人將復位電阻R26調節至1K並調節復位電容C22。

       去掉復位電容C22後,發現NRST引腳電壓仍爲2V左右,然後將復位電阻R2改爲470R,發現電壓升至3.3V,重新下載程序,發現回覆正常,反覆下載後,一切正常。

       

發佈了43 篇原創文章 · 獲贊 50 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章