文章目录

  • 一、FT2232H 和 JTAG 简介
    • 1.1 FT2232H
    • 1.2 JTAG
  • 二、MPSSE 配置
    • 2.1 MPSSE简介
    • 2.2 串行协议配置
  • 参考文献

注:转载请注明出处
记录下学习过程,个人水平有限,可能理解有误,后续若发现错误之处,会及时更新。

Version Date
1.0 2021.12.20

一、FT2232H 和 JTAG 简介

1.1 FT2232H

FT2232H是一个USB2.0高速(每秒480兆位)至UART/FIFO 芯片。 具有在多种工业标准串行或并行接口配置的能力。有两个多协议同步串行引擎(MPSSE)允许使用JTAG,I2C和SPI两个通道同时进行通信。

多协议同步串行引擎 (MPSSE) 是某些 FTDI 客户端 IC 的一项功能,允许模拟多种同步串行协议,包括 SPI、I2C 和 JTAG。

1.2 JTAG

有关JTAG标准的知识可以看我本系列之前相关的学习笔记,此处不再赘述。

图1 JTAG链

如图1所示,多个需要测试的设备共享TCK和TMS信号,所有这些被测设备在任何时刻都处于相同状态,然后将上一级的TDO端口输出信号接到下一级TDI输入端口,便构成一个JTAG扫描链。

二、MPSSE 配置

2.1 MPSSE简介

FTDI 的多协议同步串行引擎 (MPSSE) 提供了一种将同步串行设备连接到 USB 端口的灵活方法。 MPSSE 可以与许多不同类型的同步串行设备进行通信,如 SPI、I2C 和 JTAG。 可以通过多种方式配置数据格式和时钟,可自定义进行配置。

这里需要注意的一点是:MPSSE只能作为同步接口的主机生成时钟和接口选择/片选信号,不作为从机运行。
在 FT2232H芯片中,其MPSSE引脚定义如图2所示;

图2 MPSSE引脚定义

这些引脚可被配置成同步串行接口,如I2C、SPI、JTAG,对应信号映射关系如图三所示:

图3 MPSSE引脚映射

图3所示,MPSSE的引脚Data Out连接到JTAG接口的TDI(MPSSE的数据输出即是所连接的JTAG从设备的数据输入),Data In 连接到JTAG接口的TDO(所连接的JTAG从设备的数据输出即是MPSSE的数据输入),Clock连接到TCK,Chip Select连接到TMS。

电路连接示意图如图4所示:

图4 MPSSE与多个JTAG从设备连接示意图

可以看到DO连接JTAG链的第一级TDI,DI连接到最后一级的TDO。JTAG-1和JTAG-2的TCK和TMS共享,原理可参考1.2。

注:因为我学习的是如何配置MPSSE将USB信号转为JTAG信号,所以此处仅讨论如何转JTAG。

2.2 串行协议配置

主机(PC)调用 D2XX 驱动 API 通过USB总线配置MPSSE,需要配置的参数如下:

  1. 配置选择以LSB(最低有效位)或MSB(最高有效位)在前进行数据的发送和接收。 决定了数据的传输顺序。
  2. 时钟 ,包括时钟频率和数据发送和接收的有效边沿。

(具体细节暂时未学习,等需要时学习完了进行补充)

参考文献

【1】Application Note AN_129 Interfacing FTDI USB Hi-Speed
Devices to a JTAG TAP
【2】Application Note AN_135 FTDI MPSSE Basics

