USB转串行通信芯片FT2232

news2024/11/28 10:46:38

1 FT2232主要特性
1)2232表示支持2个RS232。
2)FT2232D最高支持full-speed,所以时钟是12MHz;而FT2232H最高支持high-speed,所以时钟是60MHz。
3)FT2232的Port A和Port B会在Windows设备管理器的“通用串行总线控制器”下产生2个设备。绝大部分的MCU JTAG工具都是基于FT2232制作的,FT2232的其中一个Port作为JTAG,另一个Port作为UART用来打印调试log。
4)Port A和Port B的初始配置放置在一个SOP8 EEPROM中。
5)FT2232缺少对一些特殊接口控制信号的支持,可以使用FPGA扩展,FPGA的固件通过FT2232下载,保存在SPI NOR Flash中。
6)PC驱动架构:ftdibus.inf, ftdiport.inf
Figure 1-1 Windows CDM Driver Architecture

2 Bit-Bang
2.1 基本概念
1)Use software to control serial communication at general-purpose I/O pins。
2)对接传统的很多基于PC LPT并口模拟的外设。
3)用GPIO模拟I2C和SPI都称为Bit-Bang。
4)FT_SetBitMode()的参数ucMask对应bit为0表示input,反之则为output。

2.2 Bit-Bang分类
1)异步Bit-Bang - 0x01
2)同步Bit-Bang - 0x04
3)CBUS Bit-Bang - 0x20
Figure 2-1 ucMode Table

Figure 2-2 CBUS Bit-Bang ucMask

2.3 GPIO读写控制传输
DBUS FTDI_SIO_SET_BITMODE
ucMask对应bit为0表示input,反之则为output
bmRequestType:0x40
bRequest:0x0B
wValue:ucMode << 8 | ucMask
wIndex:bInterfaceNumber + 1
wLength:0

CBUS FTDI_SIO_SET_BITMODE
ucMask的高4位表示方向,低4位表示数值
bmRequestType:0x40
bRequest:0x0B
wValue:0x20 << 8 | ucMask
wIndex:bInterfaceNumber + 1
wLength:0

FTDI_SIO_READ_PINS
bmRequestType:0xC0
bRequest:0x0C
wValue:0
wIndex:bInterfaceNumber + 1
wLength:1
返回一字节buffer

2.4 EEPROM读写控制传输
FTDI_SIO_READ_EEPROM
bmRequestType:0xC0
bRequest:0x90
wValue:0
wIndex:eeprom_addr,u16地址
wLength:2
每次只能返回2字节buffer

FTDI_SIO_WRITE_EEPROM
bmRequestType:0x40
bRequest:0x91
wValue:2字节的EEPROM值,每次只能写2字节
wIndex:eeprom_addr,u16地址
wLength:0

3 MPSSE
3.1 基本概念
FT2232不需要固件程序,因为所有功能都由芯片硬件实现,the FT2232D, FT232H, FT2232H and FT4232H incorporate a command processor called the Multi-Protocol Synchronous Serial Engine (MPSSE)。

The MPSSE Command Processor unit is controlled using a SETUP command。Various commands are used to clock data out of and into the chip,as well as controlling the other I/O lines。

USB SETUP command参考文档"API Definitions for FTDI FT232 and FT245 USB Interface Chips"。

USB SETUP command的状态阶段的状态包是个ZLP。

3.2 Port A包括2组pin
ADBUS - Port A Data Bus
ACBUS - Port A Control Bus

3.3 Port B包括2组pin
BDBUS - Port B Data Bus
BCBUS - Port B Control Bus

3.4 使能MPSSE控制传输
FTDI_SIO_SET_BITMODE
bmRequestType:0x40
bRequest:0x0B
wValue:0x02 << 8 | 0x0
wIndex:bInterfaceNumber + 1
wLength:0

3.5 Data Shifting Command
Figure 3-1 Data Shifting Command

1)+VE、-VE:Valid Edge,分别表示上升沿和下降沿有效。
2)图中说明:MPSSE串行命令的bit7为0,MPSSE其它命令的bit7为1。

4 FTDI编程
4.1 FTDI FT_Prog
该工具主要用来读写EEPROM,修改完毕,选择[DEVICES][Program]写入EEPROM即可。

4.2 Python ftd2xx for Windows
1)安装
Programming FTDI devices in Python: Part 1
https://iosoft.blog/2018/12/02/ftdi-python-part-1

ftd2xx is a simple python wrapper around the FTDI D2XX DLL.
pip install ftd2xx

2)示例
import sys, ftd2xx as ftd
d = ftd.open(0)
print(d.getDeviceInfo())

4.3 libFTDI for Windows
1)
USB Resources for Microchip Microcontrollers, libusb and libftdi
https://sourceforge.net/projects/picusb/files/
2)拷贝lib64\site_packages下所有文件到python的Lib\site_packages下
3)拷贝bin64\Python3.6\Lib\site_packages下所有文件到python的Lib\site_packages下

