jtag管脚复用---lattice LCMXO3

当IO资源不够的时候,会考虑复用专用IO,JTAG是较为常见的复用。

复用JTAG IO要做的工作

1.软件要关闭JTAG_PORT,即JTAG_PORT设置为DISABLE,这一步是前提,只有JTAG_PORT设置为DISABLE,才有复用一说,如下图

2.硬件要将JTAGENB拉低,拉高的话是作为专用下载程序的脚使用(这个在硬件上默认拉高拉低无所谓),如下图。

3.通过CPU控制JTAGENB的电平,传到lattice芯片内部。JTAGENB=1时,JTAG的脚作为烧写程序使用,JTAGENB=0时,作为普通IO使用,如下图。

  要思考的问题:什么时候烧写程序结束呢?为什么要思考这个问题呢?因为你需要告知CPU JTAGENB什么时候才能够为低电平,让JTAG脚进入普通IO状态。假如你不知道JTAGENB应该为低电平的时间点,当还在进行烧写程序的时候,你告知CPU让JTAGENB为低电平,从而使JTAG进入普通IO的状态,那么此时是不是程序还没有下载完毕,这样用户功能是不是不正常?所有得找到一个合适的时间点,让JTAGENB拉低。

最笨的方法吗就是,看你的下载程序有多大,然后TCK按照25MHZ计算烧写程序所需的时间T,CPU做一个延时,延时时间大于T的时候让JTAGENB拉低,使得JTAG进入普通IO的状态,以防万一延时时间可以给多一点,2T较为合适。

还有一个办法是比较明智的,检查DONE信号,如下图。当DONE信号上升沿到来时说明加载完毕了,此时就可以将JTAGENB拉低。这个办法显然比上述一种好用,一来可以节省时间,二来可以省去繁琐的计算。劣势在哪里呢?管脚不本来就不够用了,你还用了我一个DONE作为专用脚,不用DONE作为检测信号的时候,可以将其用作普通IO.

时间: 2024-12-26 21:06:14

jtag管脚复用---lattice LCMXO3的相关文章

i.MX6UL开发板 管脚复用的参数配置方法(PINMUX)

NXP Cortex-A7 i.MX6UltraLite 的外设资源非常丰富.但是,需要提醒大家的是,这些接口是不能同时使用的,为了提供芯片的性价比, CPU厂家引入了PINMUX的架构,简单说就是引脚存在复用,以上说的这些接口,只用了大约114个引脚,每个引脚最大可以有9 种功能,每个功能有可以出现在不同的引脚上面.本次开发使用的硬件平台为飞凌嵌入式 OKMX6UL-C 开发板(产品详情: www.forlinx.com/69.htm),其它板卡请酌情参考使用, 具体实现操作步骤如下: arc

diamond版本区别之管脚定义----lattice开发平台

对于多位宽的数据线,在diamond xxx之前,管脚绑定格式是(假如数据是input wire[1:0] din) LOCATE COMP "din_0" SITE "P16" ;LOCATE COMP "din_1" SITE "P15" ;/*******这种格式是不是很变态,和altera.xilinx都不一样,对于刚接触lattice开发平台的人来说绝对是一个坑*******/ diamond3.7,管脚绑定格式是

i.MX6UL 管脚复用的参数配置方法(以设备树为例)

NXP Cortex-A7 i.MX6UltraLite 的外设资源非常丰富.为了提供芯片的性价比,CPU厂家引入了PINMUX的架构,简单说就是引脚存在复用,以上说的这些接口,只用了大约114个引脚,每个引脚最大可以有9种功能(具体可查看Pin List),每个功能有可以出现在不同的引脚上面. 这里以使用UART3 作为RS485功能为例来说明: 首先查看i.MX6ul哪些引脚可做为uart3功能: 注:上述参考手册为<IMX6ULRM.pdf> Chapter 4?: External S

STM32 JTAG引脚复用设置

前奏 先来copy下 JTAG.SW接口的定义, JTAG:JTAG(Joint Test Action Group:联合测试工作组)是一种国际标准测试协议,主要用于芯片内部测试.现在多数的高级器件都支持JTAG协议,如DSP.FPGA器件等.标准的JTAG接口是4线:TMS.TCK.TDI.TDO,分别为模式选择.时钟.数据输入和数据输出线. SWD:SW(Serial Wire Mode Interface),串行接口线模式.在串行线模式,只有针TCLK和TMS使用.TDO数据输出引脚是一个

Lattice FPGA 板子 调试笔记

最近在调试LATTICE  FPGA 做的视频板子,颇不顺利,所以记录下来作为以后的参考: 1.FPGA的IO口不是所有的都是双向的,有些有特殊作用的是单向的. 在查阅 LatticeECP3-17EAPinout.CSV 之后, 发现在LEF3-17EA-FN484C中,有以下几个管脚是单向的: C4  G7  G6     : jtag 管脚 C14  C15  B15   B16  :编程管脚 K1   L5   L1   K6   N17  M18   :PLL的反馈(fb)管脚 AB2

JTAG上有多个设备时,该如何接呢?

首先要了解JTAG管脚相关定义,具有JTAG口的芯片都有如下JTAG引脚定义(是相对芯片): TCK——测试时钟输入: TDI——测试数据输入,数据通过TDI输入JTAG口: TDO——测试数据输出,数据通过TDO从JTAG口输出: TMS——测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式. 可选引脚TRST——测试复位,输入引脚,低电平有效. 1.大多数正常情况下,一个JTAG上只有一个设备,接法简单许多,只要对号入座就可以,图1 2.如果多个设备都需要用到JTAG时,可以串起来

STM8S---IO复用配置(STVP方式)

1 说明 STM8S的IO复用用程序代码配置起来比較麻烦.通常是操作flash来操作option byte字节.配置寄存器更加麻烦,能够使用STM 标准外设驱动库来设置. 本文使用一种界面配置的方式来配置IO复用管脚,即使用STVP来配置. 由于FLASH保存的数据是掉电不丢失的,先用STVP把Option Bytes擦写好后,再用STVD仿真器烧敲代码就可实现IO复用了. ??程序方式配置IO复用见这里 2 配置流程 [step1]打开STVP软件 [step2]打开我们须要下载的xxx.s1

Duanxx的STM32学习: 报错No Cortex-M Device found in JTAG chain 原因及解决方案

今天在给STM32下程序的时候,报了这个错误,然后在网上搜了半天,找到了一个原因和解决办法,网上说的说法如下: 原因: 烧录的程序关闭了JTAG功能,复用了JTAG的接口,导致JTAG不能正常使用. 解决方法一: 找到BOOT1和BOOT0,把BOOT1拉低,BOOT0拉高至3.3V,用串口下载一个程序,此程序没有关闭JTAG即可,然后就可以正常重新使用JTAG,再将Boot0和Boot1都置低. 解决方法二: 擦除芯片代码也能恢复JTAG口功能,从开始--SEGGER--JLink ARM--

STM8S---IO复用配置

1 说明 STM8S的IO复用用程序代码配置起来比较麻烦,一般是操作flash来操作option byte字节,配置寄存器更加麻烦,可以使用STM 标准外设驱动库来设置.本文使用一种界面配置的方式来配置IO复用管脚,即使用STVP来配置. 2 配置流程 [step1]打开STVP软件 [step2]打开我们需要下载的xxx.s19文件,CTRL+F5(File->Ram Exec) [step3]配置需要复用的引脚 IO口的复用功能主要配置在于AFR0-AFR7.这里我们配置定时器TIM2_CH