1 关于LPC5500中USB的FRAME_INT中断-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于LPC5500中USB的FRAME_INT中断

jf_pJlTbmA9 来源:恩智浦MCU加油站 作者:恩智浦MCU加油站 2023-10-30 18:26 次阅读

USB中的SOF(Start Of Frame)包是USB开发中,经常接触也是很简单的一个概念:SOF由USB主机每1ms定时发出(FS),作用很多,相当于是一个时钟节拍基准,如果暂时用不到,就忽略也没有关系。LPC5528的USB模块中,有一个FRAME_INT中断描述如下:

wKgaomUD0hSAQTEAAAGbOuW9Nck634.png

这个中断 ”感觉好像就是SOF中断”,似乎只是名字换成了FRAME_INT,在手册中的描述也和SOF中断几乎一样,但是手册里就是没有说它就是SOF中断。

经过小编实测和向同事确认,发现这个中断实际上并不完全等同于SOF中断,两者还是有一定区别的。本文就来探讨一下这个问题:

事情是这样的: 小编最近支持一个客户,客户的代码中涉及低功耗按键唤醒,USB Remote wakeup, 也需要用到SOF中断做为定时器来驱动上层app事件。

客户发现:当PC关机的时候,LPC5528被按键唤醒,唤醒后执行Remote Wakeup(实际就是MCU将USB总线设置为K states),因为这时候主机Host已经关机,USB总线上没有任何信号,永远维持的K states上,但是MCU却莫名其妙的进入了FRAME_INT中断,而且还是1ms的周期!

测试使用一个GPIO引脚——GPIO_SOF_EVT,每当进入FRAME_INT中断后,Toggle一次;测试波形如下图:

wKgZomUD0hWAdkeaAAIeWz69IlA125.png

这有点奇怪了。。。USB总线上没有任何包发过来,但是还是会进FRAME_INT中断!难道FRAME_INT中断不是SOF中断?

结果确实是这样。。经过和同事确认,FRAME_INT中断确实不是SOF中断,它只是和SOF中断有点像而已。当VBUS没有掉电且MCU执行Remote wakeup(Resume)的时候, FEAME_INT还是会”如期而至”。。他和SOF包没有必然联系。。。疑惑中

那么如果想用SOF中断咋办呢?有一个简单的办法:USB->INFO寄存器中的前11位为FRAME_NR,它记录了正确解码SOF的帧号,每当收到一个真正的SOF帧,FRAME_NR都会自加,所以在FRAME_INT中断中可以读入FRAME_NR来辅助判断,这次FRAME_INT到底是不是真正的SOF包到来:

wKgaomUD0heADqkpAAFisCdhq68565.png

代码如下所示:

wKgaomUD0hiADdzdAARJLrlrPKc409.png

补充:

小编同时也测试了HS-USB的FRAME_INT中断,其结论和FS是一样的,只不过HS的FRAME_INT中断是微帧,125us一次。

FRAME_INT中断在SDK中默认是关闭的,需要在INTEN寄存器中打开对应的标志位才可以使用。

到此为止,有必要进一步地思考一下,为什么这个USB的内部模块中,没有专门的SOF中断,却出现了这个与SOF有关,又不来源于SOF的FRAME_INT中断。

尽管没有与芯片设计人员沟通,但可以合理地推论,这个FRAME_INT中断是为SOF相关应用而设计的,之所以没有直接使用SOF作为触发源,是因为在USB主机休眠时,不再有SOF信号,而对于在主机休眠时仍需要周期中断源的USB应用而言,则需要使用其它定时器资源来实现相应功能,这样就会占用其它片上资源,又会增加软件调度的负担。

而在片内USB模块中,设计这样的机制,即可以在没有外部SOF信号时,继续维持周期性的中断,也可以在SOF信号恢复后,保持这个周期中断与SOF同步,即实现了SOF中断的功能,又兼顾了软件的实现与层次划分。

最后,这样的设计并不增加硬件的成本。

来源:恩智浦MCU加油站

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    60

    文章

    7936

    浏览量

    264458
  • 中断
    +关注

    关注

    5

    文章

    898

    浏览量

    41470
  • 定时器
    +关注

    关注

    23

    文章

    3246

    浏览量

    114715
