ESP-Drone控制板设计的第二个任务-绘制USB-TTL串口下载电路和ESP32-S2芯片内置USB接口电路

2023-05-16

1、摘要

 ESP32系列处理器一般会需要采用串口来下载代码,因此在其设计中都会保留一个USB-TTL串口电路,查看乐鑫官网的参考设计,基本上是采用CP2102这颗USB转TTL串口芯片,但在本设计中,我会用另一颗常见的国产芯片CH340来进行设计,这么做基于3个方面的考虑:1、支持国货;2、手头有现货;3、在以前的设计中用过,原理图不用重新绘制。 

 2、设计过程记录

第1步,阅读官方参考设计原理图。

 如图2-1-1所示,乐鑫官方ESP-Drone参考设计原理共分为3个部分:1、USB连接器部分;2、CP2102芯片及周边电路;3、控制逻辑转换电路。下面对这3部分电路做一个简单分析:

如图2-1-2所示,USB接口连接器部分的电路由J1、U1、R1、R3组成,J1就是一个Micro B型连接器,根据USB标准定义进行连线即可,在此就不做过多解释了。U1是ST公司的一颗USB接口的防静电保护芯片,可以对有效防止USB接口受静电冲击而损坏主控芯片,可参考官方的参考电路进行设计即可。USB接口如果不用这颗芯片,在大部分情况下也不会有什么问题,但终归有受静电冲击而导致主控芯片损坏的风险,所以在设计USB接口电路时,还是建议加上此类防止静电冲击的保护芯片。 

R1、R3是二颗0欧姆的电阻,看似没有必要使用,但在大部分情况下还是保留此二颗电阻比较好,这二颗电阻必要时可以用来调整USB接口D+、D-的差分阻抗,尤其在印制板采用2层板设计时,或许在极端情况下,需要进行阻抗匹配调整,关于USB接口的差分阻抗问题,请自行查找资料了解一下,在此不做进一步描述了。

如图2-1-3所示,这是一个内部由二个NPN型三极管组成的集成电路,在此实现控制逻辑转换的作用。从目前的电路来看,控制逻辑转换电路的工作原理很不直观,请看另外一个由二个三极管组成的同样功能的控制逻辑转换电路,那么就很容易理解了。

 

如图2-1-4,只要理解了三极管的工作原理,就很容易理解控制逻辑转换的工作原理,注意,在CHIP_PU、GPIO端口上需要有上拉电阻或在主控芯片内部将端口配置成上拉模式,工作原理分析如下:

假定DTR设置为高电平,RTS设定为低电平,三极管Q1将导通,因为Q1的集电极电流会在CHIP_PU端口的上拉电阻二端产生电压差,选取合适的上拉电阻的值,可让上拉电阻二端产生的压差接近于电源电压,那么Q1的集电极将输出逻辑低电平,也就实现了DTR输入逻辑电平的转换。

 第2步,绘制USB接口原理图

(1)绘制USB接口Micro USB B型连接器部分电路、CH340 芯片周边电路

 如图2-2-1,是采用CH340芯片设计的USB转TTL串口的原理图,该电路与乐鑫官方参考设计相比较,除了采用的接口芯片不同外,在USB接口连接器部分也有轻微的不同:在USB接口连接器的外壳接地端与电源地之间接了一颗1M的电阻,这个电阻具有对静电进行缓慢释放的功效,具体来说,当USB接口的连接器的金属外壳突然聚集起大量的静电电荷时,因为与系统的地之间有一颗1M的电阻,那么外壳瞬间对地放电的电流就会比较小,从而不会引发系统地端的参考电平发生突变,可以有效避免系统地参考电平不稳导致的系统电源对地压差变化而引发的系统复位、芯片超过耐压击穿等现象。

·(2)绘制串口控制逻辑转换电路

 如图2-2-2,是绘制完成的串口控制逻辑转换电路,为为什么要这个串口逻辑控制电路,是由ESP32系列处理器的下载代码方式所决定的,ESP32系列处理器在复位启动后,会首先运行一个被称之为Bootloader的程序,在这个程序中,它会检测IO0端口的状态,如果端口IO0端口为低电平,那么它会进入串口下载模式,从PC端接收特定格式的程序代码文件,并将此程序代码烧录到系统的Flash存储器中。串口的DTR、RTS状态由PC端的程序来进行控制,用于给ESP32系列处理器的Bootloader程序提供工作指令。

(3)绘制ESP32-S2处理器自身USB接口电路

如图2-2-3,为绘制完成的ESP32-S2处理器自身USB接口电路,通过该电路可以使用ESP32-S2处理器内置的USB-JTAG接口,根据官方的资料介绍,该USB-JTAG接口与OpenOCD配合使用,可以使用gdb工具实现对ESP32-S2处理器的源码级别的程序调试功能。

至此,绘制USB-TTL串口下载电路和ESP32-S2芯片内置USB接口电路的工作任务已经完成。

2021.11.16

 

            

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ESP-Drone控制板设计的第二个任务-绘制USB-TTL串口下载电路和ESP32-S2芯片内置USB接口电路 的相关文章

  • Win7/8 上从 CD 或 USB 自动运行程序

    我在一家 IT 商店工作 发现一些计算机带有相当严重的病毒 我们正在编写一个自动运行脚本 当我们插入 USB 或 CD 最好是 USB 时 该脚本将运行恶意软件查杀工具 RKill 我们希望在插入 USB 或 CD 后立即运行该工具 而不会
  • Mongodb TTL 使文档提前过期

    我正在尝试将文档插入 Mongo 数据库并让它在预定时间后自动过期 到目前为止 我的文档已被插入 但总是会在 0 60 秒内从数据库中删除 即使我将 expireAfterSeconds 设置得更长 我知道 mongodb 大约每 60 秒
  • 使用 OpenCV 打开 USB 摄像头

    我想在 Linux Mint 18 3 上使用 C 语言的 OpenCV 打开 USB 摄像头 相机已插入并可与 Common Vision Blocks 的 SoftwareSuite 配合使用 来自命令lsusb我得到以下输出 Bus
  • 对 USB 传输电缆进行编程/与 USB 设备驱动程序通信

    如何以编程方式访问 USB 传输电缆 例如 Belkin 的易传输电缆 http www belkin com easytransfercable 从Windows 我熟悉libusb win32 http libusb win32 sou
  • Redis 存储没有值的键

    使用Redis时expire命令如SETEX https redis io commands setex and TTL https redis io commands ttl 在某些情况下 密钥根本不需要保存值 因为生存时间就这样行事 然
  • 有没有办法通过浏览器与 USB 设备通信?

    有没有办法在常规浏览器 FF Safari IE8 等 中与 USB 设备通信 我认为它可能是 Javascript gt Java 桥或其他东西 请指教 P S 是否可以以最小的依赖性实现 如果没有 基于浏览器的软件的全部意义就毫无用处
  • 使用什么 ffmpeg 命令将无符号整数列表转换为音频文件?

    我有一个文件 其中包含大约四万个整数的列表 这些整数以空格分隔 每个整数的值都在 0 到 255 之间 这里是这个文件 https github com johnlai2004 sound project blob master integ
  • macOS下如何查找串口的父USB设备?

    以下是我尝试枚举 Mac 上找到的所有串行端口 并遍历设备节点树以查找 USB 串行适配器的父 USB 设备的方法 import
  • 无法使用 OpenCV 从辅助网络摄像头的 VideoCapture 读取帧

    Code 与主网络摄像头 设备 0 完美配合的简单示例 VideoCapture cap 0 if cap isOpened std cout lt lt Unable to read stream from specified devic
  • 如何拦截并翻译USB事件

    我想使用飞利浦 LFH 2330 查看图像 使用 Windows Image Viewer 或其他查看器 如 IrfanView 等 LFH 2330 是一款带有四个踏板的脚踏控制器 参见here http www aaaaudio net
  • Java Android 激光条码扫描器

    我正在尝试开发一个能够读取条形码 1d 而不是 qr 的应用程序 真正的问题是 常见的条形码阅读器软件非常有用 但它们似乎太慢 无法作为非常频繁和常见的功能使用 这些条形码相当长 有 20 30 位数字 对于 zxing 等应用程序来说似乎
  • 通过 USB 模拟 UART

    有谁知道是否可以通过 USB 模拟 UART 简单串行发送和接收 这将如何实现 我在 Microchip 网站上找到了这个链接 但不是很容易找到 http www microchip com forums m522571 print asp
  • 使用 C# 向 USB 连接的 GPRS 调制解调器发送 AT 命令

    任何人都可以给我一个关于如何访问连接到 USB 端口的 GPRS 调制解调器的良好指示或指南 我应该为我的程序制作一个 USB 驱动程序以将 AT 命令发送到调制解调器吗 或者就像一个路由器 我可以使用IP地址访问它 谢谢 如果 Windo
  • cassandra 中 TTL 的最大值

    我们可以分配给 TTL 的最大值是多少 在 cassandra 的 java 驱动程序中 TTL 设置为 int 这是否意味着它仅限于 Integer MAX 2 147 483 647 秒 最大 TTL 实际上是 20 年 从org ap
  • Android 到 PC USB 读/写

    我在 PC 上有一个程序 从 USB 接收字符串输入 旧程序 我有一个 Android 4 X 平板电脑 需要向在 PC 上运行的程序提供 USB 上的字符串输入 当我在 Android 上使用示例代码时 以下代码给出了空的哈希图 PC 在
  • Android 上的 HP TouchPad USB 驱动

    我可以在运行的 HP TouchPad 上进行应用程序开发吗氰基模组 http en wikipedia org wiki CyanogenMod 9 我有一个安装了 CyanogenMod 9 的 HP TouchPad 并且正在尝试从E
  • USB 调试 - 安装 Epson Moverio 驱动程序时出现问题

    Android 开发新手 我使用以下命令制作了一个小应用程序Eclipse http en wikipedia org wiki Eclipse 28software 29在虚拟 Android 设备上完美运行 现在 我想在真实的设备上运行
  • 如何枚举 USB 设备*并*对其进行读/写?

    我需要与一个自定义 USB 设备进行通信 它没有特定的驱动程序 该设备不显示为 dev tty I 发现 http www signal11 us oss udev 我该如何使用libudev枚举 USB 设备 假设我设法获得相应的stru
  • 使用Python直接向USB发送信号

    如何使用 Python 将 USB 端口连接设置为高或低 这可用于定制 USB 设备 例如 假设我有一个 LED 连接到 USB 端口 数据线 现在通过代码我想闪烁它或控制它 现在 这可以通过使用任何微控制器 Arduino Raspber
  • 如何查找USB盘符?

    我正在编写一个安装程序来将应用程序安装到 USB 驱动器 该应用程序只能从 USB 驱动器使用 因此它可以通过自动选择要安装的 USB 驱动器来为用户节省额外的步骤 我可能会尝试使用 Nullsoft 或 MSI 进行安装 但由于我最熟悉

随机推荐

  • Docker切换存放目录踩坑

    因为 var 目录下的磁盘空间不足 xff0c 故把docker的存放目录切换到 data 下面 xff0c 具体步骤 xff1a 1 编辑docker配置文件 etc docker daemon json xff0c 修改data roo
  • 关于Modelsim SE-64 2020.4取消优化后不显示波形问题

    Modelsim取消优化后报错 Error suppressible vsim 12110 All optimizations are disabled because the novopt option is in effect This
  • 关于串口调试助手XCOM点击发送后卡住问题

    未成功安装CH340驱动 USB串口驱动 安装前先重启电脑 xff0c 再点击安装 串口选择错误 打开设备管理器 xff0c 查看USB连接的端口 xff08 COM xff09 号 xff0c 选择正确的端口 xff08 COM xff0
  • Makefile中Linux转Windows执行知识点

    makefile 是一个自动化编译工具 xff0c 可以简化编译过程 xff0c 自动化处理依赖关系和编译顺序 xff0c 提高了代码的可维护性 makefile 通常由一些规则和命令组成 xff0c 规则由目标 依赖和命令构成 xff0c
  • darknet2ncnn编译中 libopencv 库文件找不到

    问题描述 没有直接从 github 上下载 darknet2ncnn 包 xff0c 用的是他人提供的包 xff0c 包已经编译好 解压已经有 convert verify 文件 执行该文件 xff0c 问题描述如下 xff1a root
  • linux usb设备如何和u盘对应

    已知 usb 的 pid vid 如何对加载的u盘进行管理 思路 xff0c 找到 U盘的厂商信息中的pid和 vid 对应关系 xff0c 然后控制 U盘的加载 但是 U盘信息中没有pid 和 vid root 64 li PC sys
  • CV面试题(持续更新!!!)

    CV面试题 1 反卷积 反卷积又叫做转置卷积 xff0c 在计算机中计算的时候 xff0c 转置卷积先将卷积核转为稀疏矩阵C的形式 xff0c 然后计算的时候正向传播的时候左乘这个稀疏矩阵C的转置 xff0c 反向传播的时候左乘这个稀疏矩阵
  • 程序运行时数据保存位置

    程序运行时 xff0c 内存中有六个地方可以保存数据 1 寄存器 这是最快的保存区域 xff0c 寄存器位于处理器内部 然而寄存器的数量很有限 xff0c 所以寄存器是根据需要由编译器的分配的 我们对此没有直接的控制权限 也不可能在我们的程
  • ESP-Drone无人机控制板设计的第一个任务---绘制ESP32-S2-WROVER模块及周边电路

    第1步 xff0c 查看官方ESP Drone无人机ESP32 S2 WROVER模块的参考设计原理图 第二步 xff0c 用KiCAD绘制ESP32 S2 WROVER模块及周边电路 1 如图2 1所示 xff0c 从KiCAD的原理图符
  • ROS学习——读取摄像头数据image

    在ROS工作空间的src文件夹下创建read camera功能包 xff0c 并在包内创建include launch src cfg四个文件夹 在cfg文件夹中创建param yaml文件 xff0c 并写入以下内容 xff1a imag
  • ROS学习——控制小车转向

    给定一个旋转的角度 xff0c 让小车进行顺时针或逆时针旋转 span class token macro property span class token directive keyword include span span clas
  • PID参数设定

    在电机的控制领域 xff0c 不同的电机有不同的驱动方式 xff0c 其中应用最广泛的就是PID proportion integration differentiation 控制 P I和D分别指比例控制 xff0c 积分控制和微分控制
  • 系统编程__2__父子进程的创建和回收

    系统编程 这里写的是对于小白来说更多的了解系统编程的文章 xff0c 有写的不对的地方还恳请各位大佬指出错误 xff0c 小编一定会多多采纳 手动多谢 那么 xff0c 上一次我们稍微了解了一下关于系统编程的一些主要内容 没有看到的童鞋还请
  • php解决跨域访问

    php跨域问题解决判断 参考文章 xff1a php跨域 xff1a https blog csdn net ouxiaoxian article details 89332027 预检请求是什么 xff1a https www jians
  • 动态库与静态库的区别是什么

    区别 xff1a 1 静态库的扩展名一般为 a 或 lib xff1b 动态库的扩展名一般为 so 或 dll 2 静态库在编译时会直接整合到目标程序中 xff0c 编译成功的可执行文件可独立运行 xff1b 动态库在编译时不会放到连接的目
  • Ubuntu 使用 du 查看某个文件夹大小

    在 Ubuntu 系统中 xff0c 你可以使用 du 命令来查看文件夹的大小 例如 xff0c 如果你想查看文件夹 var log 的大小 xff0c 你可以使用如下的命令 xff1a du sh var log 其中 xff0c s 选
  • 无人机六旋翼数学建模[matlab-simulink]

    写在前面 xff0c 这篇文章是借鉴Drexel University 的Senior Design project的matlab simulink四旋翼模型 xff0c 在此基础上针对六旋翼进行的基本改进 xff0c 这里只对 43 型模
  • stm32连接DHT11温湿度传感器

    目录 1 DHT11简介 1 1 连接电路 1 2 串行接口 单线双向 2 cubeMX设置 3 代码开发 3 1 实现定时函数 3 2 打开串口调试 3 4 测试代码实现 4 运行效果 1 DHT11简介 1 1 连接电路 信息如下 xf
  • STM32CubeMX 真的不要太好用

    STM32CubeMX 真的不要太好用 由于工作内容的变动 xff0c 我已经很久没有正经的玩过单片机了 xff0c 近期又要用它做个小玩意了 xff0c 还是选 stm32 吧 xff0c 外设库开发不要太方便 xff0c 哈哈哈 先去
  • ESP-Drone控制板设计的第二个任务-绘制USB-TTL串口下载电路和ESP32-S2芯片内置USB接口电路

    1 摘要 ESP32系列处理器一般会需要采用串口来下载代码 xff0c 因此在其设计中都会保留一个USB TTL串口电路 xff0c 查看乐鑫官网的参考设计 xff0c 基本上是采用CP2102这颗USB转TTL串口芯片 xff0c 但在本