日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2025年05月09日(星期五)

正在發(fā)生

2019年05月09日 | 技術(shù)文章:AWorks下USB設(shè)備模式的編程與應(yīng)用

發(fā)布者:cocolang 來源: ZLG立功科技·致遠電子關(guān)鍵字:AWorks  USB 手機看文章 掃描二維碼
隨時隨地手機看文章

USB是英文Universal Serial Bus(通用串行總線的縮寫),是一種快速、靈活的總線接口。USB對所有的USB外設(shè)提供了單一的易于使用的標(biāo)準的連接類型,簡化了USB外設(shè)的設(shè)計。USB接口支持熱插拔,計算機系統(tǒng)可以動態(tài)地檢測外設(shè)的插拔,并且動態(tài)地加載驅(qū)動程序。另外,USB還具有很靈活的擴展性,一個USB端口接上一個USB HUB(集線器)就可以擴展多個USB端口。USB廣泛的應(yīng)用于PC機中的人機接口、音頻、存儲等功能,隨著嵌入式系統(tǒng)在各個領(lǐng)域上廣泛應(yīng)用,USB也在嵌入式系統(tǒng)中被廣泛的使用。


一、USB簡介


USB是在1994年底由英特爾、康柏、IBM、Microsoft等多家公司聯(lián)合提出。ISB1.1是較為普遍的USB規(guī)范,其高速方式的傳輸速率是12Mbps,低速模式的傳輸速率為1.5Mbps(b是bit的意思,12Mbps=1.5MB/s),USB2.0規(guī)范是由USB1.1規(guī)范演變而來,它的傳輸速率達到了480Mbps,足以滿足大多數(shù)外設(shè)的速率要求。USB2.0中的EHCI(增強主機控制器接口)定義了一個與USB1.1相兼容的結(jié)構(gòu)。它可以用USB2.0的驅(qū)動程序驅(qū)動USB1.1的設(shè)備,也就是說所有支持USB1.1的設(shè)備都可以直接在USB2.0的接口上使用而不必擔(dān)心兼容性問題。USB采用四線電纜,其中兩根是用來傳送數(shù)據(jù)的串行通道,另兩根為下游設(shè)備提供電源,對于任何已經(jīng)成功連接且相互識別的外設(shè),將以對方設(shè)備均能夠支持的最高速率傳輸數(shù)據(jù)。USB總線會根據(jù)外設(shè)情況在所兼容的傳輸模式中自動地由高速向低速動態(tài)轉(zhuǎn)換且匹配鎖定在合適的速率。USB系統(tǒng)采用級聯(lián)星型拓撲,該拓撲由三個基本部分組成:主機,集線器和功能設(shè)備。


主機包含有主控制器和根集線器,控制著USB總線上的數(shù)據(jù)和控制信息的流動,每個USB系統(tǒng)只能有一個根集線器,它連接在主控制器上。


集線器是USB結(jié)構(gòu)中的特定成分,它可以對原有的USB端口在數(shù)量上進行擴展以獲得更多的USB端口(集線器只能擴展出更多的USB端口,而不能擴展出更多的帶寬),設(shè)備通過端口連接到USB總線上,同時檢測連接在總線上的設(shè)備,并為這些設(shè)備提供電源管理,負責(zé)總線的故障檢測和恢復(fù)。集線可為總線提供能源,亦可為自身提供能源。功能設(shè)備通過端口與總線連接。


本文章以M1052平臺為例,主要講解在AWorks平臺中如何創(chuàng)建一個自定義的USB設(shè)備。


二、AWorks工程配置


在AWorks工程中,用戶可以通過aw_prj_params.h配置文件進行設(shè)備添加與刪除,aw_prj_params.h在工程目錄user_config中。


在aw_prj_params.h文件中,有效定義設(shè)備的使能宏,才表示一個有效的硬件設(shè)備,在本文章中我們需要使能USB Device,所以在aw_prj_params.h中添加AW_DEV_IMX1050_USBD設(shè)備宏。  


  #define AW_DEV_IMX1050_USBD             /**< brief USB Device */


在aw_prj_params.h中添加AW_DEV_IMX1050_USBD設(shè)備宏之后,在aw_prj_param_auto_cfg.h文件中會自動添加AW_COM_USBD的定義,AW_COM_USBD代表的是USB Device協(xié)議棧組件。此處要注意AW_DEV_IMX1050_USBD與AW_DEV_IMX1050_USBH1有沖突(一個USB控制器不能同時出現(xiàn)主機設(shè)備模式),兩個只能使能一個。AW_DRV_IMX1050_USBD表示加載USB Device的驅(qū)動:


/**

 * name 內(nèi)部USB Device控制器

 * @{

 */

#ifdef AW_DEV_IMX1050_USBD

#ifndef AW_COM_USBD

#define AW_COM_USBD

#endif

#define AW_DRV_IMX1050_USBD

#endif


三、AWorks中USB Device的硬件配置


在AWorks中所有設(shè)備集中由AWbus_lite進行管理,在使用一個硬件設(shè)備前,必須將其添加到系統(tǒng)硬件設(shè)備列表(在awbus_lite_hwconf_usrcfg.c中定義),各個硬件設(shè)備的類型為struct awbl_devhcf。USB設(shè)備相關(guān)硬件配置可以查閱工程目錄下的user_configawbl_hwconf_usrcfgawbl_hwconf_imx1050_usbd.h文件,USB設(shè)備模式的設(shè)備信息詳見程序清單2.1。


程序清單2.1  USB設(shè)備模式的設(shè)備信息類型定義


1

aw_local aw_const struct awbl_imx1050_usbd_info  __g_imx1050_usbd_info = {

2

    {

3

        "/dev/usbd",                 /**< 控制器名字 */

4

        AWBL_USBD_CFG_SELF_POWERED  /**< 控制器配置信息*/

5

    },

6


7

    IMX1050_USB1_BASE_ADDR,         /**< 寄存器基地址 */

8

    IMX1050_USBPHY1_BASE_ADDR,      /**< USB PHY寄存器基地址 */

9

    INUM_USB_OTG1,                   /**< USB 中斷號*/

10

    5,                                /**< 處理usb中斷業(yè)務(wù)的任務(wù)優(yōu)先級 */

11

    32,

12

    __imx1050_usbd_plfm_init                  /**< 平臺相關(guān)初始化:初始化時鐘 */

13

};

14



其中"/dev/usbd" 是USB Device外設(shè)的設(shè)備名字,在實際的應(yīng)用中需要通過該名字來使用USB Device

AWBL_USBD_CFG_SELF_POWERED 表示本設(shè)備為自行供電設(shè)備。__imx1050_usbd_plfm_init函數(shù)是用來初始化與USB Device平臺相關(guān)的信息,在這里是初始化USB Device時鐘,詳見程序清單2.2。

程序清單2.2  USB設(shè)備模式的平臺初始化函數(shù)


1

aw_local void __imx1050_usbd_plfm_init (void) {

2

    /* 配置USB Device時鐘 */

3

    usbd_clk_init();

4

};


四、與USB Device操作函數(shù)相關(guān)重要結(jié)構(gòu)體介紹


USB設(shè)備類回調(diào)函數(shù)列表,這個結(jié)構(gòu)體用于提供USB枚舉以及USB通信過程中的事件回調(diào)接口,方便用戶接入應(yīng)用代碼:

 

/** brief USB設(shè)備類回調(diào)函數(shù)列表 */

struct aw_usbd_cb {

    /** brief 控制器鏈接到設(shè)備 */

    int (*pfn_link) (struct aw_usbd *p_obj);

    /** brief 控制器和設(shè)備斷開鏈接 */

    int (*pfn_unlink) (struct aw_usbd *p_obj);

    /** brief 接收到SETUP包 */

    int (*pfn_ctrl_setup) (struct aw_usbd        *p_obj,

                           struct aw_usb_ctrlreq *p_setup,

                           void                  *p_buf,

                           int                    buf_len);

    /** brief 設(shè)置或清除配置 */

    int (*pfn_config_set) (struct aw_usbd      *p_obj,

                           struct aw_usbd_cfg  *p_cfg,

                           bool_t               set);

    /** brief 總線掛起 */

    void (*pfn_suspend) (struct aw_usbd *p_obj);

    /** brief 總線恢復(fù) */

    void (*pfn_resume) (struct aw_usbd  *p_obj);

    /** brief 總線斷開連接 */

    void (*pfn_disconnect) (struct aw_usbd *p_obj);

};

 

USB設(shè)備信息結(jié)構(gòu)體,此結(jié)構(gòu)體用于配置USB設(shè)備的基礎(chǔ)信息(具體信息詳見結(jié)構(gòu)體定義),當(dāng)設(shè)備連接到PC端后,可以在PC端查看到這些信息:


/** brief USBD信息結(jié)構(gòu)定義 */

struct aw_usbd_info {

    uint8_t          clss;          /**< brief 類代碼 */

    uint8_t          sub_clss;      /**< brief 子類代碼 */

    uint8_t          protocol;      /**< brief 協(xié)議代碼 */

    uint8_t          mps0;          /**< brief 端點0包最大尺寸 */

    uint16_t         bcd;           /**< brief 設(shè)備版本號 */

    uint16_t         vid;           /**< brief 廠商ID */

    uint16_t         pid;           /**< brief 產(chǎn)品ID */

    const char      *manufacturer;  /**< brief 制造商字符串描述 */

    const char      *product;       /**< brief 產(chǎn)品字符串描述 */

    const char      *serial;        /**< brief 序列號字符串描述 */

};


USB設(shè)備接口信息結(jié)構(gòu)體,這個結(jié)構(gòu)體是用來描述當(dāng)前USB設(shè)備接口的信息:


/** brief USBD接口信息 */

struct aw_usbd_fun_info {

    uint8_t       clss;         /**< brief 類代碼 */

    uint8_t       sub_clss;     /**< brief 子類代碼 */

    uint8_t       protocol;     /**< brief 協(xié)議代碼 */

 

    /** brief 替代設(shè)置回調(diào) */

    int (*pfn_alt_set) (struct aw_usbd_fun  *p_fun,

                        bool_t               set);

 

    /** brief setup控制傳輸回調(diào) */

    int (*pfn_ctrl_setup) (struct aw_usbd_fun    *p_fun,

                           struct aw_usb_ctrlreq *p_setup,

                           void                  *p_buf,

                           int                    buf_len);

};

 

五、USB Device操作接口


Aworks提供了一系列的USB Device操作相關(guān)的標(biāo)準接口,包括初始化一個USB設(shè)備、USB功能初始化、啟動USB設(shè)備和USB數(shù)據(jù)傳輸?shù)龋脩粼谑褂肁works開發(fā)USB Device的應(yīng)用程序時,使用上述標(biāo)準接口就能方便快捷的開發(fā)出源代碼。詳見表4.1


表4.1  USB設(shè)備模式操作接口函數(shù)

image.png

●  struct aw_usbd_fun    為功能接口對象

●  struct aw_usbd        為USB Device對象

●  struct aw_usbd_pipe   為端點管道對象


六、應(yīng)用案例代碼詳解


這里基于M1052平臺,展示如何創(chuàng)建一個自定義的USB設(shè)備。本例子會初始化一個USB設(shè)備,為USB設(shè)備創(chuàng)建一個OUT管道和一個IN管道用于接收和發(fā)送數(shù)據(jù)(IN和OUT的概念是相對于USB主機而言),并在這個USB設(shè)備添加接口功能。通過USB設(shè)備與PC機的連接,實現(xiàn)與PC的通訊,當(dāng)PC機上位機軟件發(fā)送數(shù)據(jù)時,USB設(shè)備通過OUT管道接收數(shù)據(jù),并通過IN管道把收到的數(shù)據(jù)發(fā)送回PC端上位機。這里只對部分關(guān)鍵的代碼進行講解,完整的代碼請自行下載查看,本例程所在目錄位于examplesperipheralcommonusb demo_usbd_vendor.c

[1] [2]
關(guān)鍵字:AWorks  USB 引用地址:技術(shù)文章:AWorks下USB設(shè)備模式的編程與應(yīng)用

上一篇:小米8屏幕指紋版要來?官方暗示:壓感指紋識別
下一篇:Zwipe和英飛凌就生物識別支付達成合作協(xié)議

推薦閱讀

全球知名半導(dǎo)體制造商ROHM為加強需求日益擴大的SiC功率元器件的生產(chǎn)能力,決定在ROHM Apollo Co., Ltd.(日本福岡縣)的筑后工廠投建新廠房。新廠房為地上3層建筑,總建筑面積約11,000㎡?,F(xiàn)在,具體設(shè)計工作正在有條不紊地進行,預(yù)計將于2019年動工,于2020年竣工。ROHM自2010年開始量產(chǎn)SiC功率元器件(SiC-SBD、SiC-MOSFET)以來,于世界首家量產(chǎn)“全SiC...
據(jù)外媒報道,在整個Apple Park的建設(shè)過程中,無人機視頻幾乎會每月更新,但隨著建設(shè)的結(jié)束,蘋果開始停止發(fā)布無人機視頻。然而今天,鄧肯·辛菲爾德發(fā)布了六個月以來第一次Apple Park無人機視頻。最新的Apple Park無人機視頻同樣拍攝了美麗的景色。視頻還展示了附近的史蒂夫喬布斯劇院和Apple Park精心設(shè)計的停車場。值得注意的一件事是,在今天的無人...
在醫(yī)療成像領(lǐng)域,以機器學(xué)習(xí)(ML)和深度學(xué)習(xí)( DL )技術(shù)為代表的人工智能( AI )的普及勢必將推動這一領(lǐng)域的轉(zhuǎn)型。憑借各種機器學(xué)習(xí)驅(qū)動的工具,所有醫(yī)療生態(tài)系統(tǒng)內(nèi)的患者、醫(yī)療服務(wù)提供商、醫(yī)院、專業(yè)人士以及各利益相關(guān)方都將因此受益。從解剖學(xué)幾何測量到癌癥檢測,應(yīng)用前景可謂十分廣闊。而在這些應(yīng)用場景下,機器學(xué)習(xí)發(fā)揮的作用既包括提升工作...
正所謂一切過往皆為序章。2020年7月英偉達的市值超過英特爾市值,GPU公司在半導(dǎo)體公司中市值成為No.1,可謂GPU發(fā)展史上的里程碑事件,GPU亦迎來了飛瀑直瀉的“新拐點”,走出了從配角走向主角并持續(xù)大放異彩的“芯”劇情。來看看GPU的“逐鹿”舞臺:一方面,GPU持續(xù)在企業(yè)數(shù)字化轉(zhuǎn)型升級、數(shù)據(jù)可視化、人工智能、高性能計算、自動駕駛等應(yīng)用領(lǐng)域深度拓展;...

史海拾趣

問答坊 | AI 解惑

紋波電流計算方法

紋波電流計算方法…

查看全部問答∨

單片機語言C51應(yīng)用實戰(zhàn)集錦

單片機語言C51應(yīng)用實戰(zhàn)集錦…

查看全部問答∨

將要進入嵌入軟件開發(fā) 的人

各位大哥們,我還是一個大一的學(xué)生,現(xiàn)在聽說嵌入開發(fā)還可以,所以就有一點想向這一方面發(fā)展,但是現(xiàn)在在我面前的一個問題就是 我不知道要學(xué)那些東西,我也是一個計算機班的學(xué)生,這是不是有很大的優(yōu)點. 所以就想問一下大哥們的應(yīng)該出什么方向入手好一 ...…

查看全部問答∨

nb0和nb1的問題

小弟最近用wince5.0編譯內(nèi)核,發(fā)現(xiàn)在某些情況下會生成。nb1文件,比如說eboot.nb1這種情況看了一些說法是eboot.nb0空間不夠存放內(nèi)核,所以放到eboot.nb1中,但是查看eboot.bin文件發(fā)現(xiàn)空間還多的是。在有些時候會出現(xiàn)上面的情況。我用的AT91SAM9261 ...…

查看全部問答∨

請教找ST芯片供貨?

我想問下,深圳的ST供應(yīng)商這些怎么查,一級代理商怎么查? 像我們?nèi)绻麕滋煲?000PCS這樣的量的,一級代理商會理嗎?而且周期比較長?!?

查看全部問答∨

vpm642的電源tps54310

我用vpm642開發(fā)板,的電源芯片tps54310壞了,自己換的,發(fā)現(xiàn)電流增大了300mA,現(xiàn)在是1A,一會cpu就燙手,程序很容易跑飛,時間久了cpu會不斷的復(fù)位,只能歇會再用。好多程序要調(diào)幾次才能成功,對于Date-copy指令,傳送一次(720個數(shù))可以,可是加 ...…

查看全部問答∨

LM3S811開發(fā)板小問題2

最近仔細看了看板子,開發(fā)板很多過孔,原本覺得是板子布線不好呢,但是怎么想都不對,有很多過孔并沒有參加到電路之中啊,請論壇中的大?;蛘吖芾韱T解釋解釋好嗎???為什么設(shè)置那么多過孔呢,在我看來一定是有什么特殊的作用 …

查看全部問答∨

Linux 2.6.36內(nèi)核移植飛凌OK6410開發(fā)板完整步驟詳解

  今天終于讓Linux內(nèi)核在飛凌的板子上跑起來了,想來也是艱辛,為了移植成功,斷斷續(xù)續(xù)做了將近兩個月的努力,期間郁悶不可言 語形容啊,   了解其中艱辛,將自己移植步驟與心得與大家分享,希望對初踏次領(lǐng)域之人有所幫助,我所寫 ...…

查看全部問答∨
小廣播
最新手機便攜文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved