STM32学习【1】ERROR:RAM check failed @ADDRESS 0x20000000

       早就听说过ARM的各种牛逼,可是一看那密密麻麻的引脚就退缩了,一直停留在单片机层次上。这次自己画了一块STM32芯片的PCB板,想自己学习一下。

       芯片型号:STM32F103C8T6,Cortex-M3系列,支持ISP串口烧写,支持单线调试SWD和JTAG接口。

       封装:LQFP48

       原理图如下:

STM32学习【1】ERROR:RAM check failed @ADDRESS 0x20000000_第1张图片STM32学习【1】ERROR:RAM check failed @ADDRESS 0x20000000_第2张图片

       设计时考虑以两种方法烧写程序:一、串口接口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,重新下载程序,发现回复正常,反复下载后,一切正常。

       

你可能感兴趣的:(STM32,ARM)