基于ISP1161的USB HOST技术应用
发布时间:2008/5/27 0:00:00 访问次数:882
摘要:主要介绍如何利用芯片isp1161在嵌入式系统中实现usbhost功能;基于批量传输协议,讲述如何实现数据在usb存储设备上的存储和读写。
关键词:usb主机isp1161传输协议批量传输设备枚举fat16
本文以usbhost技术为核心,介绍usbhost技术在单片机上的实现。,重点介绍usbhost技术在嵌入式系统读写优盘上的应用。
1usbhost技术简介
usb的通信可以用图1表示。图1中,左半部分为usb主机端,可以看出,usb主机端由两部分构成,即软件体和硬件体。实际上是三个软件组件组成了usbhost解决方案,即usb客户驱动程序、usb驱动程序和usb主机控制器驱动程序。应用程序的事务处理是由usb客户驱动程序(设备驱动程序)启动时,客户驱动程序把usb设备当作一个可以被访问的端点集合,它可以被控制并与它的功能单元进行通信。usb系统软件包括usb驱动程序和usb主控制器驱动程序,usb驱动程序负责配置管理、用户管理、总线管理和数据传输管理;以及数据的位编码、封包、循环校验、发送、错误处理等。
2基于isp1161控制器usbhost的实现原理
usb控制器大致分为三类:第一类是支持1.0协议的,这类已经很少见了;第二类是支持1.1协议的控制器;第三类是支持2.0协议的控制器。根据不同场合,后两种应用比较广泛,2.0接口主要用在计算机上,依靠操作系统实现数据高速传输。支持1.1协议的芯片除了用于计算机上,还有少数是为嵌入式系统中实现usbhost而设计的。如cypress的sl811、philips的isp1160、isp1161等。
usb主机端的硬件部分是由处理器、usb-host控制器和根集线器组成,图2是由微控制器msp430f149和usb控制器isp1161实现usbhost的电路原理。图2分为4个部分:微处理器、usb控制器、电源管理模块和usb接口电路。从概念上还应有一个usb根集线器(usbhub),实际根集线器被集成在usbhost控制器中。
isp1161是philips设计的usb主机/设备控制器。内部有1个usb主机控制器和1个设备控制器,符合usb2.0协议,支持全速和低速传输。主机和设备控制器共享相同的接口总线,带有2个usb下行端口和1个usb上行端口。图2中使用接口1作为host下行端口。每个下行端口有各自的过流检测电路,图2中使用php109检测端口供电电流,高于500ma将停止对总线供电。
msp430和isp1161的数据传输可以通过pio(程控输入输出)方式或dma(直接存储器访问)方式进行传输,在isp1161进入工作状态前,要进行一系列初始化,包括检测器、复位控制器、初始化硬件配置、设置中断、设置buffer(缓冲区)大小等。使isp1161的主机控制器处于工作状态,真正用于发送到总线的数据被放置于isp1161内部的缓冲区内。
这时值得一提的是“传输描述符”这个概念,它是isp1161工作的核心概念。在缓冲区内放置的数据是以传输描述符为单位,传输描述符作用是描述了本次传输需要完成的任务。描述符分为描述符头和描述符负载数据。描述符头表征了这个描述符的传输类型、封包最大宽度、传输速度、传输对象、传输端点、负载数据的长度等。传输描述符的另一个作用体现在传输后。每次传输执行完毕后,传输描述符的内容会有相应的改变,体现在传输描述符头中,表征了本次传输的结果,包括传输了多少字节,传输中发生了什么错误等。
3usb主机端对设备的枚举
从usb设备插入接口开始到客户驱动程序能够使用该设备还有一段路径,这一段就被称作为设备的识别过程,又成为枚举过程。枚举过程是任何usb设备使用前必经的过程。usb主机端需要知道这是一个低速设备还是全速设备,需要知道这个设备具有的能力,以便载入相应的设备驱动程序,下面具体介绍一下实现步骤。
首先,捕捉设备的插入。usb设备是即插即用设备,系统在设备插入的瞬间要捕捉到这一信息,isp1161是通过内部的hub完成这一任务的。hub端口的两根信号线(d+和d-)的每一根都有一个子15kω的下拉电阻,而一个设备在d+(全速设备)或d-(低速设备)上有一个1.5kω的上拉电阻。当设备插入到一个端口时,设备的上位电阻信号为高。hub以此检测到一个设备已连接上了,并报告给主机控制器,然后,在与处理器的接口上产生中断。主机知道后,通过读取hub相关寄存器来了解诸如设备速度等更多信息。
而后,hub重新设置该设备。当主机知道有一新设备时,主机给hub相关寄存器写命令,让hub来重新设置端口。hub使设备的usb数据线处在重启状态(d+和d-均为逻辑低)至少10ms,当hub释放了重启状态,设备就处在默认状态了(d+和d-均为逻辑低)至少10ms,当hub释放了重启状态,设备就处在默认状态了(设备的usb寄存器已经处在它们的默认状态)。此时,设备已准备发通过endpoint0的默认流程来响应控制流程。
最后,主机通过控制传输通道完成设备的枚举。主机端先送一个get_descriptor(获取描述符)请求来知道默认流程最大包的大小,主机发送请求给设备地址0,端点0。然后通过发送一个set_address(
摘要:主要介绍如何利用芯片isp1161在嵌入式系统中实现usbhost功能;基于批量传输协议,讲述如何实现数据在usb存储设备上的存储和读写。
关键词:usb主机isp1161传输协议批量传输设备枚举fat16
本文以usbhost技术为核心,介绍usbhost技术在单片机上的实现。,重点介绍usbhost技术在嵌入式系统读写优盘上的应用。
1usbhost技术简介
usb的通信可以用图1表示。图1中,左半部分为usb主机端,可以看出,usb主机端由两部分构成,即软件体和硬件体。实际上是三个软件组件组成了usbhost解决方案,即usb客户驱动程序、usb驱动程序和usb主机控制器驱动程序。应用程序的事务处理是由usb客户驱动程序(设备驱动程序)启动时,客户驱动程序把usb设备当作一个可以被访问的端点集合,它可以被控制并与它的功能单元进行通信。usb系统软件包括usb驱动程序和usb主控制器驱动程序,usb驱动程序负责配置管理、用户管理、总线管理和数据传输管理;以及数据的位编码、封包、循环校验、发送、错误处理等。
2基于isp1161控制器usbhost的实现原理
usb控制器大致分为三类:第一类是支持1.0协议的,这类已经很少见了;第二类是支持1.1协议的控制器;第三类是支持2.0协议的控制器。根据不同场合,后两种应用比较广泛,2.0接口主要用在计算机上,依靠操作系统实现数据高速传输。支持1.1协议的芯片除了用于计算机上,还有少数是为嵌入式系统中实现usbhost而设计的。如cypress的sl811、philips的isp1160、isp1161等。
usb主机端的硬件部分是由处理器、usb-host控制器和根集线器组成,图2是由微控制器msp430f149和usb控制器isp1161实现usbhost的电路原理。图2分为4个部分:微处理器、usb控制器、电源管理模块和usb接口电路。从概念上还应有一个usb根集线器(usbhub),实际根集线器被集成在usbhost控制器中。
isp1161是philips设计的usb主机/设备控制器。内部有1个usb主机控制器和1个设备控制器,符合usb2.0协议,支持全速和低速传输。主机和设备控制器共享相同的接口总线,带有2个usb下行端口和1个usb上行端口。图2中使用接口1作为host下行端口。每个下行端口有各自的过流检测电路,图2中使用php109检测端口供电电流,高于500ma将停止对总线供电。
msp430和isp1161的数据传输可以通过pio(程控输入输出)方式或dma(直接存储器访问)方式进行传输,在isp1161进入工作状态前,要进行一系列初始化,包括检测器、复位控制器、初始化硬件配置、设置中断、设置buffer(缓冲区)大小等。使isp1161的主机控制器处于工作状态,真正用于发送到总线的数据被放置于isp1161内部的缓冲区内。
这时值得一提的是“传输描述符”这个概念,它是isp1161工作的核心概念。在缓冲区内放置的数据是以传输描述符为单位,传输描述符作用是描述了本次传输需要完成的任务。描述符分为描述符头和描述符负载数据。描述符头表征了这个描述符的传输类型、封包最大宽度、传输速度、传输对象、传输端点、负载数据的长度等。传输描述符的另一个作用体现在传输后。每次传输执行完毕后,传输描述符的内容会有相应的改变,体现在传输描述符头中,表征了本次传输的结果,包括传输了多少字节,传输中发生了什么错误等。
3usb主机端对设备的枚举
从usb设备插入接口开始到客户驱动程序能够使用该设备还有一段路径,这一段就被称作为设备的识别过程,又成为枚举过程。枚举过程是任何usb设备使用前必经的过程。usb主机端需要知道这是一个低速设备还是全速设备,需要知道这个设备具有的能力,以便载入相应的设备驱动程序,下面具体介绍一下实现步骤。
首先,捕捉设备的插入。usb设备是即插即用设备,系统在设备插入的瞬间要捕捉到这一信息,isp1161是通过内部的hub完成这一任务的。hub端口的两根信号线(d+和d-)的每一根都有一个子15kω的下拉电阻,而一个设备在d+(全速设备)或d-(低速设备)上有一个1.5kω的上拉电阻。当设备插入到一个端口时,设备的上位电阻信号为高。hub以此检测到一个设备已连接上了,并报告给主机控制器,然后,在与处理器的接口上产生中断。主机知道后,通过读取hub相关寄存器来了解诸如设备速度等更多信息。
而后,hub重新设置该设备。当主机知道有一新设备时,主机给hub相关寄存器写命令,让hub来重新设置端口。hub使设备的usb数据线处在重启状态(d+和d-均为逻辑低)至少10ms,当hub释放了重启状态,设备就处在默认状态了(d+和d-均为逻辑低)至少10ms,当hub释放了重启状态,设备就处在默认状态了(设备的usb寄存器已经处在它们的默认状态)。此时,设备已准备发通过endpoint0的默认流程来响应控制流程。
最后,主机通过控制传输通道完成设备的枚举。主机端先送一个get_descriptor(获取描述符)请求来知道默认流程最大包的大小,主机发送请求给设备地址0,端点0。然后通过发送一个set_address(