JTAG口的配置与使用

发布者:qq8174350最新更新时间:2020-03-11 来源: eefocus关键字:JTAG口  配置  ATmega128 手机看文章 扫描二维码
随时随地手机看文章

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个引脚资源)。


在我的实验室里,有多台AVR的JTEG的仿真器,从老的到新的,都是原装的。但我在教学中和设计调试产品过程中,从来没使用过。我感觉到,在现在的技术层面上,在线仿真的技术完全可以用其他的方式代替,而且更加方便。


我不使用在线仿真技术建立以下的基础上:对AVR的初始化过程参考ICC或CVAVR的程序生成器生成的程序编写;尽量使用高级语言编写系统程序;使用AVR的软件模拟环境调试;使用串口或LED输出或查看程序运行(反正是ISP,多写几次,我至今没写失效过芯片)。当然,这要求你的软件工夫要好。


关于程序调试,是经验的积累,也看个人的习惯。我个人认为,一定要使用在线仿真是学51留下的“恶习”。实际上,对于外部硬件的错误,对时序要求严格,以及通信协议的处理等,在线仿真也解决不了问题的。

关键字:JTAG口  配置  ATmega128 引用地址:JTAG口的配置与使用

上一篇:基于ATmega8 单片机的工频电压/频率仪设计
下一篇:基于AVR单片机的列车临时限速手持巡检设备

推荐阅读最新更新时间:2024-11-10 02:40

学习STM32(2)-IO-AFIO(复用功能IO和调试配置)
最近在学习STM32,在BZ上一篇关于的串口通信文章里有这么一段代码:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE); 当初是参考开发的里子写的一直对GPIOD或上 RCC_APB2Periph_AFIO 这句话的意思没搞懂,通过这几天在网上查找资料和看手册,终于高清楚了,不敢独享,希望能对跟我一样的新手有所帮助吧o( _ )o... STM32上有很多I/O口,也有很多的内置外设想I2C,ADC,ISP,USART等,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是STM32还有一特
[单片机]
学习STM32(2)-IO-AFIO(复用功能IO和调试<font color='red'>配置</font>)
TI:汽车雷达系统成为主流配置
还记得吗?小时候,无论我们在做什么,妈妈似乎都能看到,就好像她们的脑袋后面也长着眼睛。事实上,在日常生活中,我们有时需要察看前方视野之外的事物,这对我们来说至关重要。其中一个情况就是在驾驶汽车的时候。最近有一条汽车广告将路面交通描述为“杂乱无章”。这条广告描述了正常驾驶时会遇到的各种危险和意外,主要为了推广基于雷达的最新高级驾驶员辅助系统(ADAS),此系统能够帮助驾驶员及时发现这些危险和路面上的障碍物。这条广告中最有趣的一个地方在于其所展示的车辆并非豪华轿车,而是标准的中型家用轿车。诸如盲点监视、路口交通警报、障碍物检测和碰撞预警系统已经出现了很多年,然而,它们的配置数量有限,并且只用于高端车辆。   近期,由于24GHz雷达
[嵌入式]
利用Microchip全新界面手势软件库轻松配置低功率触摸板
电容式触控已广泛应用于各行各业和各种应用领域,它用流畅直观的触控面板取代了曾经控制电子产品的旋钮和按钮。触摸控制不再是高端产品的新宠,现在消费者可以在日常设备(如耳机、遥控器、咖啡机和恒温器)上进行触摸控制,而无需为界面支付额外费用。 Microchip Technology Inc.(美国微芯科技公司)日前宣布推出一款新型2D触摸表面软件库,让设计人员能够使用该公司的8位PIC®和AVR®单片机(MCU)以及32位SAM MCU轻松实现触摸板。 购买任何兼容的MCU均可免费获得这一软件库,它为嵌入式应用提供了简单的低成本解决方案。 2D触摸表面软件库是实现小触摸板和触摸屏的理想选择,它可以在设备现有的MCU上运行,因此不会产
[半导体设计/制造]
这就是神舟399元手机!神舟手机配置/售价全曝光
    昨天,神舟董事长@吴海军James 在微博公布了9款新产品价格和配置信息。其中399元的灵雅H45 T1已正式开卖。而神舟灵雅E50官方价格定为899元,正式销售时还可能有优惠及折扣。微信:手机中国联盟 @ 佳偉_F:亮瞎双眼了,粗粮所谓的性价比靠边 @ 秦绍东:屌!屏幕其实都无所谓。一分钱一分货。不想花钱还想买好东西?可能吗?RAM看起来很给力的样子!
