logo资料库

应用开发手册(CH347应用开发手册).pdf

第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
资料共29页,剩余部分请下载后查看
一、简介
二、接口说明
三、同步串行接口
3.1 相关数据类型
3.1.1 SPI控制器信息
3.1.2 设备信息
3.2 公共操作函数
3.2.1 CH347OpenDevice
3.2.2 CH347CloseDevice
3.2.3 CH347SetDeviceNotify
3.2.4 CH347GetDeviceInfor
3.2.5 CH347GetVersion
3.2.6 CH347SetTimeout
3.2.7 接口动态插拔检测
3.2.8 设备枚举操作
3.3 SPI功能函数
3.3.1 操作流程
3.3.2 CH347SPI_Init
3.3.3 CH347SPI_GetCfg
3.3.4 CH347SPI_ChangeCS
3.3.5 CH347SPI_SetChipSelect
3.3.6 CH347SPI_Write
3.3.7 CH347SPI_Read
3.3.8 CH347SPI_WriteRead
3.3.9 CH347StreamSPI4
3.4 JTAG功能函数
3.4.1 操作流程
3.4.2 CH347Jtag_INIT
3.4.3 CH347Jtag_WriteRead
3.4.4 CH347Jtag_WriteRead_Fast
3.4.5 CH347Jtag_SwitchTapState
3.4.6 CH347Jtag_ByteWriteDR
3.4.7 CH347Jtag_ByteReadDR
3.4.8 CH347Jtag_ByteWriteIR
3.4.9 CH347Jtag_ByteReadIR
3.4.10 CH347Jtag_BitWriteDR
3.4.11 CH347Jtag_BitWriteIR
3.4.12 CH347Jtag_BitReadIR
3.4.13 CH347Jtag_BitReadDR
3.5 I2C功能函数
3.5.1 操作流程
3.5.2 相关数据类型
3.5.3 CH347I2C_Set
3.5.4 CH347I2C_SetDelaymS
3.5.5 CH347StreamI2C
3.5.6 CH347ReadEEPROM
3.5.7 CH347WriteEEPROM
四、异步串行接口函数
4.1 公共函数
4.1.1 接口动态插拔检测
4.1.2 设备枚举操作
4.2 HID/VCP UART功能函数
4.2.1 操作流程
4.2.2 CH347Uart_Open
4.2.3 CH347Uart_Close
4.2.4 CH347Uart_SetDeviceNotify
4.2.5 CH347Uart_Init
4.2.6 CH347Uart_SetTimeout
4.2.7 CH347Uart_Read
4.2.8 CH347Uart_Write
4.2.9 CH347Uart_QueryBufUpload
4.3 GPIO功能函数
4.3.1 操作流程
4.3.2 CH347GPIO_Get
4.3.3 CH347GPIO_Set
http://wch.cn CH347 应用开发手册 V1.3
CH347 应用开发手册 2 http://wch.cn 目录 一、简介 ................................................................. 4 二、接口说明 ............................................................. 4 三、同步串行接口 ......................................................... 4 3.1 相关数据类型 ..................................................... 4 3.1.1 SPI 控制器信息 ............................................. 5 3.1.2 设备信息 ................................................... 5 3.2 公共操作函数 ..................................................... 6 3.2.1 CH347OpenDevice ............................................ 6 3.2.2 CH347CloseDevice ........................................... 6 3.2.3 CH347SetDeviceNotify ....................................... 6 3.2.4 CH347GetDeviceInfor ........................................ 7 3.2.5 CH347GetVersion ............................................ 7 3.2.6 CH347SetTimeout ............................................ 8 3.2.7 接口动态插拔检测 ........................................... 8 3.2.8 设备枚举操作 ............................................... 9 3.3 SPI 功能函数 ..................................................... 9 3.3.1 操作流程 ................................................... 9 3.3.2 CH347SPI_Init ............................................. 10 3.3.3 CH347SPI_GetCfg ........................................... 10 3.3.4 CH347SPI_ChangeCS ......................................... 11 3.3.5 CH347SPI_SetChipSelect .................................... 11 3.3.6 CH347SPI_Write ............................................ 12 3.3.7 CH347SPI_Read ............................................. 12 3.3.8 CH347SPI_WriteRead ........................................ 13 3.3.9 CH347StreamSPI4 ........................................... 13 3.4 JTAG 功能函数 ................................................... 14 3.4.1 操作流程 .................................................. 14 3.4.2 CH347Jtag_INIT ............................................ 14 3.4.3 CH347Jtag_WriteRead ....................................... 15 3.4.4 CH347Jtag_WriteRead_Fast .................................. 15 3.4.5 CH347Jtag_SwitchTapState .................................. 16 3.4.6 CH347Jtag_ByteWriteDR ..................................... 16 3.4.7 CH347Jtag_ByteReadDR ...................................... 17 3.4.8 CH347Jtag_ByteWriteIR ..................................... 17 3.4.9 CH347Jtag_ByteReadIR ...................................... 17 3.4.10 CH347Jtag_BitWriteDR ..................................... 18 3.4.11 CH347Jtag_BitWriteIR ..................................... 18 3.4.12 CH347Jtag_BitReadIR ...................................... 19 3.4.13 CH347Jtag_BitReadDR ...................................... 19 3.5 I2C 功能函数 .................................................... 19 3.5.1 操作流程 .................................................. 19
CH347 应用开发手册 3 http://wch.cn 3.5.2 相关数据类型 .............................................. 20 3.5.3 CH347I2C_Set .............................................. 20 3.5.4 CH347I2C_SetDelaymS ....................................... 21 3.5.5 CH347StreamI2C ............................................ 21 3.5.6 CH347ReadEEPROM ........................................... 22 3.5.7 CH347WriteEEPROM .......................................... 22 四、异步串行接口函数 .................................................... 23 4.1 公共函数 ........................................................ 23 4.1.1 接口动态插拔检测 .......................................... 23 4.1.2 设备枚举操作 .............................................. 23 4.2 HID/VCP UART 功能函数 ........................................... 24 4.2.1 操作流程 .................................................. 24 4.2.2 CH347Uart_Open ............................................ 24 4.2.3 CH347Uart_Close ........................................... 25 4.2.4 CH347Uart_SetDeviceNotify ................................. 25 4.2.5 CH347Uart_Init ............................................ 25 4.2.6 CH347Uart_SetTimeout ...................................... 26 4.2.7 CH347Uart_Read ............................................ 26 4.2.8 CH347Uart_Write ........................................... 27 4.2.9 CH347Uart_QueryBufUpload .................................. 27 4.3 GPIO 功能函数 ................................................... 27 4.3.1 操作流程 .................................................. 27 4.3.2 CH347GPIO_Get ............................................. 28 4.3.3 CH347GPIO_Set ............................................. 28
CH347 应用开发手册 4 http://wch.cn 一、简介 CH347是一款USB2.0高速转接芯片,以实现USB-UART(HID串口/VCP串口)、USB-SPI、 USB-I2C、USB-JTAG以及USB-GPIO等接口,分别包含在芯片的四种工作模式中。 CH347DLL用于为CH347芯片提供操作系统端的UART/SPI/I2C/JTAG/BitStream等接口操 作函数,支持CH341厂商/HID/VCP驱动接口,使用时无需区分驱动接口和芯片工作模式。 二、接口说明 根据CH347所支持的USB转接接口特性,CH347DLL提供了USB-UART(HID串口/VCP串口)、 USB-SPI、USB-I2C、USB-JTAG以及USB-GPIO的接口功能函数,包括基本功能函数与对应的功 能函数,如EEPROM读写,JTAG应用中的SHIFT-DR状态读写等。 CH347所支持接口如下表所示,通过上电时MODE配置引脚电平组合来切换不同模式。 工作模式 功能接口说明 驱动接口 API 接口 0:USB 转高速串口 0 接口 1:USB 转高速串口 1 CH343SER(VCP) 系统内原生串口 API 或 CH347DLL 内 CH347UART_xxx 接口 0:USB2.0 转高速串口 1 CH343SER(VCP) 系统内原生串口 API 或 CH347DLL 内 CH347UART_xxx CH347DLL 内 CH347SPI_xxx CH347I2C_xxx CH347UART_xxx CH347DLL 内 CH347SPI_xxx CH347I2C_xxx 系统内原生串口 API 或 CH347DLL 内 CH347UART_xxx CH347DLL 内 CH347JTAG_xxx CH347I2C_xxx 模式 0 模式 1 接口 1: USB2.0 转 SPI+I2C CH347PAR 接口 0:USB2.0 HID 转高速串 口 1 模式 2 系统自带 HID 驱动 接口 1:USB2.0 HID 转 SPI+I2C 接口 0:USB2.0 转高速串口 1 CH343SER(VCP) 模式 3 接口 1:USB2.0 转 JTAG+I2C CH347PAR Table. CH347 接口功能 API 表 三、同步串行接口 3.1 相关数据类型 //驱动接口 #define CH347_USB_CH341 0 #define CH347_USB_HID 2 #define CH347_USB_VCP 3
CH347 应用开发手册 5 http://wch.cn //芯片功能接口号 #define CH347_FUNC_UART 0 #define CH347_FUNC_SPI_IIC 1 #define CH347_FUNC_JTAG_IIC 2 3.1.1 SPI 控制器信息 typedef struct _SPI_CONFIG{ UCHAR iMode; // 0-3:SPI Mode0/1/2/3 UCHAR iClock; // 0=60MHz, 1=30MHz, 2=15MHz, 3=7.5MHz, 4=3.75MHz, 5=1.875MHz, 6=937.5KHz,7=468.75KHz UCHAR iByteOrder; // 0=低位在前(LSB), 1=高位在前(MSB) USHORT iSpiWriteReadInterval; // SPI 接口常规读取写入数据命令,单位为 uS UCHAR iSpiOutDefaultData; // SPI 读数据时默认输出数据 ULONG iChipSelect; // 片选控制, 位 7 为 0 则忽略片选控制, 位 7 为 1 则参数有效: 位 1 位 0 为 00/01 分别选择 CS1/CS2 引脚作为低电平有效片选 UCHAR CS1Polarity; // 位 0:片选 CS1 极性控制,0:低电平有效; UCHAR CS2Polarity; // 位 0:片选 CS2 极性控制,0:低电平有效; 1:高电平有效; 1:高电平有效; USHORT iIsAutoDeativeCS; // 操作完成后是否自动撤消片选 USHORT iActiveDelay; // 设置片选后执行读写操作的延时时间,单位 uS ULONG iDelayDeactive; // 撤消片选后执行读写操作的延时时间,单位 uS }mSpiCfgS,*mPSpiCfgS; 3.1.2 设备信息 typedef struct _DEV_INFOR{ UCHAR iIndex; // 当前打开序号 UCHAR DevicePath[MAX_PATH]; UCHAR UsbClass; // 0:CH341 Vendor; 1:CH347 Vendor; 2:HID UCHAR FuncType; // 0:UART1; 1:SPI+I2C; 2:JTAG+I2C CHAR DeviceID[64]; // USB\VID_xxxx&PID_xxxx UCHAR Mode; // 芯片模式,0: Mode0(UART*2); 1: Mode1(Uart1+SPI+I2C); 2: Mode2(HID Uart1+SPI+I2C) 3: Mode3(Uart1+Jtag+I2C) HANDLE DevHandle; // 设备句柄 USHORT BulkOutEndpMaxSize; // 上传端点大小 USHORT BulkInEndpMaxSize; // 下传端点大小 UCHAR UsbSpeedType; // USB 速度类型,0:FS,1:HS,2:SS UCHAR CH347FuncType; // USB 接口号 UCHAR DataUpEndp; // 端点地址
CH347 应用开发手册 6 http://wch.cn UCHAR DataDnEndp; // 端点地址 CHAR ProductString[64]; // USB 产品字符串 CHAR ManufacturerString[64]; // USB 厂商字符串 ULONG WriteTimeout; // USB 写超时 ULONG ReadTimeout; // USB 读超时 CHAR UCHAR FirewareVer; // 接口功能描述符 // 固件版本 FuncDescStr[64]; }mDeviceInforS,*mPDeviceInforS 3.2 公共操作函数 3.2.1 CH347OpenDevice 功能描述 该函数用于打开 CH347 设备,支持 CH347 所有模式下的 SPI/I2C/JTAG 接口的打开 函数定义 HANDLE WINAPI CH347OpenDevice( ULONG DevI); 参数说明 DevI: 指定操作设备序号 返回值 执行成功返回设备序号 3.2.2 CH347CloseDevice 功能描述 该函数用于关闭 CH347 设备,支持 CH347 所有模式下 SPI/I2C/JTAG 接口的关闭 函数定义 BOOL WINAPI CH347CloseDevice( ULONG iIndex) 参数说明 iIndex: 指定操作设备序号 返回值 执行成功返回 1,失败返回 0 3.2.3 CH347SetDeviceNotify 功能描述 该函数用于指定设备事件通知程序,可用于 CH347 所有模式下 SPI/I2C/JTAG 接口的动 态插拔检测 函数定义 BOOL WINAPI CH347SetDeviceNotify( ULONG iIndex,
CH347 应用开发手册 7 http://wch.cn PCHAR iDeviceID, mPCH347_NOTIFY_ROUTINE iNotifyRoutine) 参数说明 指定操作设备序号 iIndex: iDeviceID: 可选参数,指向字符串,指定被监控的设备的 ID,字符串以\0 终止 iNotifyRoutine:指定设备事件回调程序,为 NULL 则取消事件通知, 否则在检测到事件时调用该程序 返回值 执行成功返回 1,失败返回 0 注解 iDeviceID 该参数为可变参数,若需实现 CH347 设备的插拔检测,可定义宏如下 #define CH347DevID "VID_1A86&PID_55D\0" 传参时 iDeviceID 替换为 CH347DevID 即可实现对 CH347 同步串行接口的动态插拔检测 若需准确检测各模式下接口的插拔动作,可写下完整的 USBID,以模式 1 中 SPI 接口为 例,可定义下方宏: #define USBID_VEN_SPI_I2C “VID_1A86&PID_55DB&MI_02\0” 传参时 iDeviceID 替换为 USBID_VEN_SPI_I2C 即可实现对 CH347 模式 1 的 SPI&I2C 接口 的动态插拔检测 其他接口设置可参考 3.2.7 接口动态插拔检测 3.2.4 CH347GetDeviceInfor 功能描述 该函数用于获取设备当前接口模式、VID/PID 等信息 函数定义 BOOL WINAPI CH347GetDeviceInfor(ULONG iIndex, mDeviceInforS *DevInformation) 参数说明 iIndex: DevInformation:设备信息结构体 指定操作设备序号 返回值 执行成功返回 1,失败返回 0 注解 设备信息结构体,可参考_DEV_INFOR 3.2.5 CH347GetVersion 功能描述 该函数用于获得驱动版本、库版本、设备版本、芯片类型(CH341(FS)/CH347(HS)) 函数定义 BOOL WINAPI
CH347 应用开发手册 8 http://wch.cn CH347GetVersion(ULONG iIndex, PUCHAR iDriverVer, PUCHAR iDLLVer, PUCHAR ibcdDevice, PUCHAR iChipType) 参数说明 指定操作设备序号 iIndex: iDriverVer: 驱动版本信息 iDLLVer: 库版本信息 ibcdDevice: 设备版本信息 iChipType: 芯片类型 返回值 执行成功返回 1,失败返回 0 3.2.6 CH347SetTimeout 功能描述 该函数用于设置 USB 数据读写的超时 函数定义 BOOL CH347SetTimeout(ULONG iIndex, WINAPI ULONG iWriteTimeout, ULONG iReadTimeout ) 参数说明 iIndex: iWriteTimeout: 指定 USB 写出数据块的超时时间,以毫秒 mS 为单位, 指定操作设备序号 0xFFFFFFFF 指定不超时(默认值) iReadTimeout: 指定 USB 读取数据块的超时时间,以毫秒 mS 为单位, 0xFFFFFFFF 指定不超时(默认值) 返回值 执行成功返回 1,失败返回 0 3.2.7 接口动态插拔检测 检测同步串行接口动态插拔信息可通过 CH347SetDeviceNotify 函数来实现,代码参考 如下: 启用 CH347 同步串行接口 USB 的插入和移除的监测: CH347SetDeviceNotify(DevIndex, USBDevID, UsbDevPnpNotify); 关闭 CH347 同步串行接口 USB 的插入和移除的监测,在程序退出时一定要关闭。 CH347SetDeviceNotify(DevIndex, USBDevID, NULL); // CH347 设备插拔检测通知程序 VOID CALLBACK UsbDevPnpNotify (ULONG iEventStatus )
分享到:
收藏