?? ch341dll.h
字號:
PVOID oReadBuffer ); // 指向一個足夠大的緩沖區,用于保存讀取的數據
BOOL WINAPI CH341SetStream( // 設置串口流模式
ULONG iIndex, // 指定CH341設備序號
ULONG iMode ); // 指定模式,見下行
// 位1-位0: I2C接口速度/SCL頻率, 00=低速/20KHz,01=標準/100KHz(默認值),10=快速/400KHz,11=高速/750KHz
// 位2: SPI的I/O數/IO引腳, 0=單入單出(D3時鐘/D5出/D7入)(默認值),1=雙入雙出(D3時鐘/D5出D4出/D7入D6入)
// 位7: SPI字節中的位順序, 0=低位在前, 1=高位在前
// 其它保留,必須為0
BOOL WINAPI CH341SetDelaymS( // 設置硬件異步延時,調用后很快返回,而在下一個流操作之前延時指定毫秒數
ULONG iIndex, // 指定CH341設備序號
ULONG iDelay ); // 指定延時的毫秒數
BOOL WINAPI CH341StreamI2C( // 處理I2C數據流,2線接口,時鐘線為SCL引腳,數據線為SDA引腳(準雙向I/O),速度約56K字節
ULONG iIndex, // 指定CH341設備序號
ULONG iWriteLength, // 準備寫出的數據字節數
PVOID iWriteBuffer, // 指向一個緩沖區,放置準備寫出的數據,首字節通常是I2C設備地址及讀寫方向位
ULONG iReadLength, // 準備讀取的數據字節數
PVOID oReadBuffer ); // 指向一個緩沖區,返回后是讀入的數據
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;
BOOL WINAPI CH341ReadEEPROM( // 從EEPROM中讀取數據塊,速度約56K字節
ULONG iIndex, // 指定CH341設備序號
EEPROM_TYPE iEepromID, // 指定EEPROM型號
ULONG iAddr, // 指定數據單元的地址
ULONG iLength, // 準備讀取的數據字節數
PUCHAR oBuffer ); // 指向一個緩沖區,返回后是讀入的數據
BOOL WINAPI CH341WriteEEPROM( // 向EEPROM中寫入數據塊
ULONG iIndex, // 指定CH341設備序號
EEPROM_TYPE iEepromID, // 指定EEPROM型號
ULONG iAddr, // 指定數據單元的地址
ULONG iLength, // 準備寫出的數據字節數
PUCHAR iBuffer ); // 指向一個緩沖區,放置準備寫出的數據
BOOL WINAPI CH341GetInput( // 通過CH341直接輸入數據和狀態,效率比CH341GetStatus更高
ULONG iIndex, // 指定CH341設備序號
PULONG iStatus ); // 指向一個雙字單元,用于保存狀態數據,參考下面的位說明
// 位7-位0對應CH341的D7-D0引腳
// 位8對應CH341的ERR#引腳, 位9對應CH341的PEMP引腳, 位10對應CH341的INT#引腳, 位11對應CH341的SLCT引腳, 位23對應CH341的SDA引腳
// 位13對應CH341的BUSY/WAIT#引腳, 位14對應CH341的AUTOFD#/DATAS#引腳,位15對應CH341的SLCTIN#/ADDRS#引腳
BOOL WINAPI CH341SetOutput( // 設置CH341的I/O方向,并通過CH341直接輸出數據
/* ***** 謹慎使用該API, 防止修改I/O方向使輸入引腳變為輸出引腳導致與其它輸出引腳之間短路而損壞芯片 ***** */
ULONG iIndex, // 指定CH341設備序號
ULONG iEnable, // 數據有效標志,參考下面的位說明
// 位0為1說明iSetDataOut的位15-位8有效,否則忽略
// 位1為1說明iSetDirOut的位15-位8有效,否則忽略
// 位2為1說明iSetDataOut的7-位0有效,否則忽略
// 位3為1說明iSetDirOut的位7-位0有效,否則忽略
// 位4為1說明iSetDataOut的位23-位16有效,否則忽略
ULONG iSetDirOut, // 設置I/O方向,某位清0則對應引腳為輸入,某位置1則對應引腳為輸出,并口方式下默認值為0x000FC000,參考下面的位說明
ULONG iSetDataOut ); // 輸出數據,如果I/O方向為輸出,那么某位清0時對應引腳輸出低電平,某位置1時對應引腳輸出高電平,參考下面的位說明
// 位7-位0對應CH341的D7-D0引腳
// 位8對應CH341的ERR#引腳, 位9對應CH341的PEMP引腳, 位10對應CH341的INT#引腳, 位11對應CH341的SLCT引腳
// 位13對應CH341的WAIT#引腳, 位14對應CH341的DATAS#/READ#引腳,位15對應CH341的ADDRS#/ADDR/ALE引腳
// 以下引腳只能輸出,不考慮I/O方向: 位16對應CH341的RESET#引腳, 位17對應CH341的WRITE#引腳, 位18對應CH341的SCL引腳, 位29對應CH341的SDA引腳
BOOL WINAPI CH341Set_D5_D0( // 設置CH341的D5-D0引腳的I/O方向,并通過CH341的D5-D0引腳直接輸出數據,效率比CH341SetOutput更高
/* ***** 謹慎使用該API, 防止修改I/O方向使輸入引腳變為輸出引腳導致與其它輸出引腳之間短路而損壞芯片 ***** */
ULONG iIndex, // 指定CH341設備序號
ULONG iSetDirOut, // 設置D5-D0各引腳的I/O方向,某位清0則對應引腳為輸入,某位置1則對應引腳為輸出,并口方式下默認值為0x00全部輸入
ULONG iSetDataOut ); // 設置D5-D0各引腳的輸出數據,如果I/O方向為輸出,那么某位清0時對應引腳輸出低電平,某位置1時對應引腳輸出高電平
// 以上數據的位5-位0分別對應CH341的D5-D0引腳
BOOL WINAPI CH341StreamSPI3( // 處理SPI數據流,3線接口,時鐘線為DCK2/SCL引腳,數據線為DIO/SDA引腳(準雙向I/O),片選線為D0/D1/D2,速度約51K字節
/* SPI時序: DCK2/SCL引腳為時鐘輸出, 默認為低電平, DIO/SDA引腳在時鐘上升沿之前輸出, DIO/SDA引腳在時鐘下降沿之后輸入 */
ULONG iIndex, // 指定CH341設備序號
ULONG iChipSelect, // 片選控制, 位7為0則忽略片選控制, 位7為1則參數有效: 位1位0為00/01/10分別選擇D0/D1/D2引腳作為低電平有效片選
ULONG iLength, // 準備傳輸的數據字節數
PVOID ioBuffer ); // 指向一個緩沖區,放置準備從DIO寫出的數據,返回后是從DIO讀入的數據
BOOL WINAPI CH341StreamSPI4( // 處理SPI數據流,4線接口,時鐘線為DCK/D3引腳,輸出數據線為DOUT/D5引腳,輸入數據線為DIN/D7引腳,片選線為D0/D1/D2,速度約68K字節
/* SPI時序: DCK/D3引腳為時鐘輸出, 默認為低電平, DOUT/D5引腳在時鐘上升沿之前輸出, DIN/D7引腳在時鐘下降沿之后輸入 */
ULONG iIndex, // 指定CH341設備序號
ULONG iChipSelect, // 片選控制, 位7為0則忽略片選控制, 位7為1則參數有效: 位1位0為00/01/10分別選擇D0/D1/D2引腳作為低電平有效片選
ULONG iLength, // 準備傳輸的數據字節數
PVOID ioBuffer ); // 指向一個緩沖區,放置準備從DOUT寫出的數據,返回后是從DIN讀入的數據
BOOL WINAPI CH341StreamSPI5( // 處理SPI數據流,5線接口,時鐘線為DCK/D3引腳,輸出數據線為DOUT/D5和DOUT2/D4引腳,輸入數據線為DIN/D7和DIN2/D6引腳,片選線為D0/D1/D2,速度約30K字節*2
/* SPI時序: DCK/D3引腳為時鐘輸出, 默認為低電平, DOUT/D5和DOUT2/D4引腳在時鐘上升沿之前輸出, DIN/D7和DIN2/D6引腳在時鐘下降沿之后輸入 */
ULONG iIndex, // 指定CH341設備序號
ULONG iChipSelect, // 片選控制, 位7為0則忽略片選控制, 位7為1則參數有效: 位1位0為00/01/10分別選擇D0/D1/D2引腳作為低電平有效片選
ULONG iLength, // 準備傳輸的數據字節數
PVOID ioBuffer, // 指向一個緩沖區,放置準備從DOUT寫出的數據,返回后是從DIN讀入的數據
PVOID ioBuffer2 ); // 指向第二個緩沖區,放置準備從DOUT2寫出的數據,返回后是從DIN2讀入的數據
BOOL WINAPI CH341BitStreamSPI( // 處理SPI位數據流,4線/5線接口,時鐘線為DCK/D3引腳,輸出數據線為DOUT/DOUT2引腳,輸入數據線為DIN/DIN2引腳,片選線為D0/D1/D2,速度約8K位*2
ULONG iIndex, // 指定CH341設備序號
ULONG iLength, // 準備傳輸的數據位數,一次最多896,建議不超過256
PVOID ioBuffer ); // 指向一個緩沖區,放置準備從DOUT/DOUT2/D2-D0寫出的數據,返回后是從DIN/DIN2讀入的數據
/* SPI時序: DCK/D3引腳為時鐘輸出, 默認為低電平, DOUT/D5和DOUT2/D4引腳在時鐘上升沿之前輸出, DIN/D7和DIN2/D6引腳在時鐘下降沿之后輸入 */
/* ioBuffer中的一個字節共8位分別對應D7-D0引腳, 位5輸出到DOUT, 位4輸出到DOUT2, 位2-位0輸出到D2-D0, 位7從DIN輸入, 位6從DIN2輸入, 位3數據忽略 */
/* 在調用該API之前,應該先調用CH341Set_D5_D0設置CH341的D5-D0引腳的I/O方向,并設置引腳的默認電平 */
BOOL WINAPI CH341SetBufUpload( // 設定內部緩沖上傳模式
ULONG iIndex, // 指定CH341設備序號,0對應第一個設備
ULONG iEnableOrClear ); // 為0則禁止內部緩沖上傳模式,使用直接上傳,非0則啟用內部緩沖上傳模式并清除緩沖區中的已有數據
// 如果啟用內部緩沖上傳模式,那么CH341驅動程序創建線程自動接收USB上傳數據到內部緩沖區,同時清除緩沖區中的已有數據,當應用程序調用CH341ReadData后將立即返回緩沖區中的已有數據
LONG WINAPI CH341QueryBufUpload( // 查詢內部上傳緩沖區中的已有數據包個數,成功返回數據包個數,出錯返回-1
ULONG iIndex ); // 指定CH341設備序號,0對應第一個設備
BOOL WINAPI CH341SetBufDownload( // 設定內部緩沖下傳模式
ULONG iIndex, // 指定CH341設備序號,0對應第一個設備
ULONG iEnableOrClear ); // 為0則禁止內部緩沖下傳模式,使用直接下傳,非0則啟用內部緩沖下傳模式并清除緩沖區中的已有數據
// 如果啟用內部緩沖下傳模式,那么當應用程序調用CH341WriteData后將僅僅是將USB下傳數據放到內部緩沖區并立即返回,而由CH341驅動程序創建的線程自動發送直到完畢
LONG WINAPI CH341QueryBufDownload( // 查詢內部下傳緩沖區中的剩余數據包個數(尚未發送),成功返回數據包個數,出錯返回-1
ULONG iIndex ); // 指定CH341設備序號,0對應第一個設備
BOOL WINAPI CH341ResetInter( // 復位中斷數據讀操作
ULONG iIndex ); // 指定CH341設備序號
BOOL WINAPI CH341ResetRead( // 復位數據塊讀操作
ULONG iIndex ); // 指定CH341設備序號
BOOL WINAPI CH341ResetWrite( // 復位數據塊寫操作
ULONG iIndex ); // 指定CH341設備序號
typedef VOID ( CALLBACK * mPCH341_NOTIFY_ROUTINE ) ( // 設備事件通知回調程序
ULONG iEventStatus ); // 設備事件和當前狀態(在下行定義): 0=設備拔出事件, 3=設備插入事件
#define CH341_DEVICE_ARRIVAL 3 // 設備插入事件,已經插入
#define CH341_DEVICE_REMOVE_PEND 1 // 設備將要拔出
#define CH341_DEVICE_REMOVE 0 // 設備拔出事件,已經拔出
BOOL WINAPI CH341SetDeviceNotify( // 設定設備事件通知程序
ULONG iIndex, // 指定CH341設備序號,0對應第一個設備
PCHAR iDeviceID, // 可選參數,指向字符串,指定被監控的設備的ID,字符串以\0終止
mPCH341_NOTIFY_ROUTINE iNotifyRoutine ); // 指定設備事件回調程序,為NULL則取消事件通知,否則在檢測到事件時調用該程序
BOOL WINAPI CH341SetupSerial( // 設定CH341的串口特性,該API只能用于工作于串口方式的CH341芯片
ULONG iIndex, // 指定CH341設備序號,0對應第一個設備
ULONG iParityMode, // 指定CH341串口的數據校驗模式: NOPARITY/ODDPARITY/EVENPARITY/MARKPARITY/SPACEPARITY
ULONG iBaudRate ); // 指定CH341串口的通訊波特率值,可以是50至3000000之間的任意值
/* 以下API可以用于工作于串口方式的CH341芯片,除此之外的API一般只能用于并口方式的CH341芯片
CH341OpenDevice
CH341CloseDevice
CH341SetupSerial
CH341ReadData
CH341WriteData
CH341SetBufUpload
CH341QueryBufUpload
CH341SetBufDownload
CH341QueryBufDownload
CH341SetDeviceNotify
CH341GetStatus
// 以上是主要API,以下是次要API
CH341GetVersion
CH341DriverCommand
CH341GetDrvVersion
CH341ResetDevice
CH341GetDeviceDescr
CH341GetConfigDescr
CH341SetIntRoutine
CH341ReadInter
CH341AbortInter
CH341AbortRead
CH341AbortWrite
CH341ReadI2C
CH341WriteI2C
CH341SetExclusive
CH341SetTimeout
CH341GetDeviceName
CH341GetVerIC
CH341FlushBuffer
CH341WriteRead
CH341ResetInter
CH341ResetRead
CH341ResetWrite
*/
#ifdef __cplusplus
}
#endif
#endif // _CH341_DLL_H
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -