找回密码
 注册
关于网站域名变更的通知
查看: 160|回复: 0
打印 上一主题 下一主题

JTAG口怎么使用

[复制链接]
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
     楼主| 发表于 2024-5-29 15:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    ATmega128单片机具有一个符合IEEE 1149.1标准的JTAG接口。JTAG接口实现了三个功能:采用边界扫描功能对芯片进行检测,对芯片内部的非易失性存储器(Flash和E2PROM)、熔丝和锁定位进行编程,以及实现在线调试(On-chip debugging)仿真。

    ; J+ a* D, g* x1 n
    JTAG接口占用了4个AVR单片机的引脚,与组成了JTAG接口,即JTAG术语中的检测访问端口(Test Access Port—TAP)。由于JTAG的4个端口(TDI/PF7、TDO/PF6、TMS/PF5和TCK/PF4)同PF口的高4位占用相同的引脚,因此当JTAG接口处于使能状态时,PF[7:4]就不能作为通用I/O口或ADC的输入口使用了。所以用户应该根据实际的需要,正确设计、配置和使用JTAG口。
    ( n5 {" D, ^" `- W% j$ ]: H
    作为一般的用户,主要是将JTAG口用于程序下载和在线仿真调试,本小节就这两种使用情况介绍对JTAG口的配置和使用的注意点。
    + d& P+ D7 f5 z; Q' J+ R* L+ @
    1.JTAG口的控制
    + Y) }  w/ b: [3 x. ?& d* q) h
    在ATmega128中,使用两个熔丝位(JTAG使能JTAGEN,OCD使能OCDEN)和mcuCR寄存器中的JTD位对JTAG进行控制。其中JTD位可以通过用户程序改变,而熔丝位则不能通过程序指令设置。表5.1给出了3个控制位不同设置时,JTAG接口的特性。
    7 ]. s0 U$ ]& w! N; R
    表5.1 JTAG口使能控制
    & F  E# R) s6 U# P
    JTAGEN OCDEN JTD LB2/LB1 PF[7:4]功能
    8 r7 a5 o4 [: b% ]) `
    1 x x x/x I/O,ADC
    8 H6 O4 @  g/ d
    0 1 0 x/x JTAG(仅编程)

    , |( @! E9 {" V4 {+ K/ W
    0 1 1 x/x I/O,ADC

    6 Y. q' u* m& Z1 [! i! C7 L
    0 0 0 1/1 JTAG(编程,在线调试)
    5 H1 }, W! V) G9 w: \# Y  c8 P
    0 0 1 x/x I/O,ADC
    - A) A' g' z' F0 Z6 A( M6 R
    注:芯片出厂时JTAGEN=0,OCDEN=1
    ! D3 H  Z* {7 f
    根据表5.1,用户应根据实际情况,先对相应的熔丝位进行正确的设置,然后在上电后的初始化程序中正确的改变JTD位的设置。
    , ?& n6 L$ D' s
    注意:JTD在RESET后初值为0,同时为了防止意外开启或关闭JTAG口,用户程序对JTD的设置要按照规定的操作时序:必须在四个时钟周期内对JTD位重复2次写入,才能将JTD标志位设置成所希望的值。

    . O7 i7 y7 n; e7 a" }" D
    2.不使用在线调试功能
    # H5 Z% |# P. I; N- ^. \6 ?
    如果用户不使用JTAG的在线调试功能,那么建议使用SPI串口编程下载程序,不使用JTAG口。其优点是可以直接并可靠的使用PF[7:4]口的I/O功能,不必考虑JTD的设置。此时只要先将熔丝位JTAGEN配置为1,禁止JTAG功能即可。
    # D' b/ b* R0 F
    如必须使用JTAG口编程下载程序,具体做法为:

    ! E% E2 ]  c: [" a
    a.设置JTAGEN为0,OCDEN为1,仅使能JTAG口的编程功能。

    1 c0 F5 S* j5 v0 b3 ?
    b.用户程序应在上电后立即将JTD位设置为1,禁止JTAG口,开放PF[7:4]的I/O口功能。
    0 b0 J# n! P, ]# R# F" F
    这样,芯片在随后的运行中仍可将PF[7:4]作为I/O使用。如果需要使用JTAG口编程下载程序代码时,将外部 复位信号拉低2个时钟周期,使芯片复位,以此把JTD清零,进入JTAG编程方式。

    8 D1 ]4 f3 s- I/ h9 T
    3.使用在线调试功能

    $ n1 H' d% H5 ]& D. |6 W7 F" ~
    如果需要使用JTAG口的在线调试功能,那么在硬件设计时应尽量考虑不使用PF[7:4]的I/O功能(损失4个引脚资源)。因为当JTAG口使能后,这4个引脚不能作为I/O使用,当然也无法对其进行在线的调试了。

    1 o- i; P6 N( x( U& }9 C
    如系统必须使用PF[7:4]的I/O功能,可采取以下处理方式:

    7 {* G! `' C5 b6 g* [
    a.将PF[7:4]仅用于简单的I/O使用,如驱动LED指示、蜂鸣器等。电路设计还要注意与JTAG口的适当的隔离,防止由于外接器件造成对JTAG接口信号的影响。
    $ e* B7 R* p. r% J
    b.设置JTAGEN为0,OCDEN为0,使能JTAG口的全部功能。
    + h9 a; g, l" x: y
    c.用户程序中不改变JTD位的初始值0。使能JTAG口功能。
    - P6 x( ^2 N9 Q& _
    e.使用JTAG口编程和进行除PF[7:4]之外的在线调试。

    : a- t, i2 q0 H: r* @' }
    f.调试完成后,稍微修改用户程序,在上电后立即将JTD位设置为1,禁止JTAG口,开放PF[7:4]的I/O口功能。

    , D# o; Y( Y! W4 ^
    g.复位芯片,使用JTAG下载修改后的程序,观察程序的实际运行情况。
    - R& G4 Y) n& H8 Q% F0 @
    总之,一旦使用了JTAG口,就和PF[7:4]的I/O功能产生冲突和矛盾。因此,在硬件设计时应尽量考虑不使用PF[7:4]的I/O功能(损失4个引脚资源)。

    - y* |; F( w& v) X
    在我的实验室里,有多台AVR的JTEG的仿真器,从老的到新的,都是原装的。但我在教学中和设计调试产品过程中,从来没使用过。我感觉到,在现在的技术层面上,在线仿真的技术完全可以用其他的方式代替,而且更加方便。
    ' g, p! {; n% n7 t9 E1 ]
    我不使用在线仿真技术建立以下的基础上:对AVR的初始化过程参考ICC或CVAVR的程序生成器生成的程序编写;尽量使用高级语言编写系统程序;使用AVR的软件模拟环境调试;使用串口或LED输出或查看程序运行(反正是ISP,多写几次,我至今没写失效过芯片)。当然,这要求你的软件工夫要好。

    6 E4 [3 ^0 C( Z; z: P# i1 Z! q
    关于程序调试,是经验的积累,也看个人的习惯。我个人认为,一定要使用在线仿真是学51留下的“恶习”。实际上,对于外部硬件的错误,对时序要求严格,以及通信协议的处理等,在线仿真也解决不了问题的。
    ) Q" w) J' q& B- z
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-19 21:28 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表