当前位置: 首页 > news >正文

一起来做个CH347的项目(应用于FPGA、CPLD、MCU)

        国产CH347芯片自从出现在大众视野,就展开了很多讨论。四种工作模式,多接口可同时使用,如下表:

接口模式接口功能
Mode-0480Mbps高速USB转双UART(Baudrate最高9Mbps)
Mode-1480Mbps高速USB转UART+SPI+I2C(厂商驱动模式)
Mode-2480Mbps高速USB转UART+SPI+I2C(系统HID驱动模式)
Mode-3480Mbps高速USB转UART+JTAG(厂商驱动模式)

  一些相关资料可参考我之前文章:【1】国产USB转接芯片CH347-初体验_OIDCAT的博客-CSDN博客_国产usb接口芯片

        其中CH347支持:

Mode0串口速率最高至9Mbps
JTAG主机接口,支持自定义协议的快速模式和bit-bang模式,TCK频率可达30Mbit/s
支持SPI模式0/1/2/3,传输频率可配置,最高可达60MHz
I2C主机接口,速度支持20K/100K/250K/700KHz  

      不同编程语言下CH347DLL的调用方法_OIDCAT的博客-CSDN博客

        面对CH347的诸多功能,最开始尝试了转JTAG+UART接口功能,使用CH347的JTAG能做什么呢?基于此结合OpenOCD实现了FPGA的程序下载和MCS固化。则该模式下可实现JTAG调试下载,UART通讯打印。相关文章参考如下

【2】CH347应用--在OpenOCD添加CH347-USB转JTAG接口_OIDCAT的博客-CSDN博客_openocd添加芯片

【3】CH347应用--USB TO JTAG进行FPGA调试下载_OIDCAT的博客-CSDN博客

        但并不满足于此,鉴于目前市面上存在的大多数JTAG调试器都是使用FT2232等完成,因为接口的不同,所以在常用的一些IDE上没法直接使用CH347,比如quartus、vivado等,但同时一些优秀的开源方案给予了灵感,比如OpenOCD、OpenFPGALoader等,结合开源方案+CH347就可以实现此些功能应用。

        所以突发奇想,做一个基于CH347的程序工程,可以用于常用国内外FPGA、MCU调试和下载功能,还有CH347的其他接口也都有一定探索空间。

        开源项目地址:当前已填充OpenOCD可执行程序(仅编译支持了CH347)AIOT-CAT/CH347-USB-to-JTAG-SPI-IIC-GPIO: USB to JTAG / SPI / IIC / GPIO application using ch347 of WCH (github.com)https://github.com/AIOT-CAT/CH347-USB-to-JTAG-SPI-IIC-GPIO/tree/main/CH347-JTAG/CH347_FPGA

        

相关文章:

  • 特征筛选还在用XGB的Feature Importance?试试Permutation Importance
  • 06-ServletRequest
  • Spring Cloud Alibaba系列之nacos:(4)配置管理
  • 一篇五分生信临床模型预测文章代码复现——Figure 3. 基因富集分析(二)
  • 深度学习——day34 读论文:深度 ReLU 网络在特征提取和泛化中的深度选择(2022 Q1)
  • STM32G474产生一个锯齿波
  • 蓝队视角下的防御体系怎样进行突破
  • 排序算法 | 快排、冒泡、堆排、归并、基数、递归、希尔、计数
  • [平台运维、Hadoop]kafka streams概述
  • 【祝福伟大的祖国】Java Web 9.2 Request 对象 9.2.5 请求参数中文乱码问题
  • 《When you are old》一如苇中的风,轻柔却难忘
  • JavaFX实战:模拟电子琴弹奏效果,鼠标弹奏一曲piano送给大家
  • 基于VC++和AT89C52单片机的数字存储示波器设计
  • labview与stm32通信
  • OpenHarmony适配移植:X86、ARM、RISC-V、MIPS、LoongArch芯片架构简析
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • css属性的继承、初识值、计算值、当前值、应用值
  • laravel5.5 视图共享数据
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 由插件封装引出的一丢丢思考
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 字符串匹配基础上
  • scrapy中间件源码分析及常用中间件大全
  • ​ubuntu下安装kvm虚拟机
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​业务双活的数据切换思路设计(下)
  • (C++)八皇后问题
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (译)计算距离、方位和更多经纬度之间的点
  • .gitignore文件—git忽略文件
  • .gitignore文件设置了忽略但不生效
  • .htaccess配置常用技巧
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET命令行(CLI)常用命令
  • .sys文件乱码_python vscode输出乱码
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • @angular/cli项目构建--Dynamic.Form
  • @JsonFormat与@DateTimeFormat注解的使用
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [@Controller]4 详解@ModelAttribute
  • [ACTF2020 新生赛]Include
  • [AIGC codze] Kafka 的 rebalance 机制
  • [android学习笔记]学习jni编程
  • [Angular 基础] - 自定义指令,深入学习 directive
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)