505 lines
23 KiB
C++
505 lines
23 KiB
C++
|
/*****************************************************************************
|
|||
|
** Copyright (C) WCH 2001-2022 **
|
|||
|
** Web: http://wch.cn **
|
|||
|
******************************************************************************
|
|||
|
Abstract:
|
|||
|
USB2.0ת<EFBFBD><EFBFBD>оƬCH347,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>480Mbps<EFBFBD><EFBFBD><EFBFBD><EFBFBD>USB<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չUART<EFBFBD><EFBFBD>SPI<EFBFBD><EFBFBD>I2C<EFBFBD><EFBFBD>JTAG
|
|||
|
Environment:
|
|||
|
user mode only,VC6.0 and later
|
|||
|
Notes:
|
|||
|
Copyright (c) 2022 Nanjing Qinheng Microelectronics Co., Ltd.
|
|||
|
--*/
|
|||
|
|
|||
|
#ifndef _CH347_DLL_H
|
|||
|
#define _CH347_DLL_H
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef _WIN64
|
|||
|
#define mOFFSET( s, m ) ( (ULONG_PTR) & ( ( ( s * ) 0 ) -> m ) ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ṹ<EFBFBD><E1B9B9>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>ƫ<EFBFBD>Ƶ<EFBFBD>ַ<EFBFBD>ĺ<EFBFBD>
|
|||
|
#else
|
|||
|
#define mOFFSET( s, m ) ( (ULONG) & ( ( ( s * ) 0 ) -> m ) ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ṹ<EFBFBD><E1B9B9>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>ƫ<EFBFBD>Ƶ<EFBFBD>ַ<EFBFBD>ĺ<EFBFBD>
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef max
|
|||
|
#define max( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) ) // <20>ϴ<EFBFBD>ֵ
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef min
|
|||
|
#define min( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) ) // <20><>Сֵ
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef ExAllocatePool
|
|||
|
#undef ExAllocatePool // ɾ<><C9BE><EFBFBD><EFBFBD>TAG<41><47><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#endif
|
|||
|
|
|||
|
#ifndef NTSTATUS
|
|||
|
typedef LONG NTSTATUS; // <20><><EFBFBD><EFBFBD>״̬
|
|||
|
#endif
|
|||
|
|
|||
|
//<2F><>CH31DLL<4C><4C><EFBFBD><EFBFBD>CH341WDM<44><4D><EFBFBD><EFBFBD>
|
|||
|
#ifndef _CH341_DLL_H
|
|||
|
typedef struct _USB_SETUP_PKT { // USB<53><42><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD>ε<D7B6><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ
|
|||
|
UCHAR mUspReqType; // 00H <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
UCHAR mUspRequest; // 01H <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
union {
|
|||
|
struct {
|
|||
|
UCHAR mUspValueLow; // 02H ֵ<><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
|||
|
UCHAR mUspValueHigh; // 03H ֵ<><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
|||
|
};
|
|||
|
USHORT mUspValue; // 02H-03H ֵ<><D6B5><EFBFBD><EFBFBD>
|
|||
|
};
|
|||
|
union {
|
|||
|
struct {
|
|||
|
UCHAR mUspIndexLow; // 04H <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
|||
|
UCHAR mUspIndexHigh; // 05H <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
|||
|
};
|
|||
|
USHORT mUspIndex; // 04H-05H <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
};
|
|||
|
USHORT mLength; // 06H-07H <20><><EFBFBD>ݽε<D7B6><CEB5><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
} mUSB_SETUP_PKT, *mPUSB_SETUP_PKT;
|
|||
|
|
|||
|
|
|||
|
typedef struct _WIN32_COMMAND { // <20><><EFBFBD><EFBFBD>WIN32<33><32><EFBFBD><EFBFBD><EFBFBD>ӿڽṹ
|
|||
|
union {
|
|||
|
ULONG mFunction; // <20><><EFBFBD><EFBFBD>ʱָ<CAB1><D6B8><EFBFBD><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹ܵ<DFB9><DCB5><EFBFBD>
|
|||
|
NTSTATUS mStatus; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>״̬
|
|||
|
};
|
|||
|
ULONG mLength; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>,<2C><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD>
|
|||
|
union {
|
|||
|
mUSB_SETUP_PKT mSetupPkt; // USB<53><42><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD>ε<D7B6><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
UCHAR mBuffer[ 512]; // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Ϊ0<CEAA><30>255B
|
|||
|
};
|
|||
|
} mWIN32_COMMAND, *mPWIN32_COMMAND;
|
|||
|
// WIN32Ӧ<32>ò<EFBFBD><C3B2>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define IOCTL_CH341_COMMAND ( FILE_DEVICE_UNKNOWN << 16 | FILE_ANY_ACCESS << 14 | 0x0f34 << 2 | METHOD_BUFFERED ) // ר<>ýӿ<C3BD>
|
|||
|
|
|||
|
#define mWIN32_COMMAND_HEAD mOFFSET( mWIN32_COMMAND, mBuffer ) // WIN32<33><32><EFBFBD><EFBFBD><EFBFBD>ӿڵ<D3BF>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
#define mCH341_MAX_NUMBER 16 // <20><><EFBFBD><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD>ӵ<EFBFBD>CH341<34><31>
|
|||
|
|
|||
|
#define mMAX_BUFFER_LENGTH 0x1000 // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4096
|
|||
|
|
|||
|
#define mMAX_COMMAND_LENGTH ( mWIN32_COMMAND_HEAD + mMAX_BUFFER_LENGTH ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹͷ<E1B9B9>ij<EFBFBD><C4B3><EFBFBD>
|
|||
|
|
|||
|
#define mDEFAULT_BUFFER_LEN 0x0400 // <20><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϳ<EFBFBD><CFB3><EFBFBD>1024
|
|||
|
|
|||
|
#define mDEFAULT_COMMAND_LEN ( mWIN32_COMMAND_HEAD + mDEFAULT_BUFFER_LEN ) // Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹͷ<E1B9B9>ij<EFBFBD><C4B3><EFBFBD>
|
|||
|
|
|||
|
// CH341<34>˵<EFBFBD><CBB5><EFBFBD>ַ
|
|||
|
#define mCH347_ENDP_DATA_UP 0x86 // CH347<34><37><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ϴ<EFBFBD><CFB4>˵<EFBFBD><CBB5>ĵ<EFBFBD>ַ
|
|||
|
#define mCH347_ENDP_DATA_DOWN 0x06 // CH347<34><37><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>´<EFBFBD><C2B4>˵<EFBFBD><CBB5>ĵ<EFBFBD>ַ
|
|||
|
|
|||
|
// <20>豸<EFBFBD><E8B1B8><EFBFBD>ӿ<EFBFBD><D3BF>ṩ<EFBFBD>Ĺܵ<C4B9><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define mPipeDeviceCtrl 0x00000004 // CH347<34><37><EFBFBD>ۺϿ<DBBA><CFBF>ƹܵ<C6B9>
|
|||
|
#define mPipeDataUp 0x00000006 // CH347<34><37><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ϴ<EFBFBD><CFB4>ܵ<EFBFBD>
|
|||
|
#define mPipeDataDown 0x00000007 // CH347<34><37><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>´<EFBFBD><C2B4>ܵ<EFBFBD>
|
|||
|
|
|||
|
// Ӧ<>ò<EFBFBD><C3B2>ӿڵĹ<DAB5><C4B9>ܴ<EFBFBD><DCB4><EFBFBD>
|
|||
|
#define mFuncNoOperation 0x00000000 // <20><EFBFBD><DEB2><EFBFBD>
|
|||
|
#define mFuncGetVersion 0x00000001 // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE>
|
|||
|
#define mFuncGetConfig 0x00000002 // <20><>ȡUSB<53>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define mFuncSetTimeout 0x00000009 // <20><><EFBFBD><EFBFBD>USBͨѶ<CDA8><D1B6>ʱ
|
|||
|
#define mFuncSetExclusive 0x0000000b // <20><><EFBFBD>ö<EFBFBD>ռʹ<D5BC><CAB9>
|
|||
|
#define mFuncResetDevice 0x0000000c // <20><>λUSB<53>豸
|
|||
|
#define mFuncResetPipe 0x0000000d // <20><>λUSB<53>ܵ<EFBFBD>
|
|||
|
#define mFuncAbortPipe 0x0000000e // ȡ<><C8A1>USB<53>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define mFuncBufferMode 0x00000020 // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
#define mFuncBufferModeDn 0x00000021 // <20>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
|||
|
#define mFuncGetVersionEx 0x00000022 // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD>ż<EFBFBD>оƬ<D0BE>ͺ<EFBFBD>
|
|||
|
// USB<53>豸<EFBFBD><E8B1B8><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define mUSB_CLR_FEATURE 0x01
|
|||
|
#define mUSB_SET_FEATURE 0x03
|
|||
|
#define mUSB_GET_STATUS 0x00
|
|||
|
#define mUSB_SET_ADDRESS 0x05
|
|||
|
#define mUSB_GET_DESCR 0x06
|
|||
|
#define mUSB_SET_DESCR 0x07
|
|||
|
#define mUSB_GET_CONFIG 0x08
|
|||
|
#define mUSB_SET_CONFIG 0x09
|
|||
|
#define mUSB_GET_INTERF 0x0a
|
|||
|
#define mUSB_SET_INTERF 0x0b
|
|||
|
#define mUSB_SYNC_FRAME 0x0c
|
|||
|
|
|||
|
// CH341<34><31><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ר<EFBFBD><D7A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define mCH341_VENDOR_READ 0xC0 // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>ʵ<EFBFBD>ֵ<EFBFBD>CH341<34><31><EFBFBD><EFBFBD>ר<EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define mCH341_VENDOR_WRITE 0x40 // ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>ʵ<EFBFBD>ֵ<EFBFBD>CH341<34><31><EFBFBD><EFBFBD>ר<EFBFBD><D7A8>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
#define mCH341A_CMD_I2C_STREAM 0xAA // I2C<32>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>Ӵ<EFBFBD><D3B4>ֽڿ<D6BD>ʼΪI2C<32><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define mCH341A_CMD_UIO_STREAM 0xAB // UIO<49>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>Ӵ<EFBFBD><D3B4>ֽڿ<D6BD>ʼΪ<CABC><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define mCH341A_CMD_PIO_STREAM 0xAE // PIO<49>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>Ӵ<EFBFBD><D3B4>ֽڿ<D6BD>ʼΪ<CABC><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// CH341A<31><41><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ר<EFBFBD><D7A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define mCH341A_BUF_CLEAR 0xB2 // <20><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define mCH341A_I2C_CMD_X 0x54 // <20><><EFBFBD><EFBFBD>I2C<32>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
|
|||
|
#define mCH341A_DELAY_MS 0x5E // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB>ʱָ<CAB1><D6B8>ʱ<EFBFBD><CAB1>
|
|||
|
#define mCH341A_GET_VER 0x5F // <20><>ȡоƬ<D0BE>汾
|
|||
|
|
|||
|
#define mCH341A_CMD_I2C_STM_STA 0x74 // I2C<32>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ
|
|||
|
#define mCH341A_CMD_I2C_STM_STO 0x75 // I2C<32>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD>ֹͣλ
|
|||
|
#define mCH341A_CMD_I2C_STM_OUT 0x80 // I2C<32>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,λ5-λ0Ϊ<30><CEAA><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>,0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽڲ<D6BD><DAB2><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
|
|||
|
#define mCH341A_CMD_I2C_STM_IN 0xC0 // I2C<32>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,λ5-λ0Ϊ<30><CEAA><EFBFBD><EFBFBD>,0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽڲ<D6BD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
|
|||
|
#define mCH341A_CMD_I2C_STM_MAX ( min( 0x3F, mCH341_PACKET_LENGTH ) ) // I2C<32>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define mCH341A_CMD_I2C_STM_SET 0x60 // I2C<32>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>,λ2=SPI<50><49>I/O<><4F>(0=<3D><><EFBFBD>뵥<EFBFBD><EBB5A5>,1=˫<><CBAB>˫<EFBFBD><CBAB>),λ1λ0=I2C<32>ٶ<EFBFBD>(00=<3D><><EFBFBD><EFBFBD>,01=<3D><>,10=<3D><><EFBFBD><EFBFBD>,11=<3D><><EFBFBD><EFBFBD>)
|
|||
|
#define mCH341A_CMD_I2C_STM_US 0x40 // I2C<32>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><CEA2>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB>ʱ,λ3-λ0Ϊ<30><CEAA>ʱֵ
|
|||
|
#define mCH341A_CMD_I2C_STM_MS 0x50 // I2C<32>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB>ʱ,λ3-λ0Ϊ<30><CEAA>ʱֵ
|
|||
|
#define mCH341A_CMD_I2C_STM_DLY 0x0F // I2C<32>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
#define mCH341A_CMD_I2C_STM_END 0x00 // I2C<32>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
#define mCH341A_CMD_UIO_STM_IN 0x00 // UIO<49>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D7-D0
|
|||
|
#define mCH341A_CMD_UIO_STM_DIR 0x40 // UIO<49>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A>趨I/O<><4F><EFBFBD><EFBFBD>D5-D0,λ5-λ0Ϊ<30><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define mCH341A_CMD_UIO_STM_OUT 0x80 // UIO<49>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>D5-D0,λ5-λ0Ϊ<30><CEAA><EFBFBD><EFBFBD>
|
|||
|
#define mCH341A_CMD_UIO_STM_US 0xC0 // UIO<49>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><CEA2>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB>ʱ,λ5-λ0Ϊ<30><CEAA>ʱֵ
|
|||
|
#define mCH341A_CMD_UIO_STM_END 0x20 // UIO<49>ӿڵ<D3BF><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
#define MAX_DEVICE_PATH_SIZE 128 // <20>豸<EFBFBD><E8B1B8><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
|||
|
#define MAX_DEVICE_ID_SIZE 64 // <20>豸ID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
|||
|
#endif _CH341_DLL_H
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
|
|||
|
#define CH347_USB_VENDOR 0
|
|||
|
#define CH347_USB_HID 2
|
|||
|
#define CH347_USB_VCP 3
|
|||
|
|
|||
|
//CH347_USB_VENDOR֧<52><D6A7>CH341/7
|
|||
|
#define CHIP_TYPE_CH341 0
|
|||
|
#define CHIP_TYPE_CH347 1
|
|||
|
|
|||
|
//оƬ<D0BE><C6AC><EFBFBD>ܽӿں<D3BF>
|
|||
|
#define CH347_FUNC_UART 0
|
|||
|
#define CH347_FUNC_SPI_IIC 1
|
|||
|
#define CH347_FUNC_JTAG_IIC 2
|
|||
|
|
|||
|
#define DEFAULT_READ_TIMEOUT 500 //Ĭ<>϶<EFBFBD><CFB6><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define DEFAULT_WRITE_TIMEOUT 500 //Ĭ<><C4AC>д<EFBFBD><D0B4>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
#define mCH347_PACKET_LENGTH 512 // CH347֧<37>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0>ij<EFBFBD><C4B3><EFBFBD>
|
|||
|
|
|||
|
#pragma pack(1)
|
|||
|
//SPI<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
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<EFBFBD><EFBFBD>7=468.75KHz
|
|||
|
UCHAR iByteOrder; // 0=<3D><>λ<EFBFBD><CEBB>ǰ(LSB), 1=<3D><>λ<EFBFBD><CEBB>ǰ(MSB)
|
|||
|
USHORT iSpiWriteReadInterval; // SPI<50>ӿڳ<D3BF><DAB3><EFBFBD><EFBFBD><EFBFBD>ȡд<C8A1><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEA3AC>λΪuS
|
|||
|
UCHAR iSpiOutDefaultData; // SPI<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱĬ<CAB1><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ULONG iChipSelect; // Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>, λ7Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>, λ7Ϊ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч: λ1λ0Ϊ00/01<30>ֱ<EFBFBD>ѡ<EFBFBD><D1A1>CS1/CS2<53><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>͵<EFBFBD>ƽ<EFBFBD><C6BD>ЧƬѡ
|
|||
|
UCHAR CS1Polarity; // λ0<CEBB><30>ƬѡCS1<53><31><EFBFBD>Կ<EFBFBD><D4BF>ƣ<EFBFBD>0<EFBFBD><30><EFBFBD>͵<EFBFBD>ƽ<EFBFBD><C6BD>Ч<EFBFBD><D0A7>1<EFBFBD><31><EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD><C6BD>Ч<EFBFBD><D0A7>
|
|||
|
UCHAR CS2Polarity; // λ0<CEBB><30>ƬѡCS2<53><32><EFBFBD>Կ<EFBFBD><D4BF>ƣ<EFBFBD>0<EFBFBD><30><EFBFBD>͵<EFBFBD>ƽ<EFBFBD><C6BD>Ч<EFBFBD><D0A7>1<EFBFBD><31><EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD><C6BD>Ч<EFBFBD><D0A7>
|
|||
|
USHORT iIsAutoDeativeCS; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA>Ƿ<EFBFBD><C7B7>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>Ƭѡ
|
|||
|
USHORT iActiveDelay; // <20><><EFBFBD><EFBFBD>Ƭѡ<C6AC><D1A1>ִ<EFBFBD>ж<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1>,<2C><>λus
|
|||
|
ULONG iDelayDeactive; // <20><><EFBFBD><EFBFBD>Ƭѡ<C6AC><D1A1>ִ<EFBFBD>ж<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1>,<2C><>λus
|
|||
|
}mSpiCfgS,*mPSpiCfgS;
|
|||
|
|
|||
|
//<2F>豸<EFBFBD><E8B1B8>Ϣ
|
|||
|
typedef struct _DEV_INFOR{
|
|||
|
UCHAR iIndex; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
UCHAR DevicePath[MAX_PATH]; // <20>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>CreateFile
|
|||
|
UCHAR UsbClass; // 0:CH347_USB_CH341, 2:CH347_USB_HID,3:CH347_USB_VCP
|
|||
|
UCHAR FuncType; // 0:CH347_FUNC_UART,1:CH347_FUNC_SPI_I2C,2:CH347_FUNC_JTAG_I2C
|
|||
|
CHAR DeviceID[64]; // USB\VID_xxxx&PID_xxxx
|
|||
|
UCHAR ChipMode; // оƬģʽ,0:Mode0(UART0/1); 1:Mode1(Uart1+SPI+I2C); 2:Mode2(HID Uart1+SPI+I2C) 3:Mode3(Uart1+Jtag+IIC)
|
|||
|
HANDLE DevHandle; // <20>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
USHORT BulkOutEndpMaxSize; // <20>ϴ<EFBFBD><CFB4>˵<EFBFBD><CBB5><EFBFBD>С
|
|||
|
USHORT BulkInEndpMaxSize; // <20>´<EFBFBD><C2B4>˵<EFBFBD><CBB5><EFBFBD>С
|
|||
|
UCHAR UsbSpeedType; // USB<53>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD>ͣ<EFBFBD>0:FS,1:HS,2:SS
|
|||
|
UCHAR CH347IfNum; // <20>豸<EFBFBD>ӿں<D3BF>: 0:UART,1:SPI/IIC/JTAG/GPIO
|
|||
|
UCHAR DataUpEndp; // <20>˵<EFBFBD><CBB5><EFBFBD>ַ
|
|||
|
UCHAR DataDnEndp; // <20>˵<EFBFBD><CBB5><EFBFBD>ַ
|
|||
|
CHAR ProductString[64]; // USB<53><42>Ʒ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
|||
|
CHAR ManufacturerString[64]; // USB<53><42><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
|||
|
ULONG WriteTimeout; // USBд<42><D0B4>ʱ
|
|||
|
ULONG ReadTimeout; // USB<53><42><EFBFBD><EFBFBD>ʱ
|
|||
|
CHAR FuncDescStr[64]; // <20>ӿڹ<D3BF><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
UCHAR FirewareVer; // <20>̼<EFBFBD><CCBC>汾
|
|||
|
}mDeviceInforS,*mPDeviceInforS;
|
|||
|
#pragma pack()
|
|||
|
|
|||
|
// CH347ģʽ<C4A3><CABD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>,֧<><D6A7>CH347<34><37><EFBFBD><EFBFBD>ģʽ<C4A3>µĴ<C4B4><F2BFAAA1>رա<D8B1>USB<53><42><EFBFBD><EFBFBD>USBд<42><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HID
|
|||
|
//<2F><><EFBFBD><EFBFBD>USB<53>豸
|
|||
|
HANDLE WINAPI CH347OpenDevice(ULONG DevI);
|
|||
|
|
|||
|
//<2F>ر<EFBFBD>USB<53>豸
|
|||
|
BOOL WINAPI CH347CloseDevice(ULONG iIndex);
|
|||
|
|
|||
|
//<2F><>ȡ<EFBFBD>豸<EFBFBD><E8B1B8>Ϣ
|
|||
|
BOOL WINAPI CH347GetDeviceInfor(ULONG iIndex,mDeviceInforS *DevInformation);
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE><EFBFBD>豸<EFBFBD>汾<EFBFBD><E6B1BE>оƬ<D0BE><C6AC><EFBFBD><EFBFBD>(CH341(FS)/CH347HS)
|
|||
|
BOOL WINAPI CH347GetVersion(ULONG iIndex,
|
|||
|
PUCHAR iDriverVer,
|
|||
|
PUCHAR iDLLVer,
|
|||
|
PUCHAR ibcdDevice,
|
|||
|
PUCHAR iChipType); //CHIP_TYPE_CH341/7
|
|||
|
|
|||
|
typedef VOID ( CALLBACK * mPCH347_NOTIFY_ROUTINE ) ( // <20>豸<EFBFBD>¼<EFBFBD>֪ͨ<CDA8>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ULONG iEventStatus ); // <20>豸<EFBFBD>¼<EFBFBD><C2BC>͵<EFBFBD>ǰ״̬(<28><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>): 0=<3D>豸<EFBFBD>γ<EFBFBD><CEB3>¼<EFBFBD>, 3=<3D>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|||
|
|
|||
|
#define CH347_DEVICE_ARRIVAL 3 // <20>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>,<2C>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define CH347_DEVICE_REMOVE_PEND 1 // <20>豸<EFBFBD><E8B1B8>Ҫ<EFBFBD>γ<EFBFBD>
|
|||
|
#define CH347_DEVICE_REMOVE 0 // <20>豸<EFBFBD>γ<EFBFBD><CEB3>¼<EFBFBD>,<2C>Ѿ<EFBFBD><D1BE>γ<EFBFBD>
|
|||
|
|
|||
|
BOOL WINAPI CH347SetDeviceNotify( // <20>趨<EFBFBD>豸<EFBFBD>¼<EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD>
|
|||
|
ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>,0<><30>Ӧ<EFBFBD><D3A6>һ<EFBFBD><D2BB><EFBFBD>豸
|
|||
|
PCHAR iDeviceID, // <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>,ָ<><D6B8><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>,ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5>豸<EFBFBD><E8B1B8>ID,<2C>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>\0<><30>ֹ
|
|||
|
mPCH347_NOTIFY_ROUTINE iNotifyRoutine ); // ָ<><D6B8><EFBFBD>豸<EFBFBD>¼<EFBFBD><C2BC>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>,ΪNULL<4C><4C>ȡ<EFBFBD><C8A1><EFBFBD>¼<EFBFBD>֪ͨ,<2C><><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD>¼<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>øó<C3B8><C3B3><EFBFBD>
|
|||
|
|
|||
|
// <20><>ȡUSB<53><42><EFBFBD>ݿ<EFBFBD>
|
|||
|
BOOL WINAPI CH347ReadData( ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
PVOID oBuffer, // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD>㹻<EFBFBD><E3B9BB><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
PULONG ioLength ); // ָ<>ȵ<F2B3A4B6>Ԫ,<2C><><EFBFBD><EFBFBD>ʱΪ<CEAA><D7BC><EFBFBD><EFBFBD>ȡ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>,<2C><><EFBFBD>غ<EFBFBD>Ϊʵ<CEAA>ʶ<EFBFBD>ȡ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
|||
|
|
|||
|
// дȡUSB<53><42><EFBFBD>ݿ<EFBFBD>
|
|||
|
BOOL WINAPI CH347WriteData(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
PVOID iBuffer, // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><D7BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
PULONG ioLength ); // ָ<>ȵ<F2B3A4B6>Ԫ,<2C><><EFBFBD><EFBFBD>ʱΪ<CEAA><D7BC>д<EFBFBD><D0B4><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>,<2C><><EFBFBD>غ<EFBFBD>Ϊʵ<CEAA><CAB5>д<EFBFBD><D0B4><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD>USB<53><42><EFBFBD>ݶ<EFBFBD>д<EFBFBD>ij<EFBFBD>ʱ
|
|||
|
BOOL WINAPI CH347SetTimeout(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
ULONG iWriteTimeout, // ָ<><D6B8>USBд<42><D0B4><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ij<EFBFBD>ʱʱ<CAB1><CAB1>,<2C>Ժ<EFBFBD><D4BA><EFBFBD>mSΪ<53><CEAA>λ,0xFFFFFFFFָ<46><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ(Ĭ<><C4AC>ֵ)
|
|||
|
ULONG iReadTimeout ); // ָ<><D6B8>USB<53><42>ȡ<EFBFBD><C8A1><EFBFBD>ݿ<EFBFBD><DDBF>ij<EFBFBD>ʱʱ<CAB1><CAB1>,<2C>Ժ<EFBFBD><D4BA><EFBFBD>mSΪ<53><CEAA>λ,0xFFFFFFFFָ<46><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ(Ĭ<><C4AC>ֵ)
|
|||
|
|
|||
|
/***************SPI********************/
|
|||
|
// SPI<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
|||
|
BOOL WINAPI CH347SPI_Init(ULONG iIndex,mSpiCfgS *SpiCfg);
|
|||
|
|
|||
|
//<2F><>ȡSPI<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
BOOL WINAPI CH347SPI_GetCfg(ULONG iIndex,mSpiCfgS *SpiCfg);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ƭѡ״̬,ʹ<><CAB9>ǰ<EFBFBD><C7B0><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>CH347SPI_Init<69><74>CS<43><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
BOOL WINAPI CH347SPI_ChangeCS(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
UCHAR iStatus); // 0=<3D><><EFBFBD><EFBFBD>Ƭѡ,1=<3D><><EFBFBD><EFBFBD>Ƭѡ
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>SPIƬѡ
|
|||
|
BOOL WINAPI CH347SPI_SetChipSelect(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
USHORT iEnableSelect, // <20>Ͱ<EFBFBD>λΪCS1<53><31><EFBFBD>߰<EFBFBD>λΪCS2; <20>ֽ<EFBFBD>ֵΪ1=<3D><><EFBFBD><EFBFBD>CS,Ϊ0=<3D><><EFBFBD>Դ<EFBFBD>CS<43><53><EFBFBD><EFBFBD>
|
|||
|
USHORT iChipSelect, // <20>Ͱ<EFBFBD>λΪCS1<53><31><EFBFBD>߰<EFBFBD>λΪCS2;Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>,0=<3D><><EFBFBD><EFBFBD>Ƭѡ,1=<3D><><EFBFBD><EFBFBD>Ƭѡ
|
|||
|
ULONG iIsAutoDeativeCS, // <20><>16λΪCS1<53><31><EFBFBD><EFBFBD>16λΪCS2;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><C9BA>Ƿ<EFBFBD><C7B7>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>Ƭѡ
|
|||
|
ULONG iActiveDelay, // <20><>16λΪCS1<53><31><EFBFBD><EFBFBD>16λΪCS2;<3B><><EFBFBD><EFBFBD>Ƭѡ<C6AC><D1A1>ִ<EFBFBD>ж<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1>,<2C><>λus
|
|||
|
ULONG iDelayDeactive); // <20><>16λΪCS1<53><31><EFBFBD><EFBFBD>16λΪCS2;<3B><><EFBFBD><EFBFBD>Ƭѡ<C6AC><D1A1>ִ<EFBFBD>ж<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1>,<2C><>λus
|
|||
|
|
|||
|
//SPI4д<34><D0B4><EFBFBD><EFBFBD>
|
|||
|
BOOL WINAPI CH347SPI_Write(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
ULONG iChipSelect, // Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>, λ7Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>, λ7Ϊ1<CEAA><31><EFBFBD><EFBFBD>Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>
|
|||
|
ULONG iLength, // <><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
ULONG iWriteStep, // <><D7BC><EFBFBD><EFBFBD>ȡ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
|||
|
PVOID ioBuffer); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD>MOSIд<49><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//SPI4<49><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ݣ<EFBFBD>Ч<EFBFBD>ʽ<EFBFBD>CH347SPI_WriteRead<61>ߺܶ<DFBA>
|
|||
|
BOOL WINAPI CH347SPI_Read(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
ULONG iChipSelect, // Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>, λ7Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>, λ7Ϊ1<CEAA><31><EFBFBD><EFBFBD>Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>
|
|||
|
ULONG oLength, // <><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
PULONG iLength, // <><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
PVOID ioBuffer); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD>DOUTд<54><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>غ<EFBFBD><D8BA>Ǵ<EFBFBD>DIN<49><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD>SPI<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,4<>߽ӿ<DFBD>
|
|||
|
BOOL WINAPI CH347SPI_WriteRead(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
ULONG iChipSelect, // Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>, λ7Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>, λ7Ϊ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭѡ
|
|||
|
ULONG iLength, // <><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
PVOID ioBuffer ); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD>DOUTд<54><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>غ<EFBFBD><D8BA>Ǵ<EFBFBD>DIN<49><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD>SPI<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,4<>߽ӿ<DFBD>
|
|||
|
BOOL WINAPI CH347StreamSPI4(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
ULONG iChipSelect, // Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>, λ7Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD>, λ7Ϊ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
|
|||
|
ULONG iLength, // <><D7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
PVOID ioBuffer ); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><D7BC><EFBFBD><EFBFBD>DOUTд<54><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>غ<EFBFBD><D8BA>Ǵ<EFBFBD>DIN<49><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
/***************JTAG********************/
|
|||
|
//JTAG<41>ӿڳ<D3BF>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD>ٶ<EFBFBD>
|
|||
|
BOOL WINAPI CH347Jtag_INIT(ULONG iIndex,
|
|||
|
UCHAR iClockRate); //ͨ<><CDA8><EFBFBD>ٶȣ<D9B6><C8A3><EFBFBD>ЧֵΪ0-5<><35>ֵԽ<D6B5><D4BD>ͨ<EFBFBD><CDA8><EFBFBD>ٶ<EFBFBD>Խ<EFBFBD><D4BD>
|
|||
|
|
|||
|
//<2F><>ȡJtag<61>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
BOOL WINAPI CH347Jtag_GetCfg(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
UCHAR *ClockRate); //ͨ<><CDA8><EFBFBD>ٶȣ<D9B6><C8A3><EFBFBD>ЧֵΪ0-5<><35>ֵԽ<D6B5><D4BD>ͨ<EFBFBD><CDA8><EFBFBD>ٶ<EFBFBD>Խ<EFBFBD><D4BD>
|
|||
|
|
|||
|
//λ<><CEBB><EFBFBD><EFBFBD>ʽJTAG IR/DR<44><52><EFBFBD>ݶ<EFBFBD>д.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĶ<DDB5>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>л<EFBFBD><D0BB>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD>ഫ<EFBFBD>䡣<EFBFBD><E4A1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>CH347Jtag_WriteRead_Fast
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4096<39>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д
|
|||
|
//״̬<D7B4><CCAC>:Run-Test->Shift-IR/DR..->Exit IR/DR -> Run-Test
|
|||
|
BOOL WINAPI CH347Jtag_WriteRead(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
BOOL IsDR, // =TRUE: DR<44><52><EFBFBD>ݶ<EFBFBD>д,=FALSE:IR<49><52><EFBFBD>ݶ<EFBFBD>д
|
|||
|
ULONG iWriteBitLength, // д<><D0B4><EFBFBD><EFBFBD>,<><D7BC>д<EFBFBD><D0B4><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
|||
|
PVOID iWriteBitBuffer, // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><D7BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
PULONG oReadBitLength, // ָ<>ȵ<F2B3A4B6>Ԫ,<2C><><EFBFBD>غ<EFBFBD>Ϊʵ<CEAA>ʶ<EFBFBD>ȡ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
|||
|
PVOID oReadBitBuffer ); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD>㹻<EFBFBD><E3B9BB><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//JTAG IR/DR<44><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д,<2C><><EFBFBD>ڶ<EFBFBD><DAB6>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>JTAG<41>̼<EFBFBD><CCBC><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>4K<34><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD>4096<39>ֽڡ<D6BD><DAA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>
|
|||
|
//״̬<D7B4><CCAC>:Run-Test->Shift-IR/DR..->Exit IR/DR -> Run-Test
|
|||
|
BOOL WINAPI CH347Jtag_WriteRead_Fast(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
BOOL IsDR, // =TRUE: DR<44><52><EFBFBD>ݶ<EFBFBD>д,=FALSE:IR<49><52><EFBFBD>ݶ<EFBFBD>д
|
|||
|
ULONG iWriteBitLength, // д<><D0B4><EFBFBD><EFBFBD>,<><D7BC>д<EFBFBD><D0B4><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
|||
|
PVOID iWriteBitBuffer, // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><D7BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
PULONG oReadBitLength, // ָ<>ȵ<F2B3A4B6>Ԫ,<2C><><EFBFBD>غ<EFBFBD>Ϊʵ<CEAA>ʶ<EFBFBD>ȡ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
|||
|
PVOID oReadBitBuffer ); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD>㹻<EFBFBD><E3B9BB><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//<2F>л<EFBFBD>JTAG״̬<D7B4><CCAC>
|
|||
|
BOOL WINAPI CH347Jtag_SwitchTapState(UCHAR TapState);
|
|||
|
|
|||
|
//JTAG DRд,<2C><><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA>λ,<2C><><EFBFBD>ڶ<EFBFBD><DAB6>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>JTAG<41>̼<EFBFBD><CCBC><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//״̬<D7B4><CCAC>:Run-Test->Shift-DR..->Exit DR -> Run-Test
|
|||
|
BOOL WINAPI CH347Jtag_ByteWriteDR(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
ULONG iWriteLength, // д<><D0B4><EFBFBD><EFBFBD>,<><D7BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>
|
|||
|
PVOID iWriteBuffer); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><D7BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//JTAG DR<44><52>,<2C><><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA>λ,<2C><><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//״̬<D7B4><CCAC>:Run-Test->Shift-DR..->Exit DR -> Run-Test
|
|||
|
BOOL WINAPI CH347Jtag_ByteReadDR(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
PULONG oReadLength, // ָ<>ȵ<F2B3A4B6>Ԫ,<2C><><EFBFBD>غ<EFBFBD>Ϊʵ<CEAA>ʶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>
|
|||
|
PVOID oReadBuffer ); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD>㹻<EFBFBD><E3B9BB><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//JTAG IRд,<2C><><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA>λ,<2C><><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|||
|
//״̬<D7B4><CCAC>:Run-Test->Shift-IR..->Exit IR -> Run-Test
|
|||
|
BOOL WINAPI CH347Jtag_ByteWriteIR(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
ULONG iWriteLength, // д<><D0B4><EFBFBD><EFBFBD>,<><D7BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>
|
|||
|
PVOID iWriteBuffer); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><D7BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//JTAG IR<49><52>,<2C><><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA>λ,<2C><><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
|
|||
|
//״̬<D7B4><CCAC>:Run-Test->Shift-IR..->Exit IR -> Run-Test
|
|||
|
BOOL WINAPI CH347Jtag_ByteReadIR(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
PULONG oReadLength, // ָ<>ȵ<F2B3A4B6>Ԫ,<2C><><EFBFBD>غ<EFBFBD>Ϊʵ<CEAA>ʶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>
|
|||
|
PVOID oReadBuffer ); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD>㹻<EFBFBD><E3B9BB><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//λ<><CEBB><EFBFBD><EFBFBD>ʽJTAG DR<44><52><EFBFBD><EFBFBD>д.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĶ<DDB5>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>л<EFBFBD><D0BB>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD>ഫ<EFBFBD>䡣<EFBFBD><E4A1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>USB20Jtag_ByeWriteDR
|
|||
|
//״̬<D7B4><CCAC>:Run-Test->Shift-DR..->Exit DR -> Run-Test
|
|||
|
BOOL WINAPI CH347Jtag_BitWriteDR(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
ULONG iWriteBitLength, // ָ<>ȵ<F2B3A4B6>Ԫ,<2C><><EFBFBD>غ<EFBFBD>Ϊʵ<CEAA>ʶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>
|
|||
|
PVOID iWriteBitBuffer ); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD>㹻<EFBFBD><E3B9BB><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//λ<><CEBB><EFBFBD><EFBFBD>ʽJTAG IR<49><52><EFBFBD><EFBFBD>д.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĶ<DDB5>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>л<EFBFBD><D0BB>ȿ<EFBFBD><C8BF><EFBFBD><EFBFBD>ഫ<EFBFBD>䡣<EFBFBD><E4A1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>USB20Jtag_ByteWriteIR
|
|||
|
//״̬<D7B4><CCAC>:Run-Test->Shift-IR..->Exit IR -> Run-Test
|
|||
|
BOOL WINAPI CH347Jtag_BitWriteIR(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
ULONG iWriteBitLength, // ָ<>ȵ<F2B3A4B6>Ԫ,<2C><><EFBFBD>غ<EFBFBD>Ϊʵ<CEAA>ʶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>
|
|||
|
PVOID iWriteBitBuffer ); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD>㹻<EFBFBD><E3B9BB><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//λ<><CEBB><EFBFBD><EFBFBD>ʽJTAG IR<49><52><EFBFBD>ݶ<EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĶ<DDB5>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>л<EFBFBD><D0BB>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>USB20Jtag_ByteReadIR
|
|||
|
//״̬<D7B4><CCAC>:Run-Test->Shift-IR..->Exit IR -> Run-Test
|
|||
|
BOOL WINAPI CH347Jtag_BitReadIR(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
PULONG oReadBitLength, // ָ<>ȵ<F2B3A4B6>Ԫ,<2C><><EFBFBD>غ<EFBFBD>Ϊʵ<CEAA>ʶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>
|
|||
|
PVOID oReadBitBuffer ); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD>㹻<EFBFBD><E3B9BB><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//λ<><CEBB><EFBFBD><EFBFBD>ʽJTAG DR<44><52><EFBFBD>ݶ<EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĶ<DDB5>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>USB20Jtag_ByteReadDR
|
|||
|
//״̬<D7B4><CCAC>:Run-Test->Shift-DR..->Exit DR -> Run-Test
|
|||
|
BOOL WINAPI CH347Jtag_BitReadDR(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
PULONG oReadBitLength, // ָ<>ȵ<F2B3A4B6>Ԫ,<2C><><EFBFBD>غ<EFBFBD>Ϊʵ<CEAA>ʶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ֽڳ<D6BD><DAB3><EFBFBD>
|
|||
|
PVOID oReadBitBuffer ); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD>㹻<EFBFBD><E3B9BB><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
//<2F><>ȡCH347<34><37>GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ƽֵ
|
|||
|
BOOL WINAPI CH347GPIO_Get(ULONG iIndex,
|
|||
|
UCHAR *iDir, //<2F><><EFBFBD>ŷ<EFBFBD><C5B7><EFBFBD>:GPIO0-7<><37>Ӧλ0-7.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룻1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
UCHAR *iData); //GPIO0<4F><30>ƽ:GPIO0-7<><37>Ӧλ0-7,0<><30><EFBFBD>͵<EFBFBD>ƽ<EFBFBD><C6BD>1<EFBFBD><31><EFBFBD>ߵ<EFBFBD>ƽ)
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>CH347<34><37>GPIO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ƽֵ
|
|||
|
BOOL WINAPI CH347GPIO_Set(ULONG iIndex,
|
|||
|
UCHAR iEnable, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>־:<3A><>Ӧλ0-7,<2C><>ӦGPIO0-7.
|
|||
|
UCHAR iSetDirOut, //<2F><><EFBFBD><EFBFBD>I/O<><4F><EFBFBD><EFBFBD>,ijλ<C4B3><CEBB>0<EFBFBD><30><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>,ijλ<C4B3><CEBB>1<EFBFBD><31><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>.GPIO0-7<><37>Ӧλ0-7.
|
|||
|
UCHAR iSetDataOut); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>I/O<><4F><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>,<2C><>ôijλ<C4B3><CEBB>0ʱ<30><CAB1>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ,ijλ<C4B3><CEBB>1ʱ<31><CAB1>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>IAP<41>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
BOOL WINAPI CH347StartIapFwUpate(ULONG iIndex,
|
|||
|
ULONG FwSize); // <20>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
/**************HID/VCP<43><50><EFBFBD><EFBFBD>**********************/
|
|||
|
//<2F><EFBFBD><F2BFAAB4><EFBFBD>
|
|||
|
HANDLE WINAPI CH347Uart_Open(ULONG iIndex);
|
|||
|
|
|||
|
//<2F>رմ<D8B1><D5B4><EFBFBD>
|
|||
|
BOOL WINAPI CH347Uart_Close(ULONG iIndex);
|
|||
|
|
|||
|
BOOL WINAPI CH347Uart_SetDeviceNotify( // <20>趨<EFBFBD>豸<EFBFBD>¼<EFBFBD>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD>
|
|||
|
ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>,0<><30>Ӧ<EFBFBD><D3A6>һ<EFBFBD><D2BB><EFBFBD>豸
|
|||
|
PCHAR iDeviceID, // <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>,ָ<><D6B8><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>,ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5>豸<EFBFBD><E8B1B8>ID,<2C>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>\0<><30>ֹ
|
|||
|
mPCH347_NOTIFY_ROUTINE iNotifyRoutine ); // ָ<><D6B8><EFBFBD>豸<EFBFBD>¼<EFBFBD><C2BC>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>,ΪNULL<4C><4C>ȡ<EFBFBD><C8A1><EFBFBD>¼<EFBFBD>֪ͨ,<2C><><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD>¼<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>øó<C3B8><C3B3><EFBFBD>
|
|||
|
|
|||
|
//<2F><>ȡUARTӲ<54><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
BOOL WINAPI CH347Uart_GetCfg(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
PULONG BaudRate, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
PUCHAR ByteSize, // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>(5,6,7,8,16)
|
|||
|
PUCHAR Parity, // У<><D0A3>λ(0<><30>None; 1<><31>Odd; 2<><32>Even; 3<><33>Mark; 4<><34>Space)
|
|||
|
PUCHAR StopBits, // ֹͣλ<D6B9><CEBB>(0<><30>1ֹͣλ; 1<><31>1.5ֹͣλ; 2<><32>2ֹͣλ)<29><>
|
|||
|
PUCHAR ByteTimeout); //<2F>ֽڳ<D6BD>ʱ
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>UART<52><54><EFBFBD><EFBFBD>
|
|||
|
BOOL WINAPI CH347Uart_Init(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
DWORD BaudRate, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
UCHAR ByteSize, // <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>(5,6,7,8,16)
|
|||
|
UCHAR Parity, // У<><D0A3>λ(0<><30>None; 1<><31>Odd; 2<><32>Even; 3<><33>Mark; 4<><34>Space)
|
|||
|
UCHAR StopBits, // ֹͣλ<D6B9><CEBB>(0<><30>1ֹͣλ; 1<><31>1.5ֹͣλ; 2<><32>2ֹͣλ)<29><>
|
|||
|
UCHAR ByteTimeout);// <20>ֽڳ<D6BD>ʱʱ<CAB1><CAB1>,<2C><>λ100uS
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD>USB<53><42><EFBFBD>ݶ<EFBFBD>д<EFBFBD>ij<EFBFBD>ʱ
|
|||
|
BOOL WINAPI CH347Uart_SetTimeout(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
ULONG iWriteTimeout, // ָ<><D6B8>USBд<42><D0B4><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ij<EFBFBD>ʱʱ<CAB1><CAB1>,<2C>Ժ<EFBFBD><D4BA><EFBFBD>mSΪ<53><CEAA>λ,0xFFFFFFFFָ<46><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ(Ĭ<><C4AC>ֵ)
|
|||
|
ULONG iReadTimeout ); // ָ<><D6B8>USB<53><42>ȡ<EFBFBD><C8A1><EFBFBD>ݿ<EFBFBD><DDBF>ij<EFBFBD>ʱʱ<CAB1><CAB1>,<2C>Ժ<EFBFBD><D4BA><EFBFBD>mSΪ<53><CEAA>λ,0xFFFFFFFFָ<46><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ(Ĭ<><C4AC>ֵ)
|
|||
|
|
|||
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ݿ<EFBFBD>
|
|||
|
BOOL WINAPI CH347Uart_Read(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
PVOID oBuffer, // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD>㹻<EFBFBD><E3B9BB><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
PULONG ioLength );// ָ<>ȵ<F2B3A4B6>Ԫ,<2C><><EFBFBD><EFBFBD>ʱΪ<CEAA><D7BC><EFBFBD><EFBFBD>ȡ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>,<2C><><EFBFBD>غ<EFBFBD>Ϊʵ<CEAA>ʶ<EFBFBD>ȡ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
|||
|
|
|||
|
// д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
|
|||
|
BOOL WINAPI CH347Uart_Write(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
PVOID iBuffer, // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><D7BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
PULONG ioLength );// ָ<>ȵ<F2B3A4B6>Ԫ,<2C><><EFBFBD><EFBFBD>ʱΪ<CEAA><D7BC>д<EFBFBD><D0B4><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>,<2C><><EFBFBD>غ<EFBFBD>Ϊʵ<CEAA><CAB5>д<EFBFBD><D0B4><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
|||
|
|
|||
|
//<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ֽ<EFBFBD>δȡ
|
|||
|
BOOL WINAPI CH347Uart_QueryBufUpload(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
LONGLONG *RemainBytes);
|
|||
|
|
|||
|
//<2F><>ȡ<EFBFBD>豸<EFBFBD><E8B1B8>Ϣ
|
|||
|
BOOL WINAPI CH347Uart_GetDeviceInfor(ULONG iIndex,mDeviceInforS *DevInformation);
|
|||
|
|
|||
|
|
|||
|
/********IIC***********/
|
|||
|
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
BOOL WINAPI CH347I2C_Set(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
ULONG iMode ); // ָ<><D6B8>ģʽ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// λ1-λ0: I2C<32>ӿ<EFBFBD><D3BF>ٶ<EFBFBD>/SCLƵ<4C><C6B5>, 00=<3D><><EFBFBD><EFBFBD>/20KHz,01=<3D><>/100KHz(Ĭ<><C4AC>ֵ),10=<3D><><EFBFBD><EFBFBD>/400KHz,11=<3D><><EFBFBD><EFBFBD>/750KHz
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Ϊ0
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>첽<EFBFBD><ECB2BD>ʱ,<2C><><EFBFBD>ú<EFBFBD><C3BA>ܿ췵<DCBF><ECB7B5>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<D6AE><C7B0>ʱָ<CAB1><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
BOOL WINAPI CH347I2C_SetDelaymS(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
ULONG iDelay ) ; // ָ<><D6B8><EFBFBD><EFBFBD>ʱ<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD>I2C<32><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,2<>߽ӿ<DFBD>,ʱ<><CAB1><EFBFBD><EFBFBD>ΪSCL<43><4C><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪSDA<44><41><EFBFBD><EFBFBD>
|
|||
|
BOOL WINAPI CH347StreamI2C( ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
ULONG iWriteLength, // <><D7BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
PVOID iWriteBuffer, // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><D7BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ֽ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>I2C<32>豸<EFBFBD><E8B1B8>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>λ
|
|||
|
ULONG iReadLength, // <><D7BC><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
PVOID oReadBuffer ); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>غ<EFBFBD><D8BA>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#ifndef _CH341_DLL_H
|
|||
|
typedef enum _EEPROM_TYPE {// EEPROM<4F>ͺ<EFBFBD>
|
|||
|
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
|
|||
|
|
|||
|
// <20><>EEPROM<4F>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ݿ<EFBFBD>,<2C>ٶ<EFBFBD>Լ56K<36>ֽ<EFBFBD>
|
|||
|
BOOL WINAPI CH347ReadEEPROM(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
EEPROM_TYPE iEepromID, // ָ<><D6B8>EEPROM<4F>ͺ<EFBFBD>
|
|||
|
ULONG iAddr, // ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ԫ<EFBFBD>ĵ<EFBFBD>ַ
|
|||
|
ULONG iLength, // <><D7BC><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
PUCHAR oBuffer ); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>غ<EFBFBD><D8BA>Ƕ<EFBFBD><C7B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// <20><>EEPROM<4F><4D>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
|
|||
|
BOOL WINAPI CH347WriteEEPROM(ULONG iIndex, // ָ<><D6B8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|||
|
EEPROM_TYPE iEepromID, // ָ<><D6B8>EEPROM<4F>ͺ<EFBFBD>
|
|||
|
ULONG iAddr, // ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ԫ<EFBFBD>ĵ<EFBFBD>ַ
|
|||
|
ULONG iLength, // <><D7BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
PUCHAR iBuffer ); // ָ<><D6B8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><D7BC>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
#endif // _CH347_DLL_H
|