5 Eltima VSPD
5.1 Creating Pairs of Virtual Ports
Virtual Serial Port Driver is used to emulate virtual serial pair in Windows, for example, COM1 and COM2, then one application uses COM1, the second application uses COM2, they can communicate with each other.

5.2 Splitting Real Serial Ports
将一个真实串口(物理串口)映射成多个虚拟串口。真实串口接收到的数据转发给每个虚拟串口,虚拟串口接收到的数据都转发给真实串口。常用于多个应用需要同时和一台设备通信的场景。

6 FT4232
4232表示支持4个RS232。
Windows openocd uses legacy ft2232 driver instead of libusb.
The below command is used to check if JTAG mode is enabled.
openocd -f attach_fhe4232.cfg

7 Abbreviations
.cat文件:category表示Windows的驱动签名安全目录
CH341:winchiphead
CP2102: Cygnal Integrated Products. Cygnal Integrated Products was acquired by Silicon Laboratories Inc. in 2003.
D2XX:D表示FTD,2表示USB2.0
FTDI:Future Technology Devices International
MISO:mi s əu
MOSI:m əu si
QUP:高通平台的SPI总线和I2C共用core和引脚,称为QUP(QCOM Universal Peripheral);而UART和QUP又共用引脚,并且称为BLSP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/777807.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

九、正则表达式详解:掌握强大的文本处理工具(一)

文章目录 &#x1f340;引言&#x1f340;正则表达式的基本语法&#x1f340;常用操作符&#x1f340;实例应用&#x1f340;具体操作演示 &#x1f340;引言 正则表达式(Regular Expression)是一种强大的文本处理工具&#xff0c;常用于搜索、匹配和替换操作。它使用一种特定的…

jenkins Transferred 0 file(s)问题

每次构建都都是成功&#xff0c;但是就没有就是没有传输过去文件 Transferred 0 file(s) 因为jenkins是容器启动&#xff0c;会考虑有没有可能是从容器ssh传输呢&#xff1f; &#xff08;如果不是容器启动得&#xff0c;就把源文件地址改成 相对路径就行&#xff09; 我就在容…

17.matlab数据分析多项式的积分(matlab程序)

1.简述 Matlab中对多项式进行积分 &#xff08;1&#xff09;多项式的微分操作由polyder函数实现 &#xff08;2&#xff09;MATLAB中没有专门的对多项式积分函数&#xff0c;但可以用[p./length(p):1:-1]的方法完成积分&#xff0c;k为常数 2.代码 clc; clear all; p1[2 6 8];…

​ jgliu的​博客推荐 rapidIO/DDR/SPI/I2C

在博客园中发现一位博主的文章质量比较高 作者&#xff1a; jgliu 这里贴几篇感兴趣的文章地址 1.rapidIO从基础到原理到实现都有很详细的介绍&#xff0c;虽然该高速接口在FPGA中用的较多&#xff0c;ASIC不常用&#xff0c;但通过rapidIO的学习 可以加深对高速接口的理解-…

二十四章:SEgmentation TRansformer (SETR)——以Transformer的序列到序列的视角重新思考语义分割问题

0.摘要 最近的语义分割方法采用了全卷积网络&#xff08;FCN&#xff09;和编码器解码器架构。编码器逐渐降低空间分辨率&#xff0c;并学习具有更大感受野的抽象/语义视觉概念。由于上下文建模对于分割是至关重要的&#xff0c;最新的研究工作将重点放在增加感受野上&#xff…

hadoop的分区学习

自定义分区实现&#xff1a; 抽象类 要自定义分区规则&#xff0c;就必须继承并且重写。 设置分区数量 driver类&#xff1a; job.setNumReduceTasks(3);job.setPartitionerClass(FlowPartitioner.class);分区方法类&#xff0c;直接用编号代替就好了 public class FlowParti…

二叉树详解

这里写目录标题 前言树型结构(了解)树常见的概念树的表示形式&#xff08;了解&#xff09;树的应用 二叉树概念两种特殊的二叉树二叉树的性质(重要)二叉树的存储二叉树的基本操作 前言 本篇博客讲述了以下几个知识点 树的基本概念二叉树概念及特性二叉树的基本操作 树型结构…

OpenCv之特征检测

目录 一、基本概念 二、harris角点检测 三、SIFT算法 四、Shi-Tomasi角点检测 一、基本概念 特征检测指的是使用计算机提取图像信息&#xff0c;决定每个图像的点是否属于一个图像特征。特征检测的结果是把图像上的点分为不同的子集&#xff0c;这些子集往往属于孤立的点、…

FPGA简单双端口RAM——IP核

