/***********設備操作函數;以下函數中的USB2IO_hdl是指USB2IO_Open返回的句柄*******/
//打開端口獲取句柄; //Nbr是端口號,從1開始,依次為2/3/4...,最大126
HANDLE WINAPI USB2IO_Open(int Nbr);
//關閉端口;在程序退出前再關閉端口; 返回0: 成功;!0: 失敗
int WINAPI USB2IO_Close(HANDLE USB2IO_hdl);
//獲取設備序列號
// 參數:
// dwp_LenResponse: 設備序列號的長度,取值範圍0~256。(單位: 字節)
// ucp_Response: 設備序列號buf(buf由調用該API的應用程序分配)
// 返回0: 成功;!0: 失敗
int WINAPI USB2IO_GetDevSn(HANDLE USB2IO_hdl, DWORD *dwp_LenResponse, unsigned char *ucp_Response);
/***********IO操作函數;以下函數中的USB2IO_hdl是指USB2IO_Open返回的句柄*******/
/** 以下所有接口函數 **/
/** IoNbr: IO口(1~10) **/
/** 返回值0: 成功;!0: 失敗 **/
//設置IO輸出方式:IoCfg:0=輸入; IoCfg:2=OD+上拉, 3=PushPull推挽輸出;
int WINAPI USB2IO_SetIoCfg(HANDLE USB2IO_hdl, int IoNbr, int IoCfg);
//設置IO輸出值: IoOut:1=輸出高, 0=輸出低
int WINAPI USB2IO_SetIoOut(HANDLE USB2IO_hdl, int IoNbr, int IoOut);
//讀取IO輸出配置, 讀取值存放在IoCfg中
int WINAPI USB2IO_RdIoCfg(HANDLE USB2IO_hdl, int IoNbr, int *IoCfg);
//讀取IO輸出值(這裡讀取到的是上位機用USB2IO_SetIoOut的設置值), 讀取值存放在IoOut中
int WINAPI USB2IO_RdIoOut(HANDLE USB2IO_hdl, int IoNbr, int *IoOut);
//讀取IO引腳值(這裡讀取到的是實際引腳的電平值), 讀取值存放在PinValue中
//注意:IO輸出值是設置IO輸出寄存器;IO引腳值是芯片引腳上的實際電平值。
// 兩者一般情況下是相等的,但如果該IO受到外圍MCU或其他外設影響,兩者有可能不相等,此時需要仔細查看外圍電路是否有問題
int WINAPI USB2IO_RdPin(HANDLE USB2IO_hdl, int IoNbr, int *PinValue);
//讀取ClkOut輸出: ClkOutCfg: 1=輸出Clk, 0=關閉Clk
int WINAPI USB2IO_SetClkOut(HANDLE USB2IO_hdl, int ClkOutCfg);
//讀取ClkOut的輸出配置, 讀取值存放在ClkOutCfg中
int WINAPI USB2IO_RdClkOutCfg(HANDLE USB2IO_hdl, int *ClkOutCfg);
/***********SPI操作函數;以下函數中的USB2IO_hdl是指USB2IO_Open返回的句柄******/
/** 以下所有接口函數 **/
/** 返回值0: 成功;!0: 失敗 **/
/*********標準的SPI MODE 定義如下********************************** **********/
/** MODE0 CPOL=0 CPHA=0 SPI_CLK空閒時是低電平; 上升沿採樣 **/
/** MODE1 CPOL=0 CPHA=1 SPI_CLK空閒時是低電平; 下降沿採樣 **/
/** MODE2 CPOL=1 CPHA=0 SPI_CLK空閒時是高電平; 下降沿採樣 **/
/** MODE3 CPOL=1 CPHA=1 SPI_CLK空閒時是高電平; 上升沿採樣 **/
/************************************************* ***************************/
//使能SPI接口,SPI接口的相關IO配置將自動改變
int WINAPI USB2IO_EnableSpi(HANDLE USB2IO_hdl);
//SPI寫: DataLength:數據長度(1~136字節); DataBuf:數據buf
int WINAPI USB2IO_SpiWrite(HANDLE USB2IO_hdl, int DataLength, char *DataBuf);
//SPI讀: DataLength:期望讀的數據長度(1~136字節); ; DataBuf:數據buf(大小至少為256字節)
int WINAPI USB2IO_SpiRead(HANDLE USB2IO_hdl, int DataLength, char *DataBuf);
//設置SPI MODE: Mode0~3
int WINAPI USB2IO_SetSpiMode(HANDLE USB2IO_hdl, int SpiMode);
//讀取SPI MODE: Mode0~3
int WINAPI USB2IO_GetSpiMode(HANDLE USB2IO_hdl, int *SpiMode);
/***********I2C操作函數;以下函數中的USB2IO_hdl是指USB2IO_Open返回的句柄******/
/** 以下所有接口函數 **/
/** 返回值0: 成功;!0: 失敗 **/
//使能I2C接口,I2C接口的相關IO配置將自動改變
int WINAPI USB2IO_EnableI2c(HANDLE USB2IO_hdl);
//I2C寫:
//I2cAddr:I2C設備地址;
//CmdRegAddr: 命令或寄存器地址, 只有當CmdRegAddrExistFlag!=0時有效;
//CmdRegAddrByteCnt: CmdRegAddr的長度(0~4)(單位:字節) 0: 不存在CmdRegAddr
//DataLength:數據長度(1~136字節);
//DataBuf:數據buf
int WINAPI USB2IO_I2cWrite(HANDLE USB2IO_hdl, int I2cAddr, int CmdRegAddr, int CmdRegAddrByteCnt, int DataLength, char *DataBuf);
//I2C讀:
//I2cAddr:I2C設備地址;
//CmdRegAddr: 命令或寄存器地址, 只有當CmdRegAddrByteCnt!=0時有效;
//CmdRegAddrByteCnt: CmdRegAddr的長度(0~4)(單位:字節) 0: 不存在CmdRegAddr
//DataLength:期望讀的數據長度(1~136字節);
//DataBuf:返回數據的數據buf(大小至少為256字節)
int WINAPI USB2IO_I2cRead(HANDLE USB2IO_hdl, int I2cAddr, int CmdRegAddr, int CmdRegAddrByteCnt, int DataLength, char *DataBuf);
//設置I2C速度: 0:80k 1:160k
int WINAPI USB2IO_SetI2cSpeed(HANDLE USB2IO_hdl, int I2cSpeed);
//讀取I2C速度: 0:80k 1:160k
int WINAPI USB2IO_GetI2cSpeed(HANDLE USB2IO_hdl, int *I2cSpeed);
/***********UART操作函數;以下函數中的USB2IO_hdl是指USB2IO_Open返回的句柄******/
/** 以下所有接口函數 **/
/** 返回值0: 成功;!0: 失敗 **/
//使能UART接口,UART接口的相關IO配置將自動改變
int WINAPI USB2IO_EnableUart(HANDLE USB2IO_hdl);
//UART發送接收
//返回值:0:成功; 1:接收超時,接收到的實際數據長度為ActualReadDataLength; -1:失敗
//WrLen: 待發送的數據長度(取值範圍0~136;0表示無數據發送)
//WrBuf: 待發送的數據buf
//ExpRdLen: 期望接收的數據長度(取值範圍0~136;0表示無需接收數據)
//ActRdLen: 實際接收到的數據長度(取值範圍0~136;0表示無需接收數據)
//RdBuf: 返回數據的數據buf(大小至少為256字節)
//TimeOut:接收數據才需要;等待數據的時間(單位: s)。取值範圍: 3~600s(也就是10分鐘)
int WINAPI USB2IO_UartWrRd(HANDLE USB2IO_hdl, int WrLen, char *WrBuf, int ExpRdLen, int *ActRdLen, char *RdBuf, int TimeOut);
//設置波特率: UartBr=115200或9600
int WINAPI USB2IO_SetUartBr(HANDLE USB2IO_hdl, int UartBr);
//讀取波特率115200或9600
int WINAPI USB2IO_GetUartBr(HANDLE USB2IO_hdl, int *UartBr);
|