|
|
| | -文章搜索 - 最新文章 - | |
MAX3420E中断系统 |
| 发布时间:2007年2月2日 点击次数:90 |
| 来源:《Maxim公司》 作者: |
max3420e可与任何spi主控制器相连,构成全速usb外设器件。尽管由max3420管理底层usb信令,但是需要处理usb事件时,spi主控制器必须参与处理。max3420的int引脚指示有中断发生,spi主控制器读取14个中断请求位,确定需要服务的中断。主要由这些中断请求(irq)位确定max3420e的工作过程。 注意:spi主控制器可以是微控制器、dsp、asic或者任何具备spi端口的器件,并能提供sclk信号。本文档使用的术语“spi主控制器”和“微控制器”含义相同。 max3420e中断逻辑 图1所示为max3420e中断逻辑。阴影部分是可通过spi访问的寄存器位。 irq位 读取一个irq位,将返回irq触发器的状态。 由于spi主控制器通过写1来清除一个max3420e irq位,而写0不改变其他寄存器位,因此spi主控制器可以直接写入位屏蔽值来清除uresirq位。所以,图2中的最后三条语句可以由图3中的单条语句替代。 ien位14个max3420e中断的每一个都有相应的中断使能(ien)位。ien位和irq触发器输出进行“与”操作,决定是否向int引脚传送中断请求(图1)。14个irq触发器通过门控电路后,进行“或”操作,形成一个内部中断请求信号,传送至中断引脚逻辑模块。 注意,无论ien位的状态如何,irq位都指示中断悬挂状态。这样,即使中断不触发int引脚,固件仍可以检查该悬挂中断。如果您的程序需要检查一个irq寄存器“是否悬挂中断”,一个简单的方法是读取irq和ien寄存器,对它们进行“与”操作,检查现在指示“等待和被使能的irq”位。零值表示没有使能的中断处于悬挂状态。 ie位 中断引脚逻辑 电平模式,intlevel = 1 边沿模式,intlevel = 0 (缺省值) 在图1中,请注意以下几方面: 如果一个irq位置位,而其对应的ien位清零,则irq不会影响int输出引脚。但是,中断仍处于悬挂状态。永远可以读取irq位以获得其状态,可向对应的寄存器位写1,将irq位清零。 图4所示为电平模式下的max3420e int引脚波形。int引脚静态为高电平(上拉至vl)。假设图中两个中断的ien位置为1,全局ie位置为1,那么将出现以下事件。(下面标有字母的条目对应图4中相同字母标出的事件。)
spi主控制器完成中断服务后,向irq位写入1,将其清零。int引脚返回至静态高电平。(a)和(b)之间的间隔是中断置位其irq位和spi主控制器清除irq位之间的时间。 产生另一个中断请求,将int引脚拉低。 当第一个中断请求处于悬挂状态时,产生了第二个中断请求。int电平没有变化,因为至少有一个中断处于悬挂状态。(实际上,此刻有两个中断处于悬挂状态。) spi主控制器完成一个中断服务后,向irq位写入1,将其清零。由于仍有一个中断处于悬挂状态,int引脚保持低电平。 spi主控制器处理完剩下的中断请求,向irq位写入1,将其清零。没有中断处于悬挂状态,因此int引脚返回至静态高电平。 注意:如果一个中断的irq触发器(图1)置位,则认为该中断处于悬挂状态。 这种逻辑可以很好地处理int引脚轮询。如果max3420e的任何部分需要服务,并且其中断已被使能,那么int引脚变为低电平。在微控制器清除最后一个悬挂irq位之前,int引脚一直保持低电平。 边沿模式 图5所示为两种极性边沿模式下的max3420e int引脚波形,极性由posint位控制。波形与电平模式的相似,但有两处不同。在两种条件下,int引脚产生边沿跳变: 一个irq位变为有效状态(其irq触发器产生0-1跳变)。 在负极性边沿模式下,如果没有悬挂中断,int引脚为高电平;如果有悬挂中断,则为低电平。 max3420e具有两类usb中断,由表1中阴影部分的寄存器控制。中断位分为两类:位于epirq (r11)和epien (r12)寄存器的端点控制,以及位于usbirq (r13)和usbien (r14)寄存器的usb控制。全局ie位在cpuctl寄存器中。 表2. 14个max3420e中断源 表2说明了14个中断控制位,maxq3420e内部逻辑何时对它们进行置位,以及spi主控制器怎样清除它们。
图6所示为in传输的总线过程,主机从max3420e申请数据。在数据包7145到达前,spi主控制器先将字节00 00 08装入端点3-in fifo (ep3infifo)。然后,spi主控制器将数值3写入ep3inbc (端点3 in字节计数)寄存器。写入字节计数寄存器,可完成以下三项功能: 通知max3420e当in请求到达时有多少字节要发送。 如果在in数据传输至主机过程中出现误码,当主机重发in请求时,max3420e自动重发数据(以及相同的数据触发data0/data1)。只有接收到来自主机的ack握手信号后,max3420e才会置位端点的bav irq位,指示缓冲区准备好接收新数据。 重要提示:与所有的max3420e irq位一样,也可以通过写入1来三个清除bav irq位。千万不要这样做。相反,应采用上面列出的方法:通过写入in端点的字节计数寄存器来清除bav irq位。这是因为max3420e使用一个in端点的bav中断请求位作为锁定机制。该机制确保spi主控制器和max3420e的串行接口引擎(sie)不会同时使用端点缓冲区。例如,如果清除bav位,然后以两条单独指令装入字节计数器,那么当您更新字节计数寄存器时,可能开始了数据包传输,从而导致数据出错。 bav irq缺省值 双缓冲端点ep2-in 双缓冲机制使我们能够观察到的唯一影响出现在初始化过程中。上电或者芯片复位时,in2bavirq位置位。一般情况下,初始化程序把数据装入ep2in fifo,然后装载ep2inbc寄存器,为传输做好准备,同时清除了in2bavirq位。这样做时,您会很奇怪地发现max3420e立即重新置位in2bavirq位。这表明第二个缓冲区已经准备就绪,允许spi主控制器装入第二个数据包。 dav中断请求位 在图8中,主机发送一个out pid和四个字节的数据,max3420e将其传送至ep1out fifo。当max3420e验证传送无误码后,将更新其ep1outbc寄存器,指示四个字节,向主机发送ack包,并置位ep1outdav irq,通知spi主控制器可以提取端点1 fifo内已经准备好的数据。 双缓冲端点ep1-out sudav中断请求位 oscok中断请求位 图9所示为实例代码,采用chipres寄存器位复位max3420e。由于芯片复位将停止内部振荡器工作,代码设置chipres=0清除复位信号后,在使用max3420e之前应该等待振荡器稳定下来。 rwudn中断请求位 当spi主控制器置位sigrwu位时,max3420e等待5ms,驱动k-state 10ms,然后置位远程唤醒完成中断请求(rwudnirq)位。5ms延时保证符合另一usb要求:在外设发出恢复信号前,总线必须至少空闲(j-state) 5ms。 图10所示为发送远程唤醒的实例代码。注意,max3420e实现信号定时,完成后置位irq。max3420e对于所有的定时usb事件均这样处理,完成时产生一个中断,因此spi主控制器不需要定时控制信号间隔。图10中的代码置位sigrwu位,然后循环等待rwudnirq置位,以确定持续10ms信号时间。然后,spi主控制器设置sigrwu = 0,并清除irq位。一般地,在多任务spi主控制器中,应响应rwudnirq中断请求,而不要浪费时间直接检查irq位。 接收到rwudnitq中断后的5ms内,spi主控制器应关闭sigrwu位。如果没有这样做,max3420e将启动另一个10ms k-state,重复这一过程(等待5ms, 然后10ms k-state),直到sigrwu = 0。在rwu信号处理过程中设置sigrwu = 0,不会终止rwu信号。 如果spi主控制器设置sigrwu = 1时max3420e正处于关电状态(pwrdown = 1),那么max3420e会自动重新启动振荡器,等待其达到稳定,然后开始发送rwu信号。在这种情况下,spi主控制器不需要检查oscok irq。 busact中断请求位 ures和uresdn中断请求位 由于spi主控制器需要监视usb总线复位事件,在总线复位期间,max3420e不会清除uresie、uresdnie或ie中断使能位。但在总线复位期间它会清除epien和usbien寄存器中的所有其他中断使能位。 susp中断请求位 需要注意下面两条编程提示: 清除suspirq位不能阻止3ms后中断重新产生。总线挂起时,为避免产生重复的挂起中断,在总线恢复工作之前,应清除挂起ien位。
|
|
|
|
|
[网络文摘] 相关文章: MAX3420E系统调试简介:
引言 当您设计了一块电路板,将max3420e与您喜爱的微控制器整合在一起。加电,插入usb,不能正常工作...,怎么办? 本文为您提供了答案。 第一次调试usb外设器件时,会面临很大的挑战。要使max3420e能够正常工作,首先需要按下列步骤进行检查。 检查usb b型连接器的引脚 这是最容易出错的地方—视图是顶视图还是底视图? 引脚1在哪里? 如果您不是机械工程师,这些视图会让人感觉无所适从。图1和图2可帮您解决这一问题。 应采用欧姆表来检查max342...... 用MAXQ结合MAC进行控制和数字信号处理
多种电平输出的DC-DC转换器NJU7660及其应用
FSK收发器芯片MICRF500的原理与应用
新的功率检测电流断路器
燧道式炉神经元二自由度PID控制的研究
基于FPGA的PCI接口控制器的设计与实现
射频nRF9E5与无线耳机系统设计
基于ISA总线的ADC板卡设计
高电流功率转换解决方案 |
|
|
|