您的位置 首页 传感器

关于运用AVR的JTAG

JTAG口的配置与使用ATmega128单片机具有一个符合IEEE11491标准的JTAG接口。JTAG接口实现了三个功能:采用边界扫描功能对芯片进行检测,

JTAG口的装备与运用

ATmega128单片机具有一个契合IEEE 1149.1规范的JTAG接口。JTAG接口完成了三个功用:选用鸿沟扫描功用对芯片进行检测,对芯片内部的非易失性存储器(Flash和E2PROM)、熔丝和锁定位进行编程,以及完成在线调试(On-chip debugging)仿真。

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口。

作为一般的用户,主要是将JTAG口用于程序下载和在线仿真调试,本末节就这两种运用状况介绍对JTAG口的装备和运用的留意点。

1.JTAG口的操控

在ATmega128中,运用两个熔丝位(JTAG使能JTAGEN,OCD使能OCDEN)和MCUCR寄存器中的JTD位对JTAG进行操控。其间JTD位能够经过用户程序改动,而熔丝位则不能经进程序指令设置。表5.1给出了3个操控位不同设置时,JTAG接口的特性。

表5.1 JTAG口使能操控

JTAGEN OCDEN JTD LB2/LB1 PF[7:4]功用

1 x x x/x I/O,ADC

0 1 0 x/x JTAG(仅编程)

0 1 1 x/x I/O,ADC

0 0 0 1/1 JTAG(编程,在线调试)

0 0 1 x/x I/O,ADC

注:芯片出厂时JTAGEN=0,OCDEN=1

依据表5.1,用户应依据实践状况,先对相应的熔丝位进行正确的设置,然后在上电后的初始化程序中正确的改动JTD位的设置。

留意:JTD在RESET后初值为0,一起为了避免意外敞开或封闭JTAG口,用户程序对JTD的设置要依照规则的操作时序:有必要在四个时钟周期内对JTD位重复2次写入,才能将JTD标志位设置成所期望的值。

2.不运用在线调试功用

假如用户不运用JTAG的在线调试功用,那么主张运用SPI串口编程下载程序,不运用JTAG口。其长处是能够直接并牢靠的运用PF[7:4]口的I/O功用,不用考虑JTD的设置。此刻只需先将熔丝位JTAGEN装备为1,制止JTAG功用即可。

如有必要运用JTAG口编程下载程序,具体做法为:

a.设置JTAGEN为0,OCDEN为1,仅使能JTAG口的编程功用。

b.用户程序应在上电后立行将JTD位设置为1,制止JTAG口,敞开PF[7:4]的I/O口功用。

这样,芯片在随后的运转中仍可将PF[7:4]作为I/O运用。假如需求运用JTAG口编程下载程序代码时,将外部复位信号拉低2个时钟周期,使芯片复位,以此把JTD清零,进入JTAG编程方法。

3.运用在线调试功用

假如需求运用JTAG口的在线调试功用,那么在硬件规划时应尽量考虑不运用PF[7:4]的I/O功用(丢失4个引脚资源)。因为当JTAG口使能后,这4个引脚不能作为I/O运用,当然也无法对其进行在线的调试了。

如体系有必要运用PF[7:4]的I/O功用,可采纳以下处理方法:

a.将PF[7:4]仅用于简略的I/O运用,如驱动LED指示、蜂鸣器等。电路规划还要留意与JTAG口的恰当的阻隔,避免因为外接器材造成对JTAG接口信号的影响。

b.设置JTAGEN为0,OCDEN为0,使能JTAG口的悉数功用。

c.用户程序中不改动JTD位的初始值0。使能JTAG口功用。

e.运用JTAG口编程和进行除PF[7:4]之外的在线调试。

f.调试完成后,略微修正用户程序,在上电后立行将JTD位设置为1,制止JTAG口,敞开PF[7:4]的I/O口功用。

g.复位芯片,运用JTAG下载修正后的程序,调查程序的实践运转状况。

总归,一旦运用了JTAG口,就和PF[7:4]的I/O功用发生抵触和对立。因而,在硬件规划时应尽量考虑不运用PF[7:4]的I/O功用(丢失4个引脚资源)。

(以上摘自《M128》一书)

在我的试验室里,有多台AVR的JTEG的仿真器,从老的到新的,都是原装的。但我在教育中和规划调试产品进程中,历来没运用过。我感觉到,在现在的技能层面上,在线仿真的技能彻底能够用其他的方法替代,并且愈加便利。

我不运用在线仿真技能树立以下的基础上:对AVR的初始化进程参阅ICC或CVAVR的程序生成器生成的程序编写;尽量运用高档言语编写体系程序;运用AVR的软件模仿环境调试;运用串口或LED输出或检查程序运转(反正是ISP,多写几回,我至今没写失效过芯片)。当然,这要求你的软件时间要好。

关于程序调试,是经历的堆集,也看个人的习气。我个人认为,一定要运用在线仿真是学51留下的“恶习”。实践上,关于外部硬件的过错,对时序要求严厉,以及通信协议的处理等,在线仿真也解决不了问题的。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/chuanganqi/256665.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部