Free&Easy Life https://passport2.21ic.com/?813973 [收藏] [复制] [RSS] USB、单片机、嵌入式、机器人... ...

日志

UI051免驱USB转SPI/I2C/TTL;10路5/3.3V数字IO;1路时钟输出

已有 1889 次阅读2014-3-21 14:02 |个人分类:UI接口芯片产品|系统分类:单片机| USB转SPI, USB转I2C

UI051是免驱动的USB转SPI/I2C/数字IO芯片,插上电脑就可以使用,不需要装任何驱动,简单易用。UI051提供主SPI(4种MODE全支持)/主I2C接口/10个支持5V/3.3V双向IO,同时还提供一路时钟输出,可以给外部MCU提供时钟。通过PC上的工具可以很方便的控制这些IO

UI051适用于各类开发板、USB继电器、USB无线模块等产品。

提供VB模块测试测试例程源码。支持32位/64位 windows2000/xp/vista/win7/win8

更详细的资料,请到这里下载产品资料和工具软件 http://pan.baidu.com/s/1Gfwbq

l 全速USB HID接口,无需安装驱动、应用软件,即插即用。

l 支持32位/64位 windows2000/xp/vista/win7/win8

l IOSPII2C接口支持5V3.3V

l 提供主SPI和主I2C接口

    ü SPI支持所有4SPI MODEMODE0~3。读写速度500Kbit/s

    ü I2C内部集成上拉14KΩ电阻,无需外部加上拉。读写速度400Kbit/s和

160Kbit/s可选,上电默认为160Kbit/s

l 提供10路独立双向IO,可配置为:

    ü 输入(无上拉/下拉),或者

    ü 推挽(PushPull)输出,或者

    ü 开漏(OD+14kΩ上拉输出

注:上电复位后所有IO都是输入状态。

l 提供124MHz时钟输出,可以供外部MCU使用,减少晶体,降低成本。

    ü 时钟输出的电平由IO_VDD决定

    ü 可以定制输出16MHz或者12MHz。如需要,请旺旺联系掌柜

l 简单的外围电路设计

    ü 不需要外围晶体、复位电路,直接连接上就可使用。

l 提供简单易用的DLL接口、静态链接库和应用程序例程


/***********设备操作函数;以下函数中的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
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: 命令或寄存器地址, 只有当CmdRegAddrExistFlag!=0时有效;
//CmdRegAddrByteCnt: CmdRegAddr的长度(0~4)(单位:字节)  0: 不存在CmdRegAddr
//DataLength:期望读的数据长度(1~136);
//DataBuf:返回数据的数据buf
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);

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)