文章目录 前言一、双端口 RAM1、简单双端口与真双端口2、简单双端口RAM框图 二、 IP核配置1、RAM双端口 IP 核配置2、PLL IP 核配置 三、源码1、ram_wr(写模块)2、ram_rd(读模块)3、ip_2port_ram(顶层文件) 四、仿真1、仿真文件2、波形仿真 五、SignalTap II在线验证六、总结七…

百度知道上云与架构演进

作者 | 百度知道研发组 导读 百度知道作为上线十多年的老产品线&#xff0c;业务场景多、架构老旧、代码风格不统一&#xff0c;同时业务迭代较快&#xff0c;整体承载流量大&#xff0c;稳定性要求高&#xff0c;给业务全面上云带来不小的挑战。本文基于实践&#xff0c;介绍知…

Nginx配置访问密码

使用得场景 因为想将skywalking对外提供访问&#xff0c;但是skywalking又没有认证功能&#xff0c;所以使用nginx来做。 安装htpasswd 因为需要使用到htpasswd&#xff0c;htpasswd是Apache服务器中生成用户认证的一个工具&#xff0c;如果未安装&#xff0c;则使用如下命令…

Linux底层

一. arm基础知识 基础&#xff1a;c语言 具有一定硬件基础 特点---》前后联系 arm目标&#xff1a; 看懂简单的汇编代码 会看电路图、芯片手册 学会如何用软件控制硬件思想 解决问题的办法 谈谈对嵌入式的理解&#xff1f; 以计算应用为中心&#xff0c;软硬件可裁剪的…

Vue 双重v-for渲染表单,再复制表单编辑之深拷贝

文章目录 前言问题背景实现拷贝表单如何实现深拷贝Object.assignJSON实现的深拷贝递归实现解决循环引用的递归实现require(lodash).cloneDeep() 前言 在做复杂的动态表单&#xff0c;实现业务动态变动&#xff0c;比如有一条需要动态添加的el-form-item中包含了多个输入框&…

Tomcat服务器下载安装及配置教程(IDEA中使用Tomcat)

目录 友情提醒第一章、Tomcat下载与安装1.1&#xff09;Tomcat介绍1.2&#xff09;官网下载 第二章、Tomcat配置环境变量2.1&#xff09;windows环境变量配置2.2&#xff09;验证Tomcat配置是否成功2.3&#xff09;报错解决 第三章、IDEA整合Tomcat3.1&#xff09;打开IDEA开发…

【OAuth2】OAuth2概述及使用GitHub登录第三方网站

【OAuth2】OAuth2概述及使用GitHub登录第三方网站 文章目录 【OAuth2】OAuth2概述及使用GitHub登录第三方网站0. 导言1. OAuth2 简介2. OAuth2 认证授权总体流程3. OAuth2 标准接口4. OAuth2 四种授权模式4.1 授权码模式4.2 简化模式4.3 密码模式4.4 客户端模式 5. GitHub授权登…

2023河南萌新联赛第一场(河南农业大学)

目录 A.你也喜欢数学吗​编辑 E.动物朋友 F.松鼠排序 G.Reverse J.合唱比赛 K.以撒和隐藏房间 L.中位数 A.你也喜欢数学吗 输入描述 第一行一个正整数k(1<k<1e12) 输出描述 输出一行一个整数表示答案 示例1 输入 1 输出 1 示例2 输入 3 输出 10 思路 是等于,将整个…

【itext7】itext7操作PDF文档之添加段落文本内容、添加List列表、添加Image图片、添加Table表格

这篇文章&#xff0c;主要介绍itext7操作PDF文档之添加段落文本内容、添加List列表、添加Image图片、添加Table表格。 目录 一、itext7操作PDF内容 1.1、添加段落文本内容 1.2、添加列表内容 1.3、添加图片 1.4、添加表格 &#xff08;1&#xff09;列宽采用点单位&#…

MySQL之索引(入门级讲解)

目录 一.索引的概念 1.1索引的简介 1.2.索引的优缺点 二.MySQL索引语法 2.1查看索引 2.2创建索引 2.2.1 创建表时创建索引 2.2.2存在的表上创建索引 2.3删除索引 三.索引的数据结构 3.1Btree索引 3.2Hash索引 3.4Hash索引和Btree索引的对比 &#x1f381;个…

基于Kitti数据集的智能驾驶目标检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于Kitti数据集的智能驾驶目标检测系统可用于日常生活中检测与定位行人&#xff08;Pedestrian&#xff09;、面包车&#xff08;Van&#xff09;、坐着的人&#xff08;Person Sitting&#xff09;、汽车&#xff08;Car&#xff09;、卡车&#xff08;Truck…

[2023新教程]M2 Mac安装Anaconda和Pytorch

本文首发于我的学习之路&#xff1a;https://liguang.wang/index.php/archives/80/ 1 背景 最近使用起了Mac Mini&#xff0c;需要安装Anaconda和Pytorch。网上的教程非常老旧&#xff0c;可读性较差&#xff0c;于是记录下自己的安装过程&#xff0c;分享给大家。 2 详细过…