FTDI FT2232H USB TO JTAG学习笔记(一)基础概念相关推荐

  1. Docker:学习笔记(1)——基础概念

    Docker:学习笔记(1)--基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...

  2. 遗传算法(Genetic Algorithm)之deap学习笔记(一): 基础概念

    遗传算法是通过计算机模拟生物学中的染色体用于解决最优化的一种搜索算法. 使用遗传算法要考虑的因素: 个体表征(Individual representation) 评估和适应度分配(Evaluatio ...

  3. 操作系统原理学习笔记(基础概念与进程)

    学习视频 王道的操作系统原理,我在网上搜了一下,没有那个视频像湖科大那种推荐的人那么多,感觉这个还可以,就看这个了. 随看随记 进程运行前需要将需要执行的程序放置到内存中,内存再到CPU中执行程序. ...

  4. 云计算HCIA学习笔记-云计算基础概念

    第1章 云计算基础概念 1.1 云计算课程安排说明 (IA-虚拟化-FC / IP-Linux OpenStack 桌面云/IE-备份容灾迁移) 1.2 为什么云计算IA讲虚拟化? 提前告知学员,为什 ...

  5. HTML/CSS学习笔记01【概念介绍、基本标签】

    w3cschool菜鸟教程.CHM(腾讯微云):https://share.weiyun.com/c1FaX6ZD HTML/CSS学习笔记01[概念介绍.基本标签.表单标签][day01] HTML ...

  6. Python学习笔记_1_基础_2:数据运算、bytes数据类型、.pyc文件(什么鬼)

    Python学习笔记_1_基础_2:数据运算.bytes数据类型..pyc文件(什么鬼) 一.数据运算 Python数据运算感觉和C++,Java没有太大的差异,百度一大堆,这里就不想写了.比较有意思 ...

  7. python input 拖入路径 去除转义 空格_python学习笔记(基础-2)(转载)

    1.输出 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字. 2.输入 如果要让用户从电脑输入一些字符怎么办?Python提供了一个input(),可以让用户输入字符串,并存放到一个变 ...

  8. php基础教学笔记,php学习笔记:基础知识

    php学习笔记:基础知识 2.每行结尾不允许有多余的空格 3.确保文件的命名和调用大小写一致,是由于类Unix系统上面,对大小写是敏感的 4.方法名只允许由字母组成,下划线是不允许的,首字母要小写,其 ...

  9. java基本语法心得_Java学习笔记(一)——基础语法(上)

    Java学习笔记(一)--基础语法(上) 软件构造 写在前面 编写Java程序时,应注意以下几点:大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的. 类名:对于所有的 ...

最新文章

  1. linux常用操作命令详解
  2. 史上首次,强化学习算法控制核聚变登上Nature:DeepMind让人造太阳向前一大步...
  3. HttpClient 联网接口
  4. php学习之try catch
  5. jsp自定义alert
  6. 有关代码段、数据段、BOSS段、堆、栈的存储位置问题。。。
  7. linux7 vi 末行 快捷键,vi 常用操作快捷键
  8. quartz2.3.0(六)job任务异常处理方式
  9. Windows Azure HandBook (8) Azure性能测试(1)
  10. debian 修改apache2 https 端口为11443
  11. JAVA里plain_Java中POJO及其细分XO、DAO的概念
  12. 小学生 计算机编程 教程,小学生C++创意编程(视频教学版)
  13. CentOS7系统中:安装tree命令的问题
  14. python文件去重软件_python去重工具
  15. hive中 <> 和 != 的区别
  16. SpringMVC配置中遇到的惊(keng)喜
  17. php-resque 简单的php消息队列
  18. 如何用15秒打动对方
  19. Linux服务器个人常用命令
  20. STM32F0xx定时器输出PWM配置

热门文章

  1. 免费报名 | 汇聚HBase大数据最前沿 Apache HBaseConAsia2019盛会火热来袭
  2. 什么触控笔好用又便宜,触控笔哪个牌子好用
  3. 《匆匆那年》的你,还记得吗?数学中的那些有(hui)趣(se)的定理(5)——鸡爪定理
  4. 量化投资发展史上的那些“决定性瞬间”
  5. 用计算机用u盘怎么切换,u盘上的东西换个电脑就不见了怎么办啊
  6. vba设置Excel单元格左对齐、右对齐、居中对齐、字体、字号、字型
  7. React Native 启动流程 源码剖析
  8. c调用python第三方库_c/c++调用python程序且含tensorflow第三方库
  9. 怎么在手机上做文字长图?云便签可将文字生成长图并分享
  10. 四阶行列式如何降阶_四阶行列式怎么化成三阶的行列式,说详细点