基于I2C总线的USB接口设计
相连时,MMU和集成RAM被用来处理这种极大的速率差异。这就允许 微控制器以他自己的速率通过I2C接口对USB信息包进行读写。
I2C控制接口这个模块执行必要的I2C接口协议。一个I2C控制器执行简单的编码。一个中断信号,当PDIUSBD11需引起注意时,用来向微控制器发出 警告。作为一个控制I2C的器件,PDIUSBD11的时钟输入SCL由微控制器控制。I2C接口的 传输速率能够达到1 Mb/s。
SoftConnectTM与USB的连接是通过1.5 kΩ上拉电阻将D+(用于 高速USB器件)置为高实现的。1.5 kΩ上拉电阻集成在PDIUSBD11片内,默认状态下不与VC C相连。连接的建立通过外部/系统微控制器发送命令来实现。这就允许系统微控制器在决定 与USB建立连接之前完成初始化时序。USB总线连接可以重新初始化而不需要拔出电缆。
3.3 PDIUSBD11芯片的典型应用
PDIUSBD11芯片的应用示意图如图2所示。
![](../img/eep/emb/emb-67151dlcn2vtpzmf.jpg)
其外围电路典型连接如图3所示。
VBUS是USB的总线电源感知引脚,通过他USB接口控制芯片判断USB设备是否接到了P C机上。外部复位引脚Reset上电复位,但PDIUSBD11芯片内部提供复位电路,因此可以将他 接到3.3V上,屏蔽其外部复位功能。Suspend引脚,他的作用是当USB设备进入挂起模式时,输出 高电平提醒主机,主机可通过拉低该引脚的电压来唤醒USB设备,使用中也可以直接将该引 脚接地,来屏蔽USB设备的挂起功能。INT_N引脚与单片机的连接是必不可少的,当 主机需 要与USB设备通信时,该引脚变成低电平,通知USB设备进入中断服务程序,中断请求结束后 他又重新变回高电平。因此他通过上拉电阻接正电源,当空闲时处于高电平状态。
4 固件程序设计
单片机与PDIUSBD11的通信主要是靠单片机给PDIUSBD11发命令和数据来实现的。 PDI USBD11的命令字分为3种:初始化命令字、数据流命令字 和通用命令字。PDIUSBD11给出了各种命 令的代码和地址。单片机先给PDIUSBD11的命令地址发命令,根据不同命令的要求再 发送或读出不同的数据。
当单片机使用专门的I2C接口与PDIUSBD11芯片连接时,可以直接进行输入、输出通信。但 如果只使用2个普通的I/O口连接时,需要用软件模拟I2C接口与PDIUSBD11芯片进行通信 ,可将模拟I2C传输部分编成子程序,使用时直接调用即可。具体编程方法可参照I2C总 线规范。
USB单片机控制程序通常由3部分组成:
(1) 初始化单片机和所有的外围电路(包括PDIUSBD11芯片);
(2) 主循环部分,其任务是可以中断的;
(3) 中断服务程序,其任务是对时间敏感的,必须马上执行。
4.1 初始化程序
在编写初始化程序时需要注意,由于PDIUSBD11芯片采用Philips的SoftConnectTM技术设计。与USB的连接通过1.5 kΩ上拉电阻将D+(用于高速USB器件)置为高实现。1.5kΩ上拉电阻集成在PDIUSBD11片内,默认状态下不与VCC相连。连接的建立通过 单片机发送命令来实现。这就允许系统微控制器在决定与建立USB连接之前完成初始化时序 。USB总线连接可以重新初始化而不需要拔出电缆。所以在固件程序中需要编写芯片初始化 程序,以确保设备能顺利进行USB连接。初始化程序范例如下:
![](../img/eep/emb/emb-67152dcnflpdnkqk.jpg)
按不同的应用方式(如远程唤醒、挂起功能等),可在Set Mode的第一个字为PDIUS BD11芯片设置不同的模式。
4.2 中断服务程序
根据USB协议,任何传输都是由主机(host)开始的,单片机作他的前台工作,等待中断。主机首先要发令牌包给USB设备(这里是PDIUSBD11),PDIUSBD11接收到令牌包后就给单片 机发中断,单片机检测到INT_N引脚变成低电平后进入中断服务程序,首先读PDIUSBD11的中断寄存器,判断USB令牌包的类型,然后执行相应的操作。因此,USB单片机程序主要就 是中断 服务程序的编写。中断服务程序流程图如图4所示。PDIUSBD11芯片可支持4个端点(EP0~3),其中端点0用来对应缺省控制通道并初始化和操纵配置设备,同时提供设备配置信息的 读取和支持控制传输。端点1~3则用于支持块传输和中断传输等。
![](../img/eep/emb/emb-67153wnqmxhlfmzn.jpg)
具体的固件程序内容可参考文献[4],PDIUSBD12芯片是Philips公司的一款带并口的USB接口芯片,目前应用较广。
4.3 测试结果
用PDIUSBD11芯片开发的USB接口,数据的传输速率是由单片机的I2C接口速率决定的。经测试其传输速率可达500 kb/s,远高于普通串口的传输速率,保持了USB接口的高速性,能满足一般的非大容量存储设备的需要。
5 结语
使用单片机外加USB接口芯片开发USB接口,适用于为现有产品开发USB接口,能尽量避免对 原有电路及程序的修改,降低了开发成本和风险。在对速度要求不太高的情况下,可采用Ph ilips公司的USB接口芯片PDIUSBD11,他特有的I2C接口设
I2C总线USB接 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)