收藏 人收藏

    评论

    相关推荐

    基于恩智浦LPC5500系列MCU的OKDO E1开发板详解

    OKDO E1 开发板作为恩智浦 LPC5500 系列开发平台中独特的一员,以其小巧的尺寸,高易用性收获了许多用户的高度关注。开发板仅 2 枚硬币大小,却集成了 LPC55S69 主芯片
    发表于 11-13 15:20 1564次阅读

    基于Cortex M33的LPC5500系列MCU主要功能特性介绍

    (内置闪存)进行实时执行,并通过Arm TrustZone-M保护资产。此外,LPC5500系列MCU共有7个可扩展的家族,提供多种封装和内存选项,还具有全面的MCUXpresso软件和工具生态系统
    发表于 11-13 16:06 2386次阅读
    基于Cortex M33的<b class='flag-5'>LPC5500</b>系列MCU主要功能特性介绍

    恩智浦LPC55S16 MCU获得了PSA 2级和SESIP 2级保证认证

    LPC55S16 MCU属于恩智浦EdgeVerse™计算和安全产品组合,是基于Arm® Cortex®-M33内核的通用LPC5500 MCU系列的成员。
    发表于 11-21 09:28 1754次阅读

    LPC55S69 Flashmagic不编程的原因?

    到我的主板。(这也为我的 PCB 供电)我遵循了 flashmagic 的设置:选择 USB LPC55S69。十六进制文件。设备 LPC55S69(USB
    发表于 03-15 07:54

    LPC5500 Flash过度编程是否可行?

    我了解 LPC5500 处理器具有带 ECC 的闪存,页面大小为 512 字节,用于擦除和编程。 在 LPC55S6x/LPC55S2x 用户手册的 5.7.13 ECC 部分,我发现它说 由于
    发表于 06-01 06:56

    INT0中断实验

    INT0中断实验。 1、按键中断实验。低电平中断,在中断改变PB1电平状态。&nbs
    发表于 06-30 11:22 3117次阅读

    基于8051的Proteus仿真-INT0及INT1中断计数

    基于8051的Proteus仿真-INT0及INT1中断计数
    发表于 09-01 23:29 33次下载

    基于8051的Proteus仿真-INT0中断计数

    基于8051的Proteus仿真-INT0中断计数
    发表于 09-01 23:29 13次下载

    使用51单片机的INT 0及INT 1中断计数的资料和程序免费下载

    本文档的主要内容详细介绍的是使用51单片机的INT 0及INT 1中断计数的资料和程序免费下载。
    发表于 09-02 17:28 0次下载
    使用51单片机的<b class='flag-5'>INT</b> 0及<b class='flag-5'>INT</b> 1<b class='flag-5'>中断</b>计数的资料和程序免费下载

    安全、高能、低耗!NXP正式开始量产LPC551x

    LPC551x/S1x作为系列的入门级产品,提供出色的能效比的同时,依然继承了LPC5500系列的诸多安全功能。使其除了在物联网应用中游刃有余,还能扩展应用到消费类及工业自动化领域。
    的头像 发表于 06-03 11:25 4836次阅读

    单片机实验INT0及INT1中断计数的程序和仿真资料免费下载。

    本文档的主要内容详细介绍的是单片机实验INT0及INT1中断计数的程序和仿真资料免费下载。
    发表于 06-05 16:55 4次下载
    单片机实验<b class='flag-5'>INT</b>0及<b class='flag-5'>INT</b>1<b class='flag-5'>中断</b>计数的程序和仿真资料免费下载。

    串口DMA发送+中断接收的例程

    LPC5500的SDK中提供了非常丰富的串口例程(如下图所示)。
    的头像 发表于 07-21 09:14 2734次阅读

    LPC5500USBFRAME_INT中断问题

    这个中断 ”感觉好像就是SOF中断”,似乎只是名字换成了FRAME_INT,在手册的描述也和SOF中断几乎一样,但是手册里就是没有说它就是
    发表于 12-15 10:38 509次阅读

    基于AT89C51单片机INT0及INT1中断计数仿真及代码

    基于AT89C51单片机INT0及INT1中断计数仿真及代码
    发表于 05-04 14:53 0次下载

    LPC5500_SDK例程:串口DMA发送+中断接收

    LPC5500_SDK例程:串口DMA发送+中断接收
    的头像 发表于 10-30 16:59 1092次阅读
    <b class='flag-5'>LPC5500</b>_SDK例程:串口DMA发送+<b class='flag-5'>中断</b>接收