STMCU小助手
发布时间:2022-2-28 19:15
|
前言5 |* @" G/ ~) V4 a9 p 菊花链 JTAG STM32) h: D) m9 ^/ J1 R1 |' A 一、简要说明/ U, x& ^( P9 V3 h/ t# w, s 硬件:STM32F401C-DISCO *2,MCU :STM32F401VCT6 ; 软件:\STM32Cube_FW_F4_V1.8.0\Projects\STM32F401-Discovery\Demonstrations\EWARM 对于硬件的连接以及运行后的现象,readme.txt 中已经说明:) \4 m |7 c! K; F/ g8 u% K
程序运行的结果是 LD3~LD6 是跑马灯形式的闪烁。 参看 STM32F401 的参考手册,RM0368 Rev3. 里面在 Debug support(DBG)里面有描述:$ k/ I7 R9 o# J
同样在 JTAG 本身的官网中,也有同样的描述:UM08001(User guide of JTAG emulators for ARM cores),
这也也要注意一下,什么在菊花链中,哪一个是 Device0,即 TDO 接 JTAG 的那个设备,其他的 Device1,2,,,,依次往后排;( `. ~& y* G) p& f9 ^3 D 2 y) u g) C( } i1 c& E- V 二、环境搭建% l, C( l9 I, M$ a 按照上图,进行 JTAG 的环境的搭建; 参看 STM32F401VCT6,100pinTQFP 封装的数据手册,找出其引脚的分配; 2 o! ^9 H7 @ b, a3 s; S4 u, t
0 H1 n: `) J O# k3 \* Y7 I; r* t 在加上 JTAG 的接口的定义:% A* [- s- T: N7 m
即需要 JTAG 的标准引脚的,第 9,7,3,5,13 这 5 个引脚;然后链接相应的引脚:& b! F) c6 f( c( y
4 x3 ]8 ]/ y, T- w- P) { 此外,对于正常链接目标芯片,还需要检测芯片的电源/地,两个引脚 1,20;9 a: ^5 U1 [: e! U, P& |# A# \. | 当线链接好后, ' M$ g3 }5 a% G2 |0 c) V) i0 f
可以用 IAR 直接下载程序以判断接线是否正确,或者用 KEil 的上述功能,检查他是否检测到了相应的驱动。对于多个板子的话,就是主要改变 TDI,TDO 即可;因为参照上面的描述,TCK,TMS,TRST 这三个脚都是公用的;下图所示,KEIL 发现了两个驱动,即表明菊花链的硬件链接是对的了;- R: z+ D) L! }% J$ B5 l( W8 i % [" M, y$ y; U
u# v1 a2 C8 v W * b4 L$ W$ e9 Z; @" | 通过下拉条来看,这两个驱动的名字是一摸一样的,这也复合我们实际的电路,都是使用的同样的两块 STM32F401VCT6 ;那需要怎样的设定来判断是菊花链中的哪一个设备呢? c! I- ~% K# s) ]/ W 这里简要的说明一个事情:, X/ V9 n" Q; k) U3 E0 y* Q9 R9 Y 对于每一个 STM32 包含 2 个 TAPs(如下图):# W1 c& L3 c2 t Y& p1 R TAP0: Cortex M4 TAP. (the nearest TAP)./ h9 E! {: d1 |" ]1 ?& C6 i TAP1: Boundary Scan TAP.) T: W# D' }0 H# o, n+ o& G7 M$ J: g3 o 所以: With 2 STM32 in a scan chain, we will have 4 TAPs: TAP0: Cortex M4 TAP IC1. TAP1: Boundary Scan TAP IC1.5 Z3 x9 P/ Q/ E TAP2: Cortex M4 TAP IC2.2 _3 f \7 c. T! K TAP3: Boundary Scan TAP IC2+ U- X% v: V: H% V7 X1 \* p
' c+ _7 }2 W- l7 k+ A- n4 P 于是,对于 IAR- a/ J2 y$ A/ }$ r, a+ \; F! R . M( y0 A/ {4 i1 H5 v
配置如下: 烧录 Device 0:( |, ~( D1 A& B& J+ l" V *TAP number = 0 (Cortex TAP, the nearest ==> #0) *Preceeding bits= 0 (the very first device/TAP in the chain) 7 \3 ^( F6 H2 B# I " v' ?; g" E8 e' b k7 ]3 s. H 烧录 Device 1:# E% y a) V' S *TAP number = 20 T, l4 N9 \' h4 ]3 I- z *Preceeding bits= 9(5+4) 双开 IAR,下载调试,ok;, ?* H% n% ?3 R$ ^ 6 D( g/ B; Z f
) o! g5 _# P* o, q3 m 如果三个的话,也是如此,则5 G" H Z& k P& { U Device2 的配置:0 L7 {7 K5 V5 n. R( ]$ {1 K$ s1 e *TAP number = 4% f& t, Q$ ]3 h3 X: B- K) s% g *Preceeding bits= 18;4 p2 \3 W' ~+ z& [) } 大家可以试试看。& o8 H9 f( A; N% I) G' Y * H. r" [) e1 K5 F1 H2 {4 P8 v
这是在 IAR 中的描述,那么在 KEIL 中呢?* v4 q: E- C8 n& S - Q, i c1 `: F9 |& G# A
驱动是找到了,但是哪个选项是能区分不同的芯片在菊花连中的位置呢?' D2 ?' H6 Y, s9 C5 [# K9 J# i 一开始怀疑是否是自己的 JTAG 版本不够新? KEIL 版本不够新? KEIL 的正版权限不偶? 最终咨询后,发现,都不是我想的原因,如果换成 ULINK,则可以发现:
$ f3 Q8 Y* W, C 这时候发现能够手动的的修改了,Manual Configuration,不再是灰色的了。现在想想也正常,毕竟 ULINK 才是 Keil 自己的下载工具,如果 Keil 对其他的下载工具的功能做一些限制或优化,也是正常的;选中其中的一个,$ r( s9 i6 G( E8 D1 ` 2 V7 ]: K h- x. k9 Z! R
要怎么修改呢?
6 u; b- c+ v1 B( e 试验后只需要修改一个参数 IR len 即可,那么 IAR len 的长度究竟怎么算呢?大家可以动手算一算; 3 x& t- W8 R3 ^- i9 R |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版