linux怎么查看本机内存大小
309
2022-11-16
利用ISP1581型接口电路进行USB2.0接口软硬件设计的流程概述
1 引言
2 ISP1581简介
3 硬件电路设计
软件即微控制器的程序文件,它主要完成USB协议处理和数据交换,目的是让Windows检测和识别设备,建立起正确的通信连接。设备与主机的USB 通信可以分为配置通信和应用通信。配置通信 主要指主机在对设备进行检测的过程中设备软件对主机的一系列标准请求所做出的响应。设备必须识别每个请求,并返回被请求的信息,同时采取其他一些请求指定的动作。应用通信主要指主机识别设备后进行的有用数据传输。USB支持控制传输、批量传输、中断传输和等时传输4种传输类型,控制传输主要用于配置通信,其他3种类型主要用于应用通信。所有的USB器件都只有端点0支持控制传输。
根据USB2.0协议,任何传输都是由主机开始的,微控制器做它的前台工作,并等待中断。系统的软件程序主要由三部分组成:一是初始化F2812和所有的外围电路(包括ISP1581);二是主循环部分,其任务是循环扫描USB事件和等待中断;三是中断服务程序,其任务执行系统指令。
在初始化过程中,除了F2812自身初始化外,还要完成对ISP1581各个端点使用的传输类型、传输包大小和中断类型及方式等设备任务。F2812 对ISP1581的操作是通过写/读寄存器来实现的。初始化结束后,通过设置ISP1581方式寄存器中的软件连接位(SOFTCT)可使外设连接到 USB总线上。主机检测到有设备连接后会进行总线复位。在此期间,ISP1581将发送高速(HS)模式检测信号来判断主控制器支持的是USB2.0还是 USB1.1规范,若接收到一个高速(HS)握手信号,则表明有一个HS主机与总线相连,此此ISP1581将转换到高速(HS)状态,否则仍工作在全速(FS)状态。
当ISP1581接收到主机的令牌包、总线复位、挂起和接收到高速模式握手信号等事件后,ISP1581都会给F2812发送中断请求。F2812进人中断服务程序后,首先读ISP1581的中断寄存器,判断中断类型,然后执行相应的操作。总线复位和高速模式中断不需要进行特殊的处理,只需在中断服务程序中设定标志。在软件程序中,比较难处理的是包含标准USB请求的控制传输。由于只有端点0支持控制传输,因此主要是对端点0的编程。控制传输总是在设定(SETUP)阶段开始,之后为可选的数据(DATA)阶段,然后在状态(STATUS)阶段结束。主机会发送建立包(SETUP)、控制读包 (CONTROL_IN)和控制写包(CONTROL_OUT)3种包到设备,ISP1581相应的会产生3种中断。在编程中,可以设备空闲(USB_IDLE)、发送(USB_TRANSMIT)和接收(USB_RECEIVE)3种状态来处理控制传输。图2为微控制器对3种包的控制传输处理流程。
建立阶段结束后,主机会执行数据阶段。当ISP1581接收到所等待的Control_In包后,微控制器将对ISP1581处于传输模式后进行数据包的发送进行确认。ISP1581的控制端点有64B FIFO,每次只能传输64B的数据,微控制器在传输阶段必须控制传输数据的数量。如果剩下的字节数大于64,微控制器将先发送64B并减去参考长度 64。当下一个Control_In包到来时,微控制器将确定剩余的字节是否为零。如果已经没有数据要发送,微控制器将发送一个空包向主机表明数据已经发送完毕。
如果建立包为“Set_Descriptor”请求,那么建立包中的控制传输将指示此包为控制写类型。在执行完“Set_Descriptor”请求过程后,F2812进入等待数据阶段。主机发送Control_Out包标志后,当ISP1581接收到该数据包时会对F2812产生一个端点0 OUT中断。微控制器响应中断时,首先确认ISP1581是否处于USB_Receive状态,然后微控制器通过选择控制输出端点来确认缓冲区是否已满,同时将数据从缓冲区读出。
相对于控制传输来说,USB的其他几种传输模式都比较好处理。ISP1581的7个IN端点和7个OUT端点均可通过编程设置为批量传输、中断传输或等时传输模式。在软件编程中需要注意以下几点:
一是ISP1581的8kB FIFO是所有端点共享的,所以在设定各个端点传输包大小时,其总和不能超过8kB;二是在调试时,可根据Windows对USB设备的枚举顺序进行程序调试;第三,为做到与USB1.1兼容,在全速状态下响应主机标准请求时,需要发送全速描述符。
5 结束语
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~