在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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
    +關注

    關注

    60

    文章

    8152

    瀏覽量

    271406
  • 代碼
    +關注

    關注

    30

    文章

    4891

    瀏覽量

    70370
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Debian和Ubuntu哪個好一些

    兼容性對比Debian和Ubuntu哪個好一些,并為您揭示如何通過RAKsmart服務器釋放Linux系統的最大潛能。
    的頭像 發表于 05-07 10:58 ?266次閱讀

    在FX2LP USB上配置GPIF中斷時遇到一些問題,求解決

    你好,我在 FX2LP USB 上配置 GPIF 中斷時遇到一些問題。 我啟用了 INT4 中斷并從 GPIF 中選擇了源 INT4,然后啟用了 GPIF 完成中斷,但我看不到中斷 4 工作。 我該如何做呢?
    發表于 05-06 08:00

    如何添加一些網絡上的庫到mpy固件的說明或手冊教程?

    下有沒有關于如何添加一些網絡上的庫到mpy固件的說明或手冊教程? 問題2: 關于mpy的image庫在哪里能了解學習內部代碼,只了解一些python,想知道怎么從c轉換成mpy能調用的
    發表于 04-29 08:16

    如何定義輪詢間隔和最大數據包大小?

    LPC5516 SDK 和 dev_hid_generic_lite_bm 示例: 我相信輪詢間隔和最大數據包大小是在 usb_device_descriptor.c 中定義的: uint8_t
    發表于 04-04 07:20

    收藏的一些庫存,直流無刷技術+源碼+論文(建議打包)

    這也是我網絡上淘過來收藏的一些資料,免費跟大家起分享下,建議下載哦,收藏不易
    發表于 03-17 20:17

    在i.MX RT 1176上正常運行代碼時與使用IAR調試代碼時存在一些奇怪的差異,為什么?

    我在 i.MX RT 1176 上正常運行代碼時的行為與使用 IAR 調試代碼時的行為之間存在一些奇怪的差異,并注意到這是由于堆棧指針的初始化方式造成的。 我的重置向量表將其指向 DTC 的頂部
    發表于 03-17 07:26

    LT5516 800MHz至1.5GHz直接轉換正交解調器技術手冊

    LT5516款專為高線性度接收器應用而優化的 800MHz 至 1.5GHz 直接轉換正交解調器。 它適用于將 RF 或 IF 信號直接轉換成具有高達 260MHz 帶寬的 I 和 Q 基帶
    的頭像 發表于 03-02 16:34 ?398次閱讀
    LT<b class='flag-5'>5516</b> 800MHz至1.5GHz直接轉換正交解調器<b class='flag-5'>技術</b>手冊

    USB/UART橋接器的應用優勢

    切都要歸功于USB/UART橋接器——它們是嵌入式系統中的強大工具。無論您是從事調試、物聯網還是工業應用,了解此橋接器都可以簡化硬件集成并提高通信可靠性。以下是USB/UART橋接如何簡化這些連接以及
    的頭像 發表于 12-03 13:52 ?757次閱讀
    <b class='flag-5'>USB</b>/UART橋接器的應用優勢

    一些常見的動態電路

    無論是模電還是數電,理論知識相對來說還是比較枯燥,各種電路原理理解清楚不算容易,換種生動形象的方式或許會增加一些趣味性,也更容易理解這些知識。下面整理了一些常見的電路,以動態圖形的方式展示。 整流
    的頭像 發表于 11-16 09:26 ?1022次閱讀
    <b class='flag-5'>一些</b>常見的動態電路

    分享一些常見的電路

    理解模電和數電的電路原理對于初學者來說可能比較困難,但通過一些生動的教學方法和資源,可以有效地提高學習興趣和理解能力。 下面整理了一些常見的電路,以動態圖形的方式展示。 整流電路 單相橋式整流
    的頭像 發表于 11-13 09:28 ?765次閱讀
    分享<b class='flag-5'>一些</b>常見的電路

    LED驅動器應用的一些指南和技巧

    電子發燒友網站提供《LED驅動器應用的一些指南和技巧.pdf》資料免費下載
    發表于 09-25 11:35 ?0次下載
    LED驅動器應用的<b class='flag-5'>一些</b>指南和技巧

    【龍芯2K0300蜂鳥板試用】IO和串口腳本測試遇到一些問題

    這會沒有報錯哈,還提示我們怎么用,但是想想說明里面測試的是串口0 和串口3,但是實際我們接的是串口1,2,3,再根據log提示,可能我們需要改下測試命令,經過我的幾次嘗試后,最終串口測試成功,希望文檔盡可能的在完善一些
    發表于 09-01 22:28

    關鍵指南針-NXP USB CDC_VCOM虛擬串口例程

    最近有小伙伴反應USB中的 usb_examples/usb_device_cdc_vcom 例程(USB虛擬串口VCOM)中的一些使用問題
    的頭像 發表于 07-25 09:17 ?2751次閱讀
    關鍵指南針-NXP <b class='flag-5'>USB</b> CDC_VCOM虛擬串口例程

    咨詢一些關于LED燈具的問題

    各位大佬,咨詢一些關于LED燈具的問題 120W的吸頂燈,用的非隔離式電源,用不到1年,燈具就會閃爍、頻閃或不亮,主要是什么原因造成的?是不是驅動芯片太差?
    發表于 07-02 22:33

    esp32-s2的usb只支持host模式不能作為usb-hid設備被pc使用嗎?

    S2的usb只支持host模式不能作為usb-hid設備被pc使用嘛? WiFi tof百度搜索不到有效的信息,能否提供一些技術原理上的說明
    發表于 06-25 07:04
    主站蜘蛛池模板: riav久久中文一区二区 | 午夜精品视频在线看 | 99久久免费精品高清特色大片 | 精品国产影院 | 国语自产免费精品视频一区二区 | 久色国产 | 女人张开腿双腿让男人桶 | 四虎国产精品永久在线播放 | 黑人性xxxⅹxxbbbbb | 午夜国产精品视频 | 日本综合在线 | 你懂的网站在线观看网址 | 久久精品美女 | 美女视频永久黄网站免费观看国产 | 全黄色一级片 | 五月婷激情 | 亚洲一区二区影视 | 国产美女作爱全过程免费视频 | 国产成人毛片视频不卡在线 | 亚洲乱亚洲乱妇41p 亚洲乱亚洲乱妇41p国产成人 | 狠狠色伊人亚洲综合第8页 狠狠色依依成人婷婷九月 狠狠色影院 | 99xxxx开心| 天堂最新版资源www在线 | 亚洲天堂亚洲天堂 | 99久久精品免费看国产 | 午夜免费片 | 五月婷色 | 香焦视频在线观看黄 | 女人张开腿让男人桶视频免费大全 | 俄罗斯毛片基地 | 四虎影视永久在线观看 | 手机看片国产免费现在观看 | 成人欧美一区二区三区黑人3p | 成人免费淫片95视频观看网站 | 国产在线精品美女观看 | 日韩欧美亚洲综合久久影院d3 | 成人黄色免费看 | 又粗又大又猛又爽免费视频 | 免费人成在线观看视频色 | 狠狠做深爱婷婷综合一区 | 在线观看色视频网站 |