/***********設備操作函數;以下函數中的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); |