alimama_pid="mm_10962200_964869_2078106";
alimama_titlecolor="0000FF";
alimama_descolor ="000000";
alimama_bgcolor="FFFFFF";
alimama_bordercolor="E6E6E6";
alimama_linkcolor="008000";
alimama_bottomcolor="FFFFFF";
alimama_anglesize="0";
alimama_bgpic="0";
alimama_icon="0";
alimama_sizecode="41";
alimama_width=120;
alimama_height=60;
alimama_type=2;
UD11是我见过最简单好用的USB芯片,不用编程不用了解USB就能上手
下面是一个中文简要说明及两个实现方法,方法一使用最方便最简单,充份体现了UD11的方便易用性。方法二的实现复杂一点,可以全面控制UD11发送接收重启等功能。PC上位机可以通过DLL库调Open\Write\Reard这三个函数实现USB的打开和收发数据。
一、I2C地址
所有命令、数据都通过I2C传送,UD11的地址由ADDRESS0-6来定义,悬空或接高电平=1,接地室=0
二、配置
配置并不是必须做的工作,而是在有特殊性要求时或要对产品做差异化区分时,选择性或全部重配置。
可重配置产品ID、厂商ID、产品说明字符、设备报告定义。
还可以配配置USB与PC相连的EP1、EP2开启、关闭、数据包大小、EP1报告间隔时间定义。
三、USB控制
MCU通过I2C(或串口)向UD11发送USB OPEN命后,UD11会自动与HOST(USB HOST 如电脑USB端口等)连接,并且全自动处理来自HOST端的命令,无须MCU干预,不占用MCU资源。
如果不需要使用UD11,可以通过发送USB OFF、SELLP命令使其断开或进入休眠状态,进入休眠状态以节约电能。
注意USB OFF只是关闭与电脑的逻辑上的连接,但UD11本身还在运行,并且可以再通过USB OPEN打开,而进入了休眠状态,则要必须要通过重上电或将PINTA端口拉高使UD11重新回到运行状状态。
四、读取端点端点信息
发送40+X命令可以取得此时的端点BUFFER状态,其中X为端点选择值。
X=8代表端点1发送缓存器有多少个数据没有发送
X=1代表端点2发送缓存器有多少个数据没有发送
X=2代表端点2接收缓存器有多少个数据没被读出
如果要读多个端点,X等于与端点对应值的和。UD11之依次返回端点数值的值。
五、读写端点
发送80+LEN可对EP1端点进行写LEN+1个数据到EP1的内部缓存器操作,写入后,UD11会自动将数据发送给PC。
发送C0+LEN可对EP2端点进行读写,读写数据的个数为LEN+1,读出、写入取决于I2CI2C总线状态,并与I2C总线状态一致。
六、应用例子
中断法,此方法应用最方便。
1、发送USB OPEN命令到UD11,以便开启UD11与HOST的连接。(配置使用默认值,数据发送或接收中断PINTA与MCU相应外部中断引脚相连)
2、PINA中断时判断PINB电平,PINB=0向端点EP2发送缓存器写入将要发送到PC的数据,PINBPINB=0时从端点EP2发送缓存器读出PC
发来的数据
读端点状态法
1、发送USB OPEN命令到UD11,以便开启UD11与HOST的连接。(所有配置使用默认值)
2、读端点EP2状态
3、跟据读出的状态,写入将要发送到PC的数据,读出从PC发来的数据。
4、重复2和3操作