[手机便携]
FSMC配置
FSMC配置 控制一个NOR闪存存储器,需要FSMC提供下述功能: ●选择合适的存储块映射NOR闪存存储器:共有4个独立的存储块可以用于与NOR闪存、SRAM和PSRAM存储器接口,每个存储块都有一个专用的片选管脚。 ●使用或禁止地址/数据总线的复用功能。 ●选择所用的存储器类型:NOR闪存、SRAM或PSRAM。 ●定义外部存储器的数据总线宽度:8或16位。 ●使用或关闭同步NOR闪存存储器的突发访问模式。 ●配置等待信号的使用:开启或关闭,极性设置,时序配置。 ●使用或关闭扩展模式:扩展模式用于访问那些具有不同读写操作时序的存储器。 因为NOR闪存/SRAM控制器可以支持异步和同步存储器,用户只须根据存储器的参数配置使用到的参数
[单片机]
STM32F103 CAN总线配置总结
stm32的can总线的配置如下: CAN_InitStructure.CAN_TTCM=DISABLE;//禁止时间触发通信模式 CAN_InitStructure.CAN_ABOM=DISABLE; CAN_InitStructure.CAN_AWUM=DISABLE; CAN_InitStructure.CAN_NART=DISABLE;//CAN报文只被发送1次,不管发送的结果如何(成功、出错或仲裁丢失) CAN_InitStructure.CAN_RFLM=DISABLE; CAN_InitStructure.CAN_TXFP=DISABLE; CAN_InitStruct
[单片机]
MSP430 基本时钟配置
根据用户知道手册时钟来源分为3种分别是,LFXT1CLK,XT2CLK,DOC如下图 1 LFXT1CLK 低频/高频振荡器 可用于外接32768HZ的低频晶体或者450KZH~8Mhz的高频振荡晶体,可作为ACLK(辅助系统时钟)或者MCLK(主系统时钟) 2 XT2CLK 高频振荡器 外接450Khz~8MHZ高频晶振 可作为MCLK(主系统时钟)或者SMCLK(子系统时钟) 3 DCO 具有rc型特性的内部数控振荡器(DCO) (没咋深入了解,也没咋深入应用) 4 ACLK 辅助系统时钟,主要来源是LFXT1CLK,使用低频晶振, 使用DIVAX进行1/2/4/8分频 ,辅助系统时钟可作为外设模块的时钟源 5 MCL
[单片机]
MSP430 基本时钟<font color='red'>配置</font>
STM32为什么必须先配置时钟
首先,任何外设都需要时钟,51单片机,stm32,430等等,因为寄存器是由D触发器组成的,往触发器里面写东西,前提条件是有时钟输入。 51单片机不需要配置时钟,是因为一个时钟开了之后所有的功能都可以用了,而这个时钟是默认开启的,比如有一个水库,水库有很多个门,这些门默认是开启的,所以每个门都会出水,我们需要哪个门的水的时候可以直接用,但是也存在一个问题,其他没用到的门也在出水,即也在耗能。 这里水库可以认为是能源,门可以认为是每个外设的使用状态,时钟可以认为是门的开关。 stm32之所以是低功耗,他将所有的门都默认设置为disable,在你需要用哪个门的时候,开哪个门就可以,也就是说用到什么外设,只要打开对应外设的时
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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