USB 接口器件ISP1581 的接口应用设计概要Word格式文档下载.docx
《USB 接口器件ISP1581 的接口应用设计概要Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《USB 接口器件ISP1581 的接口应用设计概要Word格式文档下载.docx(7页珍藏版)》请在冰豆网上搜索。
另一种是纯粹的USB接口芯片,仅处理USB通信。
前者由于开发时需要单独的开发系统,因此开发成本较高;
后者只是一个芯片与MCU接口,实现USB通信功能,因此成本较低、可靠性较高。
本文主要介绍Philips公司的ISP1581器件的使用方法,它属于后者。
1硬件设计
1.1ISP1581芯片特点
ISP1581是一个高速USB器件控制器。
它实现了USB2.0/1.1物理层和数据协议
层的任务,并且实现了
连同端点EP0(设置用于
访问设置缓冲器在内的
16个USB端点的共同协
作;
用于基于微控制器
的系统,与微控制器/微
处理器的通信是通过一
个高速的通用并行接口
实现的,接口速度可达
12.5M字节/s或12.5
M字/s;
支持DMA传输,
可很好地实现与大容量
存储设备的接口;
通过ATA/ATAPI接口,可以直接与ATA/ATAPI设备相连。
ISP1581能适应大多数设备类规范的设计,非常适合做很多外围设备,如打印机、扫描仪、外部大容量存储器和数码相机等的外部接口。
(注:
ATA/ATAPI,AdvancedTechnologyAttachment/AdvancedTechnologyAttachmentPeripheralInterface。
中文名称为高级技术附加装置/高级技术附加装置外围接口。
ATA是一种硬盘接口标准,ATA标准的接口类型其实就是IDE接口类型。
1.2ISP1581内部模块功能描述
ISP1581内集成了多个模块,各自完成不同功能,如图1所示。
①USB2.0收发器。
模拟收发器通过集成的终端电阻直接与USB电缆相连。
②Philips串行接口引擎(SIE,SerialInterfaceEngine。
完成所有USB协议层的功能,主要完成以下的功能:
同步方式的识别、并行/串行的转换,位填充/解除填充、CRC校验/产生、包标识(PID校验/产生、地址识别和握手评估/产生。
考虑到速度,它是全硬件的,不需要
DREQ,DACK
CS0,CS1,
[16:
0]
DS/WR
图1 ISP1581内部结构方框图
固件介入。
③存储器管理单元(MMU和集成RAM。
MMU和集成RAM实现了USB总线和微控制器管理器或DMA管理器之间的速度转换。
④微控制器/处理器接口和微控制器/处理器的管理器。
可以直接与大部分微控制器相连。
⑤DMA接口和DMA管理器。
DMA管理器接收到DMA命令后,可直接把数据从内部RAM传送到外部DMA设备或从外部DMA设备传送给内部RAM。
2硬件连接
ISP1581有一个快速通用接口,利用它可以实现与大
部分类型的微控制器/处理器的通信。
上电时,由引脚BUS_CONF、MODE1和MODE0共同设置。
由于MMC2107的外部地址、数据总线是分开的,因此在本开发平台上ISP1581只能工作在通用处理器工作模式下,设置方式如表1所列。
ISP1581提供微控制器接口与微控制器进行数据传输,也支持DMA传输。
在微控制器速度较高时,两者的读写访问速度均可达12.5Mb/s,采用DMA方式会增加电路设计的复杂度。
经过综合比较,采取微控制器接口方式。
USB模块硬件连接原理如图2所示。
注:
①ISP1581提供两种复位方式:
a.ISP1581集成有上电复位电路(POR,RESET引脚接电源,实现上电复位功能。
b.RESET引脚接MMC2107的一个数字I/O引脚,将该引脚置低800μs后置高,实现复位。
②ISP1581的供电电压为3.3V或5.0V,I/O引脚最大能承受5.0V的电压。
根据I/O口的电压,从3.3V和5.0V中选择一个作为供电电压。
3ISP1581固件(FIREWARE程序设计
由于所有的通信都是由主机发起,设备只能响应来
自主机的命令。
在这种结构下,ISP1581的固件采取中断驱动。
这样一方面保证了快速的数据传输和较好的软
件结构,另一方面简化了编程和测试。
固件程序由5部分组成,如图3所示。
(1主循环流程
上电后,初始化MMC2107和ISP1581。
然后,主循环程序轮询检查事件标志,进入相应的子程序进行进一步的处理。
图4是主循环的流程。
表1 设置工作方式
这里使用16位总线,AD[0]必须与ISP1581的地端相连。
图3 固件结构和数据流向
图4 USB主循环程序
图2 MMC2107与ISP1581硬件连接原理
(2中断服务程序(ISR流程
图5所示的中断服务流程,用来处理由ISP1581产生的中断。
通过访问ISP1581的中断寄存器,建立正确的事件标志,以通知主循环程序进行处理。
(3USB标准请求处理
进行应用通信以前,主机必须枚举设备。
该过程是通过给端点0发送包含标准设备请求(CHAP_9的控制传
输实现的。
USB标准请求流程(见图6译码设备请求类型,转到相应的处理子流程。
枚举过程如下:
①主机使用默认地址(地址0读取设备描述符GetDeviceDescriptor;
②SetAddress;
③连续3次GetDeviceDescriptor,读取全部设备描述符;
④GetConfigDescriptor;
⑤GetStringDescriptor(可能没有;
⑥读取全部ConfigDescriptor后,主机将找到新设备,提示安装驱动程序。
⑦在设备能通信前,主机给出SetConfiguration请求,设备收到后调整有关信息,使设备能被客户软件利用。
(4厂商请求处理(VENDOR
厂商请求和USB标准请求一样,都根据控制传输的内容进行相应处理。
本开发平台的固件程序中定义了两个厂商请求,分别为取得固件版本和将批量数据写入设备或从设备中读出数据。
取得固件版本流程如图7所示。
主机发送批量数据读写请求时,在控制传输的数据阶段,主机给出需要传输的数据字节数、数据传输方向、页索引和数据定位。
控制传输结束后,主机和设备就可以根据双
方约定,启动批量传输。
批量传输流程如图8所示。
4
调 试
4.1
调试步骤
USB的调试可分为以下几个步骤:
①若USB芯片正常工作,可实现软连接,将设备插
入主机后,主机上出现“未知设备类型”的USB设备;
②提供描述符,提供正确的VID和PID后,主机能够识别设备,但要求提供设备的驱动程序;
③安装驱动程序后,调试各端点,使其均可传输数据,用主机端的测试程序对其进行测试,验证硬件及固件的正确性。
中断服务程序
图5 中断服务程序流程
图6 USB标准设备请求流程
取得固件版本
图7 取得固件版本流程
图8 批量传送流程
4.2调试工具
因为每一次USB的传输过程,都有时效要求,等待时间过长,通信过程也就中止了,因此不适合用硬件仿真器来设断点调试。
可采用串口辅助调试过程,即在固件代码中加入类似于Printf的语句,向串口输出一些信息。
借此,可以知道程序是否运行到此处,以及运行到此处时相应的变量或寄存器值。
设备完成配置后,在BusHound中可看到该设备(busHound是一种应用软件。
选择该设备,就可以对主机与此设备间的通信数据进行分析和监视。
BusHound工作在主机端,串口工作在微控制器端。
将串口调试和BusHound两种手段配合使用,可以使USB通讯过程的调试更加容易。
在调试USB设备时,还可使用UsbView程序。
在该程序中可以查看设备描述符、配置描述符和端点描述符是否正确。
(收稿日期:
2004-02-24