0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

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

3天内不再提示

学技术 | LPC5516 USB 代码的一些说明

大大通 2023-02-13 14:19 次阅读

概述

在前两篇文章中,我们针对 LPC 的键鼠项目开发时,对于 LPC USB 代码流程的讲解,让大家对于代码的架构以及流程有所了解。在本篇中以及后续的文档中不定期将对于之前没有说明的部分进行补充说明,大家可以当做番外篇或者 DLC 来看。

DLC内容

1. 在使用原厂的 SDK demo 时,大家应该能够发现一个情况:在编译下载键鼠的例程到开发板之后,只要设备通过 USB 线接上电脑上电后,就会不停地画框(鼠标例程)或者上下翻页(键盘例程)。例程中是通过在三个地方中添加函数来实现的,由于键鼠两个例程都是相同的位置,我这边就以鼠标例程来进行说明。其中我们可以在例程中找到主要实现鼠标画框的函数为USB_DeviceHidMouseAction,如下图所示:

baea90f4-a8d3-11ed-ad0d-dac502259ad0.png

主要调用的三个地方分别为:kUSB_DeviceHidEventSendResponse、kUSB_DeviceEventSetConfiguration以及kUSB_DeviceEventSetInterface 这三个地方进行调用。

其中kUSB_DeviceHidEventSendResponse 这个事件是在设备发送完 USB 数据之后底层回报的事件,用以通知数据发送完成或者取消的结果,而例程中在这里添加发送函数的作用是循环发送鼠标数据。流程如下图所示:

bb15a28a-a8d3-11ed-ad0d-dac502259ad0.png

而剩下的两个事件就是在设备上电工作时进行 USB 配置完成后开始传输的时间,处理流程如下:

bb43e956-a8d3-11ed-ad0d-dac502259ad0.png

其中可以看出当底层协议栈接收到主机端设置配置或者接口请求之后,会通过这两个事件通知到应用程序中,可以准备发送 USB 数据了。如果在开发代码时,可以将 USB_DeviceHidMouseAction 函数干掉,或者修改成符合自己需要的发送函数,并且将这三个事件中调用该函数的代码干掉,其中在 kUSB_DeviceEventSetInterface以及kUSB_DeviceEventSetConfiguration 函数中添加相关的标志位,用于提示可以准备发送数据了,而 kUSB_DeviceHidEventSendResponse 事件中可以根据通知结果添加自己对应的后续操作。

2. 在开发项目的过程中,还有一个常用的功能需要添加的,就是当主机休眠时,设备需要执行 Suspend 以及后续的 Resume 的唤醒功能。对此,SDK 中有一个相关的例程

dev_suspend_resume_hid_mouse 可以参考,首先需要在 .h 中将 USB 的 Lowpower 功能打开,如下图所示:

bb757e3a-a8d3-11ed-ad0d-dac502259ad0.png

这样的话才能确保到相应的 Suspend 以及 Resume 的事件能够在 SDK 中运行,具体可以例程搜索 USB_DEVICE_CONFIG_LOW_POWER_MODE。其中代码中会在 USB 中断 USB_DeviceLpcIp3511IsrFunction 中查询 USB device 的状态寄存器 DEVCMDSTAT 中关于 DSUS_C bit,如下图所示:

bbb23e38-a8d3-11ed-ad0d-dac502259ad0.png

如果 DSUS_C 位被置 1 就说明设备将处于这三个状态中:需要进入 Suspend 状态;设备断开连接;设备接收到 Resume 信号。那么如何区别这些状态咧?就需要继续查看寄存器中 DSUS bit,如下图所示:

bbe308c4-a8d3-11ed-ad0d-dac502259ad0.png

当DSUS bit 置1,则表明设备已经超过 3ms 没有发送 SOF 信号来维持活跃状态,需要执行 Suspend 操作,而DSUS bit没有置 1 而 DSUS_C bit 置 1,则表明设备接收到了 Resume 信号,需要执行 Resume 操作。在通过 SDK 中标准和类驱动中,最后传输到应用程序中是USB_DeviceCallback 函数中 kUSB_DeviceEventSuspend 以及 kUSB_DeviceEventResume,SDK 是在这两个事件中通过设置对应的标志位,然后通过一个任务不断查看这些标志位来进行对应的操作。

总结

在本篇中主要是描述了键鼠例程中发送函数的流程和对应事件,以及如何修改添加自己的发送函数;还有就是关于 USB 主机关机休眠时,设备执行 Suspend & Resume 操作时的流程。后续会随着对于 USB 的深入了解再继续推出补充说明。

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

    关注

    59

    文章

    7521

    浏览量

    260032
  • 代码
    +关注

    关注

    30

    文章

    4585

    浏览量

    67208
收藏 人收藏

    评论

    相关推荐

    一些有关通信电路的资料?

    有关嵌入式之间DSP、ARM、FPGA三者之间和这三款芯片和外部电路之间通信的一些资料,比如说芯片之间的并行通信和芯片和外部电路之间的串行通信,MODBUS、DP、CAN等,一些一些常用的通信协议的
    发表于 03-03 18:53

    对于绘制USB DRP架构的一些疑问求解

    我正在绘制新系统的架构,对此有一些疑问: 1) 通常左侧板有 20V 固定电源,将通过 TypeC 端口向右板提供 20V。 a) Vbus 通过 Mosfets 直接连接到 20V,如果谈判失败
    发表于 02-23 06:31

    有关射频技术无线传输的一些问题

    ,如无线电波,微波,米波,这些频率段的信号是怎么由设备产生的,尤其是一些高频波高达几个HZ? 3、蓝牙传输技术,快牙,华为最新研究的近距离无线传输技术叫什么的,电脑近距离建立的局域网技术
    发表于 02-03 14:42

    一些无功补偿装置SVG的资料

    一些SVG电路原理和功能码相关的技术说明书,想了解一些SVG的工作原理和工作过程
    发表于 02-03 10:13

    PSOC Creator 4.4中是否有一些设置可以阻止strtok操作?

    我需要一些帮助才能开始使用这个功能。 我做了个简单的代码,意图用逗号作为分隔符来标记字符串。 我尝试在 PC 上模拟以下代码并将其改编为 PSoc5LP: [i]int 主要 ()
    发表于 01-24 08:31

    有关通信协议时一些问题?

    工业上应用到许多种协议,按通信同时刻发送的数据位数分为串行通信和并行通信,首先我见并行通信多在芯片之间进行通信,而串行通信则在外部设备和芯片之间进行的一些通信,对于常见的串行通信,比如
    发表于 01-14 00:58

    变频电机和YZR电机哪个更好一些

    变频电机和YZR电机,谁更好一些
    发表于 11-23 08:10

    关于LPC5500中USB的FRAME_INT中断

    关于LPC5500中USB的FRAME_INT中断
    的头像 发表于 10-30 18:26 362次阅读
    关于<b class='flag-5'>LPC</b>5500中<b class='flag-5'>USB</b>的FRAME_INT中断

    一些FreeRTOS系统的usb命令使用方法

    在全志R128开发过程中总结一些RTOS系统的usb命令使用方法,以下命令在所有RTOS平台(MELIS/FREERTOS)都可以使用 通过menuconfig打开usb模块功能 RTOS通过
    发表于 10-16 13:47

    基于LPC2292的CAN总线USB接口适配器的设计

    电子发烧友网站提供《基于LPC2292的CAN总线USB接口适配器的设计.pdf》资料免费下载
    发表于 10-09 16:53 1次下载
    基于<b class='flag-5'>LPC</b>2292的CAN总线<b class='flag-5'>USB</b>接口适配器的设计

    一些AVR的单片机没有USB外设,但是可以接usb是为什么?

    一些AVR的单片机,没有USB外设,但是可以接usb,为什么
    发表于 09-25 08:14

    stm32f429系列和lpc1769哪个抗干扰好一些

    stm32f429系列和lpc1769哪个抗干扰好一些
    发表于 09-20 07:07

    单片机有前途吗?

    单片机有前途吗? 个人认为学习任何技术都比不学的强,针对单片机有前途吗?那么比较对象当然就是在整个IT行业做对比。因此我们可以从职业前景、钱景、这几方面综合考量。
    发表于 09-06 10:59

    PI3USB30532和PI3USB31532 C型应用说明

    电子发烧友网站提供《PI3USB30532和PI3USB31532 C型应用说明.pdf》资料免费下载
    发表于 07-25 09:37 0次下载
    PI3<b class='flag-5'>USB</b>30532和PI3<b class='flag-5'>USB</b>31532 C型应用<b class='flag-5'>说明</b>

    分享一些Python代码加速工具

    这篇文章会提供一些优化代码的工具。会让代码变得更简洁,或者更迅速。
    发表于 07-07 11:18 283次阅读