USB转I2C芯片操作EEPROM--CH347应用

article/2025/11/2 22:24:52

USB转I2C芯片简介

        高速USB转接芯片CH347是一款集成480Mbps高速USB接口、JTAG接口、SPI接口、I2C接口、异步UART串口、GPIO接口等多种硬件接口的转换芯片。

接口示意图:

CH347-I2C接口特点

  • USB传输采用USB2.0高速(480Mbps)
  • 工作在 Host/Master主机模式;
  • 硬件信号:SCL、SDA;
  • 支持4种传输速度:低速20KHz、标准100KHz、快速400KHz、高速750KHz;
  • 支持I2C时序参数调节;
  • 提供计算机端驱动程序和USB转I2C函数库,支持二次开发

使用芯片准备工作

选择CH347工作模式

        CH347芯片在复位时,会根据DTR1(CFG0)和RTS1(CFG1)引脚的电平状态配置其工作模式,各工作模式及功能说明如下

工作模式

模式说明

CFG0

CFG1

Mode0

480Mbps高速USB转双UART(Baudrate最高9Mbps)

1

1

Mode1

480Mbps高速USB转UART+SPI+I2C(厂商驱动模式)

0

1

Mode2

480Mbps高速USB转UART+SPI+I2C(系统HID驱动模式)

1

0

Mode3

480Mbps高速USB转UART+JTAG(厂商驱动模式)

0

0

        CH347可使用SPI的模式有两种,其区别在Mode1需要安装厂商驱动,Mode3可以使用系统内置HID驱动无需额外安装,只需在编程时调用CH347动态库进行软件编程即可,此处我们使用Mode1来进行操作。

驱动安装

window驱动安装

        从WCH官网下载CH347转SPI/I2C/JTAG/GPIO驱动:CH341PAR.EXE - 南京沁恒微电子股份有限公司

        驱动下载后进行一次安装,后续即可实现系统“免驱”效果无需二次安装。未插入设备时安装会显示“驱动预安装成功”,此时驱动已经正常安装,硬件即插即用。

        Windows驱动通过微软数字签名认证,支持32/64位 Windows 11/10/8.1/8/7/VISTA/XP/2000,SERVER 2019/2016/2012/2008/2003等系统,无需担心Windows不同系统兼容性问题。

        官方同时提供驱动资源包CH341PAR.ZIP - 南京沁恒微电子股份有限公司,可将驱动安装文件打包至成熟产品一齐发布,且支持无界面安装操作,可通过软件编程调用命令行操作,只需执行“SETUP /S”命令即可静默驱动安装。

        点击安装之后,等待弹出安装成功窗口后点击确定即可。

Linux驱动安装

        联系WCH技术支持获取到CH347-Linux驱动,然后进行安装

        1、执行make编译驱动;

        2、执行make load动态加载驱动,或执行make install后可实现重新启动自动检测硬件并加载驱动;

        3、插入设备可查看到生成前缀为ch34x_pis的设备节点。

使用USB操作EEPROM

        本次操作CH347开发板板载EEPROM:24LC515H。

        除此之外,CH347也可操作AT24xxx、M24xxx等等EEPROM

调用函数

        WCH提供了一套公用的库函数接口,即Windows&Linux平台接口函数名称与参数一致,其库函数接口特性如下:

        操作SPI、I2C、GPIO等的接口在任何工作模式下都可使用同一API,在进行软件编写时,只需调用接口完成代码操作逻辑而不用关注当前硬件工作模式。提供插拔检测函数可动态监测设备插拔信息,更方便进行设备管理。

        具体详细内容可参考官方开发手册:CH347EVT.ZIP - 南京沁恒微电子股份有限公司 【目录:CH347EVT\EVT\PUB\CH347应用开发手册.PDF】

/***************插拔监测函数************/
BOOL    WINAPI  CH347SetDeviceNotify(                                           // 设定设备事件通知程序ULONG                  iIndex,             // 指定设备序号,0对应第一个设备PCHAR                  iDeviceID,          // 可选参数,指向字符串,指定被监控的设备的ID,字符串以\0终止mPCH347_NOTIFY_ROUTINE iNotifyRoutine );   // 指定设备事件回调程序,为NULL则取消事件通知,否则在检测到事件时调用该程序
/********IIC接口函数通用于Mode1/2***********/
// 设置串口流模式
BOOL    WINAPI  CH347I2C_Set(ULONG          iIndex,  // 指定设备序号ULONG          iMode );  // 指定模式,见下行
// 位1-位0: I2C接口速度/SCL频率, 00=低速/20KHz,01=标准/100KHz(默认值),10=快速/400KHz,11=高速/750KHz
// 其它保留,必须为0// 设置硬件异步延时,调用后很快返回,而在下一个流操作之前延时指定毫秒数
BOOL    WINAPI  CH347I2C_SetDelaymS(ULONG           iIndex,       // 指定设备序号ULONG           iDelay ) ;    // 指定延时的毫秒数// 处理I2C数据流,2线接口,时钟线为SCL引脚,数据线为SDA引脚
BOOL    WINAPI  CH347StreamI2C( ULONG           iIndex,        // 指定设备序号ULONG           iWriteLength,  // 准备写出的数据字节数PVOID           iWriteBuffer,  // 指向一个缓冲区,放置准备写出的数据,首字节通常是I2C设备地址及读写方向位ULONG           iReadLength,   // 准备读取的数据字节数PVOID           oReadBuffer ); // 指向一个缓冲区,返回后是读入的数据
#ifndef _CH341_DLL_H
typedef enum    _EEPROM_TYPE {// EEPROM型号ID_24C01,ID_24C02,ID_24C04,ID_24C08,ID_24C16,ID_24C32,ID_24C64,ID_24C128,ID_24C256,ID_24C512,ID_24C1024,ID_24C2048,ID_24C4096
} EEPROM_TYPE;
#endif// 从EEPROM中读取数据块,速度约56K字节
BOOL    WINAPI  CH347ReadEEPROM(ULONG           iIndex,     // 指定设备序号EEPROM_TYPE     iEepromID,  // 指定EEPROM型号ULONG           iAddr,      // 指定数据单元的地址ULONG           iLength,    // 准备读取的数据字节数PUCHAR          oBuffer );  // 指向一个缓冲区,返回后是读入的数据
// 向EEPROM中写入数据块
BOOL    WINAPI  CH347WriteEEPROM(ULONG          iIndex,     // 指定设备序号EEPROM_TYPE    iEepromID,  // 指定EEPROM型号ULONG          iAddr,      // 指定数据单元的地址ULONG          iLength,    // 准备写出的数据字节数PUCHAR         iBuffer );  // 指向一个缓冲区,放置准备写出的数据

操作流程

代码示例

Windows例程

        可参考官方开发资料:CH347EVT.ZIP - 南京沁恒微电子股份有限公司 【目录:CH347EVT\EVT\TOOLS\CH347Demo】

        界面读写示例如下:

Linux例程

可参考如下代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <time.h>
#include "CH347LIB.h"#define CMD_FLASH_SECTOR_ERASE 0x20
#define CMD_FLASH_BYTE_PROG    0x02
#define CMD_FLASH_READ         0x03
#define CMD_FLASH_RDSR         0x05
#define CMD_FLASH_WREN         0x06#define CMD_FLASH_JEDEC_ID     0x9F#define SPI_FLASH_PerWritePageSize 256#ifndef CH34x_DEBUG
#define CH34x_DEBUG
#endif#ifdef CH34x_DEBUG
#define dbg( format, arg...)printf( format "\n", ##arg );
#endif
#define err( format, arg... )\
printf( "error %d: " format "\n", __LINE__, ##arg )int mindex = -1;BOOL CH347_I2C_Init()
{int ret = -1;// Init CH347 I2Cret = CH347I2C_Set(mindex, 3);// The IIC speed set 750Kif (!ret) {err("Failed to init I2C");return false;}return true;
}BOOL EEPROM_Write()
{ULONG i = 0;ULONG DataLen = 0;UCHAR DBuf[8 * 1024 + 16] = {0};BOOL RetVal = false;printf("Ready to write.\n");for (i = 0; i <= 255; i++){DBuf[i] = 255-i;DataLen++;}printf("Write EEPROM data:\n");RetVal = CH347WriteEEPROM(mindex,ID_24C02,0x00,DataLen,DBuf);for (i = 0; i <= 255; i++){printf("%02x ", DBuf[i]);if (((i+1) % 20) == 0) putchar(10);}putchar(10);return RetVal;
}BOOL EEPROM_Read()
{ULONG i = 0;ULONG DataLen = 256;UCHAR DBuf[8 * 1024 + 16] = {0};BOOL RetVal = false;RetVal = CH347ReadEEPROM(mindex,ID_24C02,0,DataLen,DBuf);printf("Read EEPROM data:\n");for (i = 0; i <= 255; i++){printf("%02x ", DBuf[i]);if (((i+1) % 20) == 0) putchar(10);}putchar(10);return RetVal;
}int main()
{BOOL ret = false;// Open the devicemindex = CH347OpenDevice(0);if (mindex < 0) {printf("Failed to open device.\n");return -1;}ret = CH347_I2C_Init();if (!ret) {err("Failed to init CH347 I2C.");exit(-1);}printf("Enter EEPROM Test,EEPROM Type:24C02\n");ret = EEPROM_Read();if (!ret) {err("Failed to read eeprom");exit(-1);}ret = EEPROM_Write();if (!ret) {err("Failed to write eeprom");exit(-1);}ret = EEPROM_Read();if (!ret) {err("Failed to read eeprom");exit(-1);}// Close the CH347 Deviceif (CH347CloseDevice(mindex)){printf("Close device succesed\n");}return 0;
}

执行截图:


http://chatgpt.dhexx.cn/article/j4ZhHNvt.shtml

相关文章

USB转串口常用芯片

文章目录 CH340CH330HT42B534CP2104CP2105ST-LinkSTM32 USB VCPWindows/macOS/Linux Driver CH340 WCH南京沁恒的片子, 2元左右, 50bps~2Mbps, 代表型号嘉立创基础库可直接贴装的CH340G. CH340G/T/R, -40℃~85℃, 需要12M外部晶振. CH340C/E/B, -20℃~70℃, 不需要外部晶振, 体…

USB转SPI芯片操作FLASH--CH347应用

USB转SPI芯片简介 高速USB转接芯片CH347是一款集成480Mbps高速USB接口、JTAG接口、SPI接口、I2C接口、异步UART串口、GPIO接口等多种硬件接口的转换芯片。 接口示意图&#xff1a; CH347-SPI接口特点 CH347-SPI接口特点USB传输采用USB2.0高速&#xff08;480Mbps&#xff09;…

USB转串口芯片 CH340 系列

https://wenku.baidu.com/view/96c25e234b35eefdc8d3331f.html CH340G USB转串口&#xff0c;推出时间最早&#xff0c;应用最广 SOP16 CH340C USB转串口&#xff0c;内置晶振&#xff0c;引脚兼容CH340G SOP16 CH340E USB转串口&#xff0c;内置晶振&#xff0c;超小封…

【1】国产USB转接芯片CH347-初体验

前言 CH347是一款国产USB2.0高速接口转接芯片&#xff0c;可实现单路USB转SPI/IIC/JTAG/UART/GPIO接口&#xff0c;其中UART&SPI&IIC或者UART&JTAG可同时使用&#xff0c;在长期的使用国外芯片的同时&#xff0c;也不要缺乏对国产芯片的关注与支持&#xff0c;本文…

USB转串口芯片CH340

本篇文章将带领大家全面解析USB转串口芯片CH340&#xff0c;主要分为以下几个方面&#xff1a; 一、CH340芯片介绍 二、CH340芯片特点 三、CH340芯片封装 四、CH340芯片引脚说明 五、CH340芯片功能说明 六、CH340芯片应用电路 一、CH340芯片介绍 CH340是一个USB总线的转接芯片&…

USB芯片选型

从 USB 芯片的使用角度来说&#xff0c;USB 系列芯片可以划分为 USB 接口芯片与内置 USB 功能的微控制器。前者对于跨平台和易用性方面比较有优势&#xff0c;无需了解芯片内部工作机制&#xff0c;按照芯片的手册以及官方例程来操作就可以了&#xff0c;而使用平台也比较开放&…

usb芯片的科普

1. 高速模块一般分为控制器Controller和PHY两部分。Controller大多为数字逻辑实现&#xff0c;PHY通常为模拟逻辑实现。 USB芯片也分为Controller部分和PHY部分: Controller部分主要实现USB的协议和控制。内部逻辑主要有MAC层、CSR层和FIFO控制层&#xff0c;还有其他低功耗…

Autcad 2020,2019 一键安装64位破解版

链接&#xff1a;https://pan.baidu.com/s/1j4pHC6icmNyiZI4B2S1N9A 提取码&#xff1a;ngpy 2019版 链接&#xff1a;https://pan.baidu.com/s/1ImtgZv3ctHWEVekx4z8hwg 提取码&#xff1a;2bg5 AutoCAD软件是由美国欧特克有限公司&#xff08;Autodesk&#xff09;出品的一款…

AD17安装教程

版本&#xff1a;AD17.1.6 1、安装包解压缩如下 点击exe文件安装 选择 语言&#xff0c; 接受协议 默认即可 选择目录 next 安装 安装完成后不打开&#xff0c;进入licenses&#xff0c;将msimg32.dll 拷贝到安装目录)\XXXXXXXXX\Altium\AD17 下。&#xff08;XXXXXXXXX为安装…

超全AD软件3D封装库 免费分享!

超全AD软件3D封装库 免费分享&#xff01; MiaoA 效果图 资源获取 所有工程文件已开源&#xff0c;公众号回复关键字“封装库”即可获取所有资料链接

[ADS]ADS1.2软件的破解

ADS1.2是一款用于开发ARM等下位机程序的集成开发环境&#xff0c;之前三星的S3C44B0芯片编程用过&#xff0c;现在弄一下一块比较老的PHILIPS的LPC2129芯片的板子也可以用这个ADS&#xff0c;它和Keil&#xff0c;IAR都是同一类型的。 问题&#xff1a;电脑上已经安装了ADS1.2&…

AltiumDesigner14.3.X下载安装破解教程

&#xfeff;&#xfeff; AltiumDesigner14.3.X下载&安装破解教程 说明&#xff1a;本教程是基于AltiumDesigner14.3.16稳定版为例 源文件下载地址&#xff1a;http://pan.baidu.com/s/1bXWs6y 若地址失效请留言索取下载链接。 安装步骤&#xff1a; 第一&#xff1a;…

学生如何使用正版Altium Designer软件;正版AD安装;AD如何使用正版license(适用于老师、学生、校友等等)

学生正版Altium Designer许可证到期怎么再申请https://blog.csdn.net/qq_41570901/article/details/125102129 目录 一、前情提要 二、安装前的准备工作 1、邮箱注册 2、登录邮箱 三、安装并激活正版Altium Designer 1、账号申请 2、激活AltiumLive 3、DigiPCBA账号注册 4、…

Altium Designer17.1版本使用教程

前言 本片文章对AD17的使用作简要讲解&#xff0c;细节部分不做过多描述&#xff0c;我也是刚刚才学完&#xff0c;所以分享一下经验。 AD17汉化步骤&#xff1a;DXP→preferences→System→Genera→勾选Use localized resources→重启软件&#xff0c;汉化成功。 一、PCB工程组…

AD17入门简单教程(一)

AD17入门简单教程 我写这篇文章主要是因为最近刚学习完了AD17&#xff0c;想做一下总结&#xff0c;也希望通过自己心得的帮助一些刚入门AD17的小白。 总结一共分为两大部分&#xff0c;包括AD17的下载安装与汉化&#xff08;文末有详细链接&#xff09;、工程的创建、元器件库…

0 AD13安装破解与汉化

0.1安装破解 喜欢请支持正版&#xff0c;务做商业用途。 双击 即可安装 安装完成以后&#xff0c;点击DXP->My Account -> Add standalone license file 找到altium_designer_2013chinese32-64bitcracked\Licenses 选择一个.alf的文件 出现 即破解完成 注意&#xf…

Cadence License破解失败解决办法

问题1&#xff1a;Unable to restart Cadence License Server with the new license file 这个问题是在运行License Server Configuration Utility时可能遇到的。 Cadence破解license&#xff0c;指定license文件时&#xff0c;提升下列的报错&#xff1a; Unable to restart…

Advanced Design System 破解教程 ADS 2017

转载至乐软博客https://www.isharepc.com/2544.html Advanced Design System 2017(简称ADS2017)是由美国Agilent公司推出的微波电路和通信系统仿真软件&#xff0c;新版在信号完整性&#xff08;SI&#xff09;、功率完整性&#xff08;PI&#xff09;、RF PCB、层压板、模块和…

ADS2011_10版本破解方法

本文属于转载&#xff1a;http://blog.sina.com.cn/s/blog_4ceb576801015ztx.html ADS2011_10安装破解记录 (2012-3-22 09:50) 到Agilent网站上下载ADS安装程序&#xff0c;我下的是目前最新的ADS2011_10&#xff0c;大约1.8GB http://edocs.soco.agilent.com/display/suppor…

Altium Designer15安装破解教程

获取方式 获取方式&#xff1a; 1.没有资源的小伙伴可以关注我的公众号“硬件君”。回复 “AD” 即可免费获取软件网盘链接。 3.网盘限速的小伙伴可以关注后回复“百度云”获取不限速工具。 PS:新配了台主机&#xff0c;终于能够把一直拖的AD安装教程给补上了。 安装教程 这…