MAX3420E系统调试

上传人:沈*** 文档编号:109552581 上传时间:2022-06-17 格式:DOC 页数:12 大小:350KB
收藏 版权申诉 举报 下载
MAX3420E系统调试_第1页
第1页 / 共12页
MAX3420E系统调试_第2页
第2页 / 共12页
MAX3420E系统调试_第3页
第3页 / 共12页
资源描述:

《MAX3420E系统调试》由会员分享,可在线阅读,更多相关《MAX3420E系统调试(12页珍藏版)》请在装配图网上搜索。

1、MAX3420E系统调试引言当您设计了一块电路板,将MAX3420E与您喜爱的微控制器整合在一起。加电,插入USB,不能正常工作.,怎么办? 本文为您提供了答案。第一次调试USB外设器件时,会面临很大的挑战。要使MAX3420E能够正常工作,首先需要按下列步骤进行检查。检查USB B型连接器的引脚这是最容易出错的地方视图是顶视图还是底视图? 引脚1在哪里? 如果您不是机械工程师,这些视图会让人感觉无所适从。图1和图2可帮您解决这一问题。应采用欧姆表来检查MAX3420E和USB连接器之间的连线。特别注意D+和D-。二者很容易搞反。请注意,MAX3420E与连接器D+和D-引脚之间有33电阻。对

2、于这么小的电阻,大部分测试是否接通的仪表都会发出“嘀嘀”声。如果需要检查USB电缆,请参考图3。USB“完整性”检查本节阐述设备与USB的连接情况。完整性检查给出了D+和D-线的工作情况,在没有USB总线分析仪的情况下,这种方法非常有效。复位处理器,将电缆连接至PC USB端口,初始化代码执行完毕后,在设置CONNECT位的语句前停止运行。该语句如下: wreg(rUSBCTL,bmCONNECT); / Connect to USB在执行该语句之前,D+和D-应均为低电平。这是因为电缆的主机侧电路通过15k电阻将这些信号下拉至地。现在,单步执行CONNECT语句后,MAX3420E在D+和V

3、CC (3.3V)之间接入一个1.5k内部电阻。此时,D+应变为高电平,其后会出现一些突发脉冲(图4)。 上面的波形是D+,下面的是D-。该突发波形持续约18s,然后消失。D+保持高电平,D-保持低电平,然后弹出下面的Windows XP消息框(图5):怎么回事?请注意,程序为单步执行。到目前为止所作的只是连接了D+上拉电阻。该上拉提示PC有新的USB设备刚刚插入,因此PC开始向该设备发送信号,确定设备类型。这就是图4中的脉冲信号。由于微控制器代码停止运行,因此不会命令MAX3420E做出任何响应。PC由于没有收到响应信号,最终决定(18秒后)忽略该设备。D+为高电平和D-为低电平的总线状态称

4、为“USB总线挂起”或者“挂起”。主机停止发送任何信号,MAX3420E的D+上拉电阻保持D+信号为高电平。图6所示为利用LeCroy Instruments (LeCroy兼并了CATC,CATC是该分析仪的最初生产商)的USB总线分析仪测得的总线过程。当PC探测到设备插入后(CONNECT = 1),它发出一个USB总线复位信号(没有画出)。然后,在Transfer 0,它发出一个“GET_DESCRIPTOR”请求以获取“DEVICE”类型。5.687s之后,PC发出第二个USB总线复位信号,再尝试5.578s,要求得到设备描述符。PC第三次复位总线,再尝试5.580s,然后挂起总线并放

5、弃尝试。由于没有运行固件,设备不会听取或应答(ACK) PC的请求。为清晰起见,图6没有画出MAX3420E回送的NAK (非应答)握手信号。图7将第一次传输过程展开,详细地显示数据包。现在可以看到Transfer 0以下面三个封包开始: 主机向刚刚连上的设备 在这种情况下,USB发送地址0)发送一个SETUP包(63)。 主机发送一个DATA包(64),包含一个8字节“操作码”。 外设(MAX3420E)回送一个ACK包(65),确认无差错地收到两个主机封包。如果打开含有MAX3420E的系统,插入USB,设置CONNECT = 1 (但是不再进行其他操作),MAX3420E将发出ACK握手

6、包(上面第3步的65字节包)。MAX3420E硬件自动应答CONTROL传输的SETUP阶段,这是由USB规范规定的。接下来,主机开始发送IN请求,并从Transaction 1开始。对应每个IN请求,MAX3420E回送NAK (非应答)握手信号。这是因为还没有运行程序,因此,与MAX3420E连接的微控制器不会收到SUDAV IRQ (Setup数据就绪中断请求)。注意:MAX3420E通过置位SUDAV IRQ,提示微控制器收到了SETUP包。该信息通知微控制器需要对数据包解码,并回送要求的数据作为响应。 这些IN-NAK过程持续5.687s,此时PC会复位总线,开始第二次尝试。图4中的

7、脉冲信号即是IN-NAK过程。如果仔细观察示波器,5s后波形将略有变化这对应总线复位(D+和D-同时置低约30ms),其后是另一个SETUP包。然后,IN-NAK再持续5s。供参考:另一个分析仪产生图6和图7波形的USB总线分析仪可能超出了您的预算。尽管本应用笔记假设您只有一个示波器和欧姆表,我们还是强烈建议在USB开发过程中使用USB总线分析仪。我们使用的LeCroy/CATC具有多种优点,包括友好的界面和丰富的软件,最重要的是它享有工业标准USB测量工具的美誉。通过比对CATC波形来确定实际情况,解决了许多争论不休的问题(硬件、软件和芯片等)。总线总是如实反映情况。幸亏现在有低成本USB分

8、析仪。图8所示为Beagle-USB的屏幕截图。Beagle分析仪能够以比LeCroy/CATC低很多的价格显示总线的工作情况。如果对比图8中的Index 10和图6中的64字节数据包,会发现它们显示了完全相同的SETUP数据包。 检查进程如果观察到了图4中的信号,已经可以确定USB连接器的连线是正确的,而且MAX3420E供电正常。如果还没有观察到该显示,可以尝试以下措施: 测量MAX3420E的RES#引脚,确定其为高电平。 测量晶振,确保其振荡频率为12MHz。必须是12MHz 0.25%才能满足USB规范。如果超出容限,检查所连接的负载电容是否与并联谐振晶体所规定的电容一致(通常采用1

9、8pF)。 检查VCC是否为3.3V。 检查系统接口电压VL。确保不超过3.6V。 如果由VBUS通过一个3.3V稳压器对MAX3420E的VCC引脚供电,确定连接了USB。否则,MAX3420E的VCC无法供电。 注意:由于固件运行与否和USB电缆连接无关,因此,与总线供电的设计相比,调试自供电设计要简单一些。可以先采用外部电源对样机供电。如果需要,以后可以再转为总线供电。 下一步检查您的控制器是否能够成功地通过SPI总线与MAX3420E寄存器组进行通信。检查rreg()和wreg()。编写任何程序,无论是采用Maxim的实例代码还是自己从头开始编写代码,都需要使用读写MAX3420E寄存

10、器的函数。下面的例子使用了这些函数原型: unsigned char rreg(BYTE r); / Read a MAX3420E register bytevoid wreg(BYTE r,BYTE v); / Write a MAX3420E register byte在调试处理USB传输的代码前,先编写一个简单的子程序来测试这些函数。参见图9的例子:图9中的测试代码先复位MAX3420E,然后向USBIEN寄存器写入每字节移动1位的8个字节。每个字节中有一位置位,从00000001开始,然后是00000010,最终以10000000结束。单步执行该函数,检查“rd”值8次,确定其值为0

11、x01,0x02,0x04,0x08,0x10,0x20,0x40和0x80。如果是这样,则可以确定SPI接口寄存器的写和读操作均正常。如果能够写入USBIEN寄存器,并可靠的读回其内容,那么就可以读写所有的MAX3420E寄存器。图10所示为采用CrossStudio调试MAXQ2000微控制器的屏幕截图。将光标指向“rd”变量时,将激活弹出窗口(截图没有显示光标)。单步执行代码时,可采用这种方式来查看任何变量。测试代码首先设置微处理器SPI端口。对应每种微处理器类型和特定IO引脚分配,SPI_Init()函数各不相同。然后,代码向PINCTL寄存器写入0x10,设置MAX3420E SPI

12、接口为全双工工作模式。这将置位FDUPSPI位。代码置位CHIPRES位,然后对其清零,使MAX3420E处于已知的状态。建议在代码的开始部分包含芯片复位功能,从而在每一个调试周期的开始使MAX3420E处于已知的状态。如果图10中的代码没有产生正确的结果,应检查SPI信号,确定其工作是否正常。 测试程序test_SPI()中的第一次wreg()调用,向MAX3420E的寄存器17写入数值0x10。SPI总线的波形应与图11所示一致。注意:图11所示的波形使用SPI模式(0,0),在SCLK的上升沿采样SPI数据,SCLK的空闲电平为低电平。SPI接口不同,显示的波形会有不同的脉冲持续时间,但

13、是对应SCLK上升沿的数值应该相同。 每次访问SPI的第一个字节是命令字节,其字节格式如图12所示。注意图11中对应前一部分SLCK上升沿的MOSI波形,位模式10001010指定寄存器17 (第7位至第3位是10001,数值为17)。同样,第1位为高电平,表明是写操作。第二个字节的位模式是00010000。这是写入寄存器17的数据,即0x10 (只有第4位FDUPSPI寄存器位置位)。因此,该SPI访问将0x10写入寄存器17,置位FDUPSPI位。得到这些波形的一种简单方法是设置示波器或者逻辑分析仪在SS#的下降沿触发,单步执行wreg()调用。test_SPI()中的下一条语句是rreg

14、()函数。第一次进入循环体时,将数值0x01写入USBIEN寄存器,如图13所示。然后,test_SPI()函数读回USBIEN寄存器的数值,第一次通过循环体时,应等于1 (图14)。每次通过循环体时,写入和读回的位应向左移动一个SCLK边沿。MAX3420E寄存器写和读操作验证完毕后,可以进一步调试程序。到目前为止所有的检查步骤均属于“完整性检查”。现在,我们开始实际处理USB通信功能的第一步:需要处理器响应不同的MAX3420E中断请求位。IRQ位设置似乎应该USB总线通信开始后MAX3420E才会置位中断请求位。实际上,当MAX3420E上电时,就会有IRQ位置位,当插入USB电缆和设置

15、CONNECT = 1时,又有其他IRQ位置位。下面介绍该启动过程的中断请求情况。 完成复位 当MAX3420E完成复位后,即使还没有插入USB,某些中断请求位就会置位。这些位是:EPIRQ寄存器: IN3BAVIRQ IN2BAVIRQ IN0BAVIRQ EPIRQ寄存器的初始值应为0x19。MAX3420E置位这三个IRQ位,指示三个IN端点FIFO已经准备就绪,可以装入数据。BAV表示“Buffer Available”。USBIRQ寄存器: OSCOKIRQ USBIRQ寄存器的初始值应为0x01。上电时,MAX3420E启动其片内振荡器。振荡器稳定后,MAX3420E置位OSCOK

16、IRQ位,指示已经准备就绪,可以进行工作。如果程序没有通过OSCOKIRQ位检查,请确定VCC引脚电压为3.3V。VCC为振荡器供电。注意:MAX3420E IRQ寄存器位不论其对应的使能位(在EPIEN和USBIEN寄存器中)是否置位,均可有效置位。使能位决定是否将请求位传送到驱动INT引脚的逻辑电路。参见应用笔记3661,MAX3420E中断系统,了解更详细的信息。 USB插入后插入USB (CONNECT = 0)后,即使USB没有通信,仍有一些USBIRQ位会置位。EPIRQ位与上面的情况一致,但是更多的USBIRQ位将置位:USBIRQ寄存器: OSCOKIRQ VBUSIRQ (可

17、能) VBUSIRQ位指示MAX3420E通过检测VBCOMP引脚上的5V信号,探测到插入了USB电缆。这假定您已经将USB连接器的VBUS引脚连接至MAX3420E微控制器(VBUS比较器)的输入引脚。注意:USB连接器的VBUS引脚接MAX3420E的VBCOMP输入引脚是可选项。VBCOMP引脚不对MAX3420E内部供电。它只连接至内部VBUS比较器。 设置CONNECT = 1之后连接USB使主机发出一个总线复位信号,产生Get_Descriptor-Device请求,最终挂起总线。这些操作会置位USBIRQ寄存器中的更多IRQ位。注意,USB总线复位将清除VBUSIRQ位。EPIR

18、Q寄存器: IN3BAVIRQ IN2BAVIRQ IN0BAVIRQ SUDAVIRQ (通信开始后) USBIRQ寄存器: OSCOKIRQ URESIRQ URESDNIRQ SUSPIRQ (最后) 如果将VBUS接VBCOMP引脚,USBIRQ寄存器读数为0x8D,并持续约20s,然后由于主机挂起总线,读数变为0x9D。接下来的情况会取决于您的代码。如果您观察到的情况和前面吻合,则表明系统一切正常,可以继续往下检查您的代码。调试方法:通过3个步骤触发中断剩下的检查是确保固件能够正确响应PC发出的不同USB请求命令,并由MAX3420E给出相应信号。如果启动程序,插入USB后,什么也没

19、有发生(可能会出现Windows USB错误消息),那么可能是您的程序没有处理中断。下面的调试方法可以帮助解决这些中断问题。第1步: 轮询IRQ位首先,编写代码直接轮询IRQ位,当关心的IRQ位置位后,使处理器进行相应操作。即使主程序循环进行直接轮询,也最好使能中断(各IEN位 = 1和IE = 1)。这样可以通过观察MAX3420E INT引脚来了解其工作情况。这一步有效地取消了微控制器中断系统(和代码)检查,使您能够集中精力实现正确的USB功能。当连续读取EPIRQ和USBIRQ寄存器时,不必担心浪费的SPI周期这一步的目的是使USB正常工作。第2步: 轮询INT引脚状态一旦USB工作正常

20、后,进行第二步,修改程序来轮询MAX3420E INT引脚状态,检查悬挂的中断。如果第1步已经验证了程序,那么在程序主循环中有部分代码一直读取EPIRQ和USBIRQ寄存器,检查悬挂的中断。插入轮询微控制器中断引脚状态(连接在MAX3420E INT引脚上)的语句,修改第1步的连续检查。如果MAX3420E INT引脚未产生中断,可以跳过读取EPIRQ和USBIRQ寄存器的语句。这种简单的检查方式极大地减少了微控制器和MAX3420E之间的SPI数据流量,这是因为只有IRQ位置位时,才对其进行测试。第3步: 检查微控制器中断程序第3步也是最后一步,将MAX3420E整合到微处理器的中断系统中。这通常要写一个中断向量,以自动将程序执行位置指向MAX3420E处理程序。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!