天天看点

STM32烧录程序遇坑记录

1. 前言

嵌入式工程师的工作内容

- 阅读和编写工程代码
- 看硬件原理图,查阅芯片数据手册
           
第一部分

阅读和编写工程代码

就是说当我们的工程比较复杂时,将涉及到非常多的硬件和功能,作为软件工程师,首先要做的是看懂芯片商或第三方提供的工程代码,然后在此基础上移植或添加代码。

比如,蓝牙芯片厂商提供的蓝牙芯片,以恒玄科技的BES2300为例,厂商会提供相应的软件开发包,即SDK
SDK中提供了软件开发的基础,如硬件抽象层、操作系统和上层应用入口和API等
我们要熟悉其提供的API接口,并利用其开发新功能

再比如,工程中可能会用到一些智能硬件和算法,这部分算法可能是由第三方提供的,如音频处理算法
这部分内容我们也需要了解
           
第二部分

嵌入式开发人员的日常不仅仅是敲代码,还要看懂硬件原理图,了解芯片功能和IO引脚等

对于硬件原理图需要看什么,博主简单总结如下

- 芯片复位方式
    - 硬件复位方式
    - 软件复位方式
- 电源树
    - 开发板的电源输入
    - 电源供电器件
    - 5V 电压供电器件
    - 3.3V 电压供电器件
- MCU 引脚配置
    - GPIO:搞清楚GPIO与器件连接情况、输入输出状态、是否产生中断等 
    - I2C
    - UART
           

这里,对于电源树部分再啰嗦一下:

当系统中采用锂电池供电时,就会涉及到两部分内容

- 锂电池充放电与电量检测
    - 充放电IC:如 MP2661、BQ25150      // 给锂电池充电,并提供系统所需的各种电压,如3.3V、5V等
    - 电量检测IC:如 MAX17050
- 电源保护与电压转换
    - OVP:过压保护
    - OCP:过流保护
    - LDO:低压差线性稳压器
    - BOOST:升压电路
           

2. 软件烧录流程

这里说的是从工厂拿回来的裸板焊接调试的流程,跟我们平常使用的开发板烧录程序不太一样,因为开发板上已经引出程序下载接口和调试接口,但产品开发时有可能需要自己引线。

主要流程与细节如下:

- 测试点引线
    - 电源:5v / 3.3v / GND
    - 串口:TX / RX
    - 烧录:SWDIO / SWCLK
- 引线导通测试
    - 万用表二极管档测试
- 程序烧录
    - J-Link:需安装驱动
    - ST-Link:需安装驱动
    - J-Flash
           

引线完成之后,不要急于上电,用万用表测试一下

- 引线导通情况
- 电源短接情况
- 接线是否错误
	- 避免产生以下情况
	- 5V 接到 3.3 V
	- 5V/3.3V 与 GND 接反
           

JLINK V9 可支持JTAG和SWD两种调试模式,同时STM32也支持JTAG 和SWD。

所以,我们有2种方式可以用来调试,当用JTAG调试的时候,占用的IO线比较多,而SWD 调试的时候占用的IO 线只需要两根即可。

本博客是以Keil开发环境为例,程序下载方式有上述三种,使用不同的下载工具,需要在Keil中进行设置:

魔法棒 -》 Debug -》 SW 方式
           

若接线正常后,当上电和插上J-link后,在 Debug 窗口中应能识别到 J-link 和 芯片MCU,如下图:

左侧是 J-link设备

右侧是 芯片设备

STM32烧录程序遇坑记录

3. 遇坑记录

3.1 Loading PDSC Debug Description Failed

打开工程时,报如图错误

解决方法

STM32烧录程序遇坑记录
3.2 识别不到CPU

问题现象:在 Debug 窗口能够显示 J-link 设备,但不显示芯片

问题分析:

  • 芯片未工作
  • 接线问题、虚焊等

对于芯片未工作这种情况,排除方法:

- 测量 MCU 是否上电
- 测量晶振是否正常
           

继续阅读