初始版本,接近数据不对
This commit is contained in:
399
lib/ch341/ch341_lib.h
Normal file
399
lib/ch341/ch341_lib.h
Normal file
@ -0,0 +1,399 @@
|
||||
#ifndef _CH341_LIB_H
|
||||
#define _CH341_LIB_H
|
||||
|
||||
typedef enum _EEPROM_TYPE {
|
||||
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;
|
||||
|
||||
typedef enum _CHIP_TYPE {
|
||||
CHIP_CH341 = 0,
|
||||
CHIP_CH347T = 1,
|
||||
CHIP_CH347F = 2,
|
||||
} CHIP_TYPE;
|
||||
|
||||
typedef enum {
|
||||
TYPE_TTY = 0,
|
||||
TYPE_HID,
|
||||
TYPE_VCP,
|
||||
} FUNCTYPE;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* CH34XOpenDevice - open device
|
||||
* @pathname: device path in /dev directory
|
||||
*
|
||||
* The function return positive file descriptor if successful, others if fail.
|
||||
*/
|
||||
extern int CH34xOpenDevice(const char *pathname);
|
||||
|
||||
/**
|
||||
* CH34XCloseDevice - close device
|
||||
* @fd: file descriptor of device
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xCloseDevice(int fd);
|
||||
|
||||
/**
|
||||
* CH34x_GetDriverVersion - get vendor driver version
|
||||
* @fd: file descriptor of device
|
||||
* @Drv_Version: pointer to version string
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34x_GetDriverVersion(int fd, unsigned char *Drv_Version);
|
||||
|
||||
/**
|
||||
* CH34x_GetChipVersion - get chip version
|
||||
* @fd: file descriptor of device
|
||||
* @Version: pointer to version
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34x_GetChipVersion(int fd, unsigned char *Version);
|
||||
|
||||
/**
|
||||
* CH34x_GetChipType - get chip type
|
||||
* @fd: file descriptor of device
|
||||
* @ChipType: pointer to chip type
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34x_GetChipType(int fd, CHIP_TYPE *ChipType);
|
||||
|
||||
/**
|
||||
* CH34X_GetDeviceID - get device vid and pid
|
||||
* @fd: file descriptor of device
|
||||
* @id: pointer to store id which contains vid and pid
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34X_GetDeviceID(int fd, uint32_t *id);
|
||||
|
||||
/**
|
||||
* CH34xSetParaMode - set chip parrallel work mode
|
||||
* @fd: file descriptor of device
|
||||
* @Mode: work mode, 0/1->EPP mode, 2->MEM mode
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xSetParaMode(int fd, uint8_t Mode);
|
||||
|
||||
/**
|
||||
* CH34xInitParallel - initial chip parrallel work mode
|
||||
* @fd: file descriptor of device
|
||||
* @Mode: work mode, 0/1->EPP mode, 2->MEM mode
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xInitParallel(int fd, uint8_t Mode);
|
||||
|
||||
/**
|
||||
* CH34xEppRead - read data or addr in parrallel EPP mode
|
||||
* @fd: file descriptor of device
|
||||
* @oBuffer: pointer to read buffer
|
||||
* @ioLength: read length
|
||||
* @PipeMode: 0->read pipe0 data, 1->read pipe1 addr
|
||||
*
|
||||
* The function return read 0 if successful, others if fail.
|
||||
*/
|
||||
extern int CH34xEppRead(int fd, uint8_t *oBuffer, uint32_t ioLength, uint8_t PipeMode);
|
||||
|
||||
/**
|
||||
* CH34xEppWrite - write data or addr in parrallel EPP mode
|
||||
* @fd: file descriptor of device
|
||||
* @iBuffer: pointer to write buffer
|
||||
* @ioLength: write length
|
||||
* @PipeMode: 0->write pipe0 data, 1->write pipe1 addr
|
||||
*
|
||||
* The function return 0 if successful, others if fail.
|
||||
*/
|
||||
extern int CH34xEppWrite(int fd, uint8_t *iBuffer, uint32_t ioLength, uint8_t PipeMode);
|
||||
|
||||
/**
|
||||
* CH34xEppWriteData - write data in parrallel EPP mode
|
||||
* @fd: file descriptor of device
|
||||
* @iBuffer: pointer to write buffer
|
||||
* @ioLength: write length
|
||||
*
|
||||
* The function return 0 if successful, others if fail.
|
||||
*/
|
||||
extern int CH34xEppWriteData(int fd, uint8_t *iBuffer, uint32_t ioLength);
|
||||
|
||||
/**
|
||||
* CH34xEppReadData - read data in parrallel EPP mode
|
||||
* @fd: file descriptor of device
|
||||
* @oBuffer: pointer to read buffer
|
||||
* @ioLength: read length
|
||||
*
|
||||
* The function return 0 if successful, others if fail.
|
||||
*/
|
||||
extern int CH34xEppReadData(int fd, uint8_t *oBuffer, uint32_t ioLength);
|
||||
|
||||
/**
|
||||
* CH34xEppWriteAddr - write addr in parrallel EPP mode
|
||||
* @fd: file descriptor of device
|
||||
* @iBuffer: pointer to write buffer
|
||||
* @ioLength: write length
|
||||
*
|
||||
* The function return 0 if successful, others if fail.
|
||||
*/
|
||||
extern int CH34xEppWriteAddr(int fd, uint8_t *iBuffer, uint32_t ioLength);
|
||||
|
||||
/**
|
||||
* CH34xEppReadAddr - read addr in parrallel EPP mode
|
||||
* @fd: file descriptor of device
|
||||
* @oBuffer: pointer to read buffer
|
||||
* @ioLength: read length
|
||||
*
|
||||
* The function return 0 if successful, others if fail.
|
||||
*/
|
||||
extern int CH34xEppReadAddr(int fd, uint8_t *oBuffer, uint32_t ioLength);
|
||||
|
||||
/**
|
||||
* CH34xEppSetAddr - set addr in parrallel EPP mode
|
||||
* @fd: file descriptor of device
|
||||
* @iAddr: addr data
|
||||
*
|
||||
* The function return 0 if successful, others if fail.
|
||||
*/
|
||||
extern int CH34xEppSetAddr(int fd, uint32_t iAddr);
|
||||
|
||||
/**
|
||||
* CH34xSetTimeout - set USB data read and write timeout
|
||||
* @fd: file descriptor of device
|
||||
* @iWriteTimeout: data download timeout in milliseconds
|
||||
* @iReadTimeout: data upload timeout in milliseconds
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xSetTimeout(int fd, uint32_t iWriteTimeout, uint32_t iReadTimeout);
|
||||
|
||||
/**
|
||||
* CH34xInitMEM - initial chip in parrallel MEM mode
|
||||
* @fd: file descriptor of device
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xInitMEM(int fd);
|
||||
|
||||
/**
|
||||
* CH34xMEMReadData - read data in parrallel MEM mode
|
||||
* @fd: file descriptor of device
|
||||
* @oBuffer: pointer to read buffer
|
||||
* @ioLength: read length
|
||||
* @PipeMode: 0->read pipe0, 1->read pipe1
|
||||
*
|
||||
* The function return 0 if successful, others if fail.
|
||||
*/
|
||||
extern int CH34xMEMReadData(int fd, uint8_t *oBuffer, uint32_t ioLength, uint8_t PipeMode);
|
||||
|
||||
/**
|
||||
* CH34xMEMWriteData - write data in parrallel MEM mode
|
||||
* @fd: file descriptor of device
|
||||
* @iBuffer: pointer to write buffer
|
||||
* @ioLength: write length
|
||||
* @PipeMode: 0->write pipe0, 1->write pipe1
|
||||
*
|
||||
* The function return 0 if successful, others if fail.
|
||||
*/
|
||||
extern int CH34xMEMWriteData(int fd, uint8_t *iBuffer, uint32_t ioLength, uint32_t PipeMode);
|
||||
|
||||
/**
|
||||
* CH34xSetStream - configure spi/i2c interface in stream mode
|
||||
* @fd: file descriptor of device
|
||||
* @Mode: stream mode
|
||||
* ->bit0~1: set I2C SCL rate
|
||||
* --> 00 : low rate 20KHz
|
||||
* --> 01 : standard rate 100KHz
|
||||
* --> 10 : fast rate 400KHz
|
||||
* --> 11 : high rate 750KHz
|
||||
* ->bit2: set spi mode
|
||||
* --> 0 : one in one out(D3: clk, D5: out, D7: in)
|
||||
* --> 1 : two in two out(D3 :clk, D4/D5: out, D6/D7 :in)
|
||||
* ->bit7: set spi data mode
|
||||
* --> 0 : low bit first
|
||||
* --> 1 : high bit first
|
||||
* other bits must keep 0
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xSetStream(int fd, uint8_t Mode);
|
||||
|
||||
/**
|
||||
* CH34xSetDelaymS - delay operation
|
||||
* @fd: file descriptor of device
|
||||
* @iDelay: delay time in millseconds
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xSetDelaymS(int fd, uint32_t iDelay);
|
||||
|
||||
/**
|
||||
* CH34xReadData - read for spi/i2c operation
|
||||
* @fd: file descriptor of device
|
||||
* @oReadBuffer: pointer to read buffer
|
||||
* @oReadLength: pointer to read length
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xReadData(int fd, void *oReadBuffer, uint32_t *oReadLength);
|
||||
|
||||
/**
|
||||
* CH34xWriteData - write data for spi/i2c operation
|
||||
* @fd: file descriptor of device
|
||||
* @iWriteBuffer: pointer to write buffer
|
||||
* @iWriteLength: pointer to write length
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xWriteData(int fd, void *iWriteBuffer, uint32_t *iWriteLength);
|
||||
|
||||
/**
|
||||
* CH34xWriteRead - write data then read for spi/i2c operation
|
||||
* @fd: file descriptor of device
|
||||
* @iWriteLength: write length
|
||||
* @iWriteBuffer: pointer to write buffer
|
||||
* @iReadStep: per read length
|
||||
* @iReadTimes: read times
|
||||
* @oReadLength: pointer to read length
|
||||
* @oReadBuffer: pointer to read buffer
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xWriteRead(int fd, uint32_t iWriteLength, void *iWriteBuffer, uint32_t iReadStep, uint32_t iReadTimes,
|
||||
uint32_t *oReadLength, void *oReadBuffer);
|
||||
|
||||
/**
|
||||
* CH34xGetInput - get io status of CH341
|
||||
* @fd: file descriptor of device
|
||||
* @iStatus: pointer to io status
|
||||
* Note:
|
||||
* Bit7~Bit0<==>D7-D0, Bit8<==>ERR#, Bit9<==>PEMP, Bit10<==>INT#
|
||||
* Bit11<==>SLCT, Bit13<==>WAIT#, Bit14<==>DATAS#/READ#, Bit15<==>ADDRS#/ADDR/ALE, Bit23<==>SDA
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xGetInput(int fd, uint32_t *iStatus);
|
||||
|
||||
/**
|
||||
* CH34xSetOutput - set direction and output data of CH341
|
||||
* @fd: file descriptor of device
|
||||
* @iEnable: set direction and data enable
|
||||
* --> Bit16 High : effect on Bit15~8 of iSetDataOut
|
||||
* --> Bit17 High : effect on Bit15~8 of iSetDirOut
|
||||
* --> Bit18 High : effect on Bit7~0 of iSetDataOut
|
||||
* --> Bit19 High : effect on Bit7~0 of iSetDirOut
|
||||
* --> Bit20 High : effect on Bit23~16 of iSetDataOut
|
||||
* @iSetDirOut: set io direction
|
||||
* -- > Bit High : Output
|
||||
* -- > Bit Low : Input
|
||||
* @iSetDataOut: set io data
|
||||
* Output:
|
||||
* -- > Bit High : High level
|
||||
* -- > Bit Low : Low level
|
||||
* Note:
|
||||
* Bit7~Bit0<==>D7-D0, Bit8<==>ERR#, Bit9<==>PEMP, Bit10<==>INT#
|
||||
* Bit11<==>SLCT, Bit13<==>WAIT#, Bit14<==>DATAS#/READ#, Bit15<==>ADDRS#/ADDR/ALE
|
||||
*
|
||||
* The pins below can only be used in output mode:
|
||||
* Bit16<==>RESET#, Bit17<==>WRITE#, Bit18<==>SCL, Bit29<==>SDA
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xSetOutput(int fd, uint32_t iEnable, uint32_t iSetDirOut, uint32_t iSetDataOut);
|
||||
|
||||
/**
|
||||
* CH34xSet_D5_D0 - set direction and output data of D5-D0 on CH341
|
||||
* @fd: file descriptor of device
|
||||
* @iSetDirOut: set io direction
|
||||
* -- > Bit High : Output
|
||||
* -- > Bit Low : Input
|
||||
* @iSetDataOut: set io data
|
||||
* Output:
|
||||
* -- > Bit High : High level
|
||||
* -- > Bit Low : Low level
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xSet_D5_D0(int fd, uint8_t iSetDirOut, uint8_t iSetDataOut);
|
||||
|
||||
/**
|
||||
* CH34xStreamI2C - write/read i2c in stream mode
|
||||
* @fd: file descriptor of device
|
||||
* @iWriteLength: write length
|
||||
* @iWriteBuffer: pointer to write buffer
|
||||
* @iReadLength: read length
|
||||
* @oReadBuffer: pointer to read buffer
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xStreamI2C(int fd, uint32_t iWriteLength, void *iWriteBuffer, uint32_t iReadLength, void *oReadBuffer);
|
||||
|
||||
/**
|
||||
* CH34xReadEEPROM - read data from eeprom
|
||||
* @fd: file descriptor of device
|
||||
* @iEepromID: eeprom type
|
||||
* @iAddr: address of eeprom
|
||||
* @iLength: read length
|
||||
* @oBuffer: pointer to read buffer
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xReadEEPROM(int fd, EEPROM_TYPE iEepromID, uint32_t iAddr, uint32_t iLength, uint8_t *oBuffer);
|
||||
|
||||
/**
|
||||
* CH34xWriteEEPROM - write data to eeprom
|
||||
* @fd: file descriptor of device
|
||||
* @iEepromID: eeprom type
|
||||
* @iAddr: address of eeprom
|
||||
* @iLength: write length
|
||||
* @iBuffer: pointer to write buffer
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xWriteEEPROM(int fd, EEPROM_TYPE iEepromID, uint32_t iAddr, uint32_t iLength, uint8_t *iBuffer);
|
||||
|
||||
/**
|
||||
* CH34xStreamSPIx - write/read spi in stream mode
|
||||
* @fd: file descriptor of device
|
||||
* @iChipSelect: cs enable
|
||||
* @iLength: the length of data
|
||||
* @ioBuffer: one in one out buffer
|
||||
* @ioBuffer2: two in two out buffer
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xStreamSPIx(int fd, uint32_t iChipSelect, uint32_t iLength, void *ioBuffer, void *ioBuffer2);
|
||||
|
||||
/**
|
||||
* CH34xStreamSPI4 - write/read spi in 4-line stream mode
|
||||
* @fd: file descriptor of device
|
||||
* @iChipSelect: cs enable
|
||||
* @iLength: the length of data
|
||||
* @ioBuffer: one in one out buffer
|
||||
*
|
||||
* The function return true if successful, false if fail.
|
||||
*/
|
||||
extern bool CH34xStreamSPI4(int fd, uint32_t iChipSelect, uint32_t iLength, void *ioBuffer);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user