基于STM32+Jlink的边界扫描实际应用

发布者:RadiantSerenity最新更新时间:2024-04-03 来源: elecfans关键字:STM32  Jlink  边界扫描 手机看文章 扫描二维码
随时随地手机看文章

前面几篇文章,介绍了关于JTAG边界扫描的一些基础知识和常用的调试软件。

强大的JTAG边界扫描1-基本原理


强大的JTAG边界扫描2-BSDL文件

强大的JTAG边界扫描3-常用边界扫描测试软件

今天我们来演示基于STM32+Jlink的边界扫描实际应用。

试想这样一个场景,我们新设计了一款集成了很多芯片的板卡,包括BGA封装的微控制器,如FPGA/MCU,还有LED、按键、串口、传感器、ADC等基本外设。

我们需要测试一下硬件电路工作是否正常、焊接是否良好,通常我们会写个测试代码,比如控制LED闪烁,读取按键的输入,串口收发一些数据,然后把程序烧录进去,看看现象是否和我们设计的一致。

当现象和设计不一致时,是代码设计的问题、还是硬件原理的问题、又或者是焊接的问题呢?应该如何一一排除呢?

这里就可以使用JTAG边界扫描的测试方法,来验证到底是哪里出的问题,因为JTAG边界扫描不需要写任何代码,只需要一个BSDL文件,就可以控制和读取芯片的任意管脚。

下面我们以意法半导体 MCU STM32F103为例,配合JLink,演示JTAG边界扫描的应用。

1. 获取芯片的BSDL文件

获取意法半导体MCU的BSDL文件,可以到官方网站搜索BSDL,就会弹出对应系列的BSDL文件包。171e4d34-5121-11ee-a25d-92fbcf53809c.jpg

STM32F1系列BSDL文件的下载地址:


下载到本地之后解压,可以看到很多BSDL文件,我们开发板上的芯片型号是STM32F103ZET6-LQFP144,属于大容量芯片,所以BSDL文件对应的是:


STM32F1_High_density_LQFP144.bsd 关于其他芯片的BSDL文件获取方式,可以参考之前的文章:强大的JTAG边界扫描(2):BSDL文件介绍

2. 硬件连接

按照下图所示,使用排线连接JLink和开发板的JTAG接口。173a4e08-5121-11ee-a25d-92fbcf53809c.jpghw 并确保设备管理器里JLink驱动被正确识别。

176f819a-5121-11ee-a25d-92fbcf53809c.jpg

3. 边界扫描测试

关于TopJTAG边界扫描测试软件的介绍和基本使用,可以参考之前的文章:强大的JTAG边界扫描(3):常用边界扫描测试软件 打开TopJTAG Probe软件之后,先创建一个工程,并选择JTAG设备类型,这里我们使用的是JLink。17826422-5121-11ee-a25d-92fbcf53809c.jpg

如果硬件连接正确,驱动安装正常,软件会自动识别到连接的芯片。


1793288e-5121-11ee-a25d-92fbcf53809c.jpg

指定芯片所对应的BSDL文件,这里我们选择上一步下载的STM32F1_High_density_LQFP144.bsd文件,并进行IDCODE校验。

17b121d6-5121-11ee-a25d-92fbcf53809c.jpg

如果IDCODE不匹配,说明选择的BSDL文件错误,之后就进入到边界扫描测试界面了。

17de3482-5121-11ee-a25d-92fbcf53809c.jpg

点击Instruction按钮,可以选择三种测试命令:

BYPASS:旁路掉当前器件,在菊花链拓扑方式时,跳过当前器件

SAMPLE:采样模式,可以对所有管脚的状态进行读取,可以统计电平翻转的次数,或者以波形方式显示实时状态

EXTEST:可以任意的控制所有外部管脚的状态,可手动指定为高低电平,高阻态。

17f27906-5121-11ee-a25d-92fbcf53809c.jpg

这里我们选择SAMPLE模式,点击RUN按钮,可以看到芯片所有的管脚实时状态,

182160b8-5121-11ee-a25d-92fbcf53809c.jpg


在Pins窗口,可以看到所有管脚的实时状态,选中一个管脚,可以把它添加到Watch窗口,或者Waveform窗口。 切换到EXTEST模式,可以手动设置管脚的高低电平或高阻状态。

18584bfa-5121-11ee-a25d-92fbcf53809c.jpg

Watch窗口信号的还原能力,完全取决于JTAG_TCK的频率,即管脚信号的采样时钟。

1877ef46-5121-11ee-a25d-92fbcf53809c.jpg


4. 总结

通过边界扫描可以快速的判断文章开头提到的几个问题,如果使用边界扫描的方式,发现读取和控制管脚的状态不对,那么可以判定是焊接的问题,通过编程,甚至可以按照一定的时序来控制管脚的状态,从而达到控制外部器件的目的。
总之,边界扫描是一种非常实用的测试方法,在电路板生产制造、芯片设计、芯片封测等方面都有很广泛的应用。


关键字:STM32  Jlink  边界扫描 引用地址:基于STM32+Jlink的边界扫描实际应用

上一篇:STM32驱动FLASH(W25Q64)
下一篇:使用STM32任意定时器生成动态波形

推荐阅读最新更新时间:2024-11-05 08:06

14种嵌入式操作系统的特点介绍
下面分别介绍这14种嵌入式操作系统的特点。 1、μClinux μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。 同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。 μClinux在结构上继承了标准Linux的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度,仅针对中低档嵌入式CPU特点进行改良,且不支持内核
[单片机]
14种嵌入式操作系统的特点介绍
STM32下单只DS18B20的驱动
折腾了一晚上,才把DS18B20的驱动移植到STM32上来。以前在51上使用过单个和多个连接的DS18B20,有现成的程序了,以为很快就能弄好,结果还是被卡住了,下面说下几个关键点吧: 首先是延时的问题,STM32上若用软件延时的话不太好算时间,所以要么用定时器要么用SysTick这个定时器来完成延时的计算。相比之下用SysTick来的简单方便点。 接着是STM32 IO脚的配置问题,因为51是双向的IO,所以作为输入输出都比较方便。STM32的IO是准双向的IO,网上查了下资料,说将STM32的IO配置成开漏输出,然后外接上拉即可实现双向IO。于是我也按规定做了,但调了老半天都不成功,是因为DS18B20没有响应的信号
[单片机]
工程师STM32单片机学习基础手记(4):用PWM实现荧火虫灯(六)
     DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;   DMA_InitStructure.DMA_Priority = DMA_Priority_High;   DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;   以下是stm32f10x_dma.c中有关DMA的初始化设置代码   tmpreg |= DMA_InitStruct-》DMA_DIR | DMA_InitStruct-》DMA_Mode |   DMA_InitStruct-》DMA_PeripheralInc | DMA_InitStruct-》DMA
[模拟电子]
工程师<font color='red'>STM32</font>单片机学习基础手记(4):用PWM实现荧火虫灯(六)
STM32+IAP方案 实现网络升级应用固件
概况: 什么是IAP,为什么要IAP 可实现的原理 实现过程 细节及实现 以上基本都可以从【IAR环境下STM32+IAP方案的实现】中找到答案。这里只是贴图,醒目: IAP框架布局: STM32F103ZET6的启动方式有三种:内置FLASH启动、内置SRAM启动、系统存储器ROM启动,通过BOOT0和BOOT1引脚的设置可以选择从哪中方式启动,这里选择内置的FLASH启动。其FLASH的地址为0x08000000—0x0807ffff,共512KB,这些都能从芯片数据手册中直接得到。而这里首要的一个问题是中断的问题。正常情况下发生中断的过程为:发生中断(中断请求),到中断向量表查找中断函数入口地址,跳转到中断函数,
[单片机]
STM32+IAP方案 实现网络升级应用固件
stm32之中断系统
前言:这一节以及后面的定时器部分都是学习所有的单片机时的最重要的部分,我也花了很多时间去理解手册和程序,我争取尽量全面并且细致的记录我的体会。 一、中断的概念 这里就省略了,相信你学过单片机就会懂。 二、stm32里面的NVIC是什么 NVIC的中文意思是嵌套向量中断控制器,控制着中断的相关功能(其中包括中断源、抢占优先级、响应优先级、中断的使能与失能),具体的配置方法后面会提到。 三、stm32里面的优先级 在stm32中,一个中断的优先级由两部分决定,一个是抢占式优先级,还有一个是响应优先级。两个优先级组成了一个4位的控制字。 如图: 那么我们就会问,这有四位,那两个优先级各占多少位。就像图中所展示的
[单片机]
<font color='red'>stm32</font>之中断系统
STM32 串口通信(库函数操作)
1.说在前面: 清明三天小假期,放松一下无可厚非,但是,依旧要完成自己的学习任务 2.串口通信的简单介绍: 1.将串口作为一个沟通的渠道,可以和外界进行接收和发送信号 2.STM32和串口相关的寄存器: 2-1:USART_SR(状态寄存器):存储着MCU的一些状态 2-2:USART_DR(数据寄存器):暂存着一些数据信息 2-3:USART_BRR(波特率寄存器:暂存波特率信息 2-4:USART_CRI(控制寄存器):用于给usart进行使能 3.注:波特率的计算方法: 只要给出相应的时钟频率和设置usartdiv,就可以计算出波特率 3.串口通讯的简单配置和使用 1.其实基
[单片机]
<font color='red'>STM32</font> 串口通信(库函数操作)
STM32编译错误汇总(一)
error: L6236E: No section matches selector - no section matche&nbs 没有添加启动文件 startup. 移植STM32程序失败 检查Target中 Use Cross-Module Optimization 和 Use MicroLIB 有没有勾选上。 FCARM - Output Name not specified, please check ‘Options for Target - Utilities’ 看看添加的lib文件是不是 lib后缀名,或者说编译器是否把它识别为lib文件, 往项目管理器添加文件的时候,文件类型是不是手滑 选成了Im
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved