1. <dl id="luayj"></dl>

        <dl id="luayj"></dl>

          
          
            1. <dl id="luayj"></dl>
            2. <dl id="luayj"></dl>
              <dl id="luayj"></dl><dl id="luayj"></dl>
              <output id="luayj"></output>

              <output id="luayj"></output>
                    <dl id="luayj"><ins id="luayj"></ins></dl>

                      1. 您好, 登录| 注册|
                        论坛导航
                        您好, 登录| 注册|
                        子站:
                        产品/技术
                        应用分类

                        AWorks 框架下 USB设备模式的编程与应用

                        2019-05-09 09:53 来源:ZLG立功科技·?#30053;?#30005;子 编辑:电源网

                        USB是英文Universal Serial Bus(通用串行总线的缩写),是一种快速、灵活的总线接口。USB对所有的USB外设提供了单一的易于使用的标准的连接类型,简化了USB外设的设计。USB接口支持热插拔,计算机系统可以动态地检测外设的插拔,并且动态地加载驱动程序。另外,USB还具有很灵活的扩展性,一个USB端口接上一个USB HUB(集线器)就可以扩展多个USB端口。USB广泛的应用于PC机中的人机接口、音频、存储等功能,随着嵌入式系统在各个领域上广泛应用,USB也在嵌入式系?#25345;斜还?#27867;的使用。

                        一、USB简介

                        USB是在1994年?#23376;?#33521;特尔、康柏、IBM、Microsoft等多家公司联合提出。ISB1.1是较为普遍的USB规范,其高速方式的传输速率是12Mbps,低速模式的传输速率为1.5Mbps(b是bit的意思,12Mbps=1.5MB/s),USB2.0规范是由USB1.1规范演变而来,它的传输速率达到了480Mbps,足以满足大多数外设的速率要求。USB2.0中的EHCI(增强主机控制器接口)定义了一个与USB1.1相兼容的结构。它可以用USB2.0的驱动程序驱动USB1.1的设备,也就是说所有支持USB1.1的设备都可以直接在USB2.0的接口上使用而不必担心兼容性问题。USB采用四线电缆,其中两根是用来传送数据的串行通道,另两根为下游设备提供电源,对于任何已经成功连接且相互识别的外设,将以对方设备均能够支持的最高速率传输数据。USB总线会根据外设情况在所兼容的传输模式中自动地由高速向低速动态转换且匹配锁定在合适的速率。USB系统采用级联星型拓扑,该拓扑由三个基本部分组成:主机,集线器和功能设备。

                        主机包含有主控制器和根集线器,控制着USB总线上的数据和控制信息的流动,每个USB系?#25345;?#33021;有一个根集线器,它连接在主控制器上。

                        集线器是USB结构中的特定成分,它可以对原有的USB端口在数?#21487;?#36827;行扩展以获得更多的USB端口(集线器只能扩展出更多的USB端口,而不能扩展出更多的带宽),设备通过端口连接到USB总线上,同时检测连接在总线上的设备,并为这些设备提供电源管理,负责总线的故障检测和恢复。集线可为总线提供能源,亦可为自身提供能源。

                        功能设备通过端口与总线连接。

                        本文章以M1052平台为例,主要讲解在AWorks平台中如?#26410;?#24314;一个自定义的USB设备。

                        二、AWorks工程配置

                        在AWorks工程中,用户可以通过aw_prj_params.h配置文件进行设备添加与删除,aw_prj_params.h在工程目录user_config中。

                        在aw_prj_params.h文件中,?#34892;?#23450;义设备的使能宏,才表示一个?#34892;?#30340;硬件设备,在本文章中我?#20999;?#35201;使能USB Device,所以在aw_prj_params.h中添加AW_DEV_IMX1050_USBD设备宏。  

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

                        在aw_prj_params.h中添加AW_DEV_IMX1050_USBD设备宏之后,在aw_prj_param_auto_cfg.h文件中会自动添加AW_COM_USBD的定义,AW_COM_USBD代表的是USB Device协议栈组件。此处要注意AW_DEV_IMX1050_USBD与AW_DEV_IMX1050_USBH1有冲突(一个USB控制器不能同时出?#31181;?#26426;设备模式),两个只能使能一个。AW_DRV_IMX1050_USBD表示加载USB Device的驱动:

                        /**

                        * \name 内部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中所有设备集中由AWbus_lite进行管理,在使用一个硬件设备前,必须将其添加到系统硬件设备列表(在awbus_lite_hwconf_usrcfg.c中定义),各个硬件设备的类型为struct awbl_devhcf。USB设备相关硬件配置可以查阅工程目录下的\user_config\awbl_hwconf_usrcfg\awbl_hwconf_imx1050_usbd.h文件,USB设备模式的设备信息详见程序清单2.1。

                        程序清单2.1  USB设备模式的设备信息类型定义

                        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中断业务的任务优先级 */

                        11    32,

                        12    __imx1050_usbd_plfm_init                  /**< 平台相关初始化:初始化时钟 */

                        13 };

                        14

                        其中"/dev/usbd" 是USB Device外设的设备名字,在?#23548;?#30340;应用?#34892;?#35201;通过该名字来使用USB Device

                        AWBL_USBD_CFG_SELF_POWERED 表示本设备为自行供电设备。__imx1050_usbd_plfm_init函数是用来初始化与USB Device平台相关的信息,在这里是初始化USB Device时钟,详见程序清单2.2。

                        程序清单2.2  USB设备模式的平台初始化函数

                        1 aw_local void __imx1050_usbd_plfm_init (void) {

                        2    /* 配置USB Device时钟 */

                        3    usbd_clk_init();

                        4 };

                        四、与USB Device操作函数相关重要结构体介绍

                        USB设备类回调函数列表,这个结构体用于提供USB枚举以及USB通信过程中的?#24405;?#22238;调接口,方便用户接入应用代码:

                        /** \brief USB设备类回调函数列表 */

                        struct aw_usbd_cb {

                           /** \brief 控制器链接到设备 */

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

                           /** \brief 控制器和设备断开链接 */

                           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 设置或清除配置 */

                           int (*pfn_config_set) (struct aw_usbd      *p_obj,

                                                  struct aw_usbd_cfg  *p_cfg,

                                                  bool_t               set);

                           /** \brief 总线?#31227;?*/

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

                           /** \brief 总线恢复 */

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

                           /** \brief 总线断开连接 */

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

                        };

                        1 2 3 下一页 
                        标签: AWorks USB设备

                        声明:本网站原创内容,如需转载,请注明出处;本网站转载的内容(文章、?#35745;?#35270;频)等资料版权归原网站所有。如我们采用了您不宜公开的文?#31108;蟯计?#26410;能及时和您确认,避免给双方造成不必要的经济损失,请电邮联系我们,以便迅速采取?#23454;?#22788;理措施?#25442;?#36814;投稿,邮箱:[email protected]

                        相关阅读

                        微信关注
                        技术专题 更多>>
                        2019年慕尼黑上海电子展电源网直播报道
                        全方位解读新半导体材料

                        头条推荐

                        2019慕尼黑上海电子展
                        客服热线
                        服务时间:周一至周五9:00-18:00
                        微信关注
                        免费技术研讨会
                        获取一手干货分享

                        互联网违法不良信息举报

                        Reporting Internet Illegal and Bad Information
                        [email protected]
                        022-58392381
                        新多宝彩票

                          1. <dl id="luayj"></dl>

                            <dl id="luayj"></dl>

                              
                              
                                1. <dl id="luayj"></dl>
                                2. <dl id="luayj"></dl>
                                  <dl id="luayj"></dl><dl id="luayj"></dl>
                                  <output id="luayj"></output>

                                  <output id="luayj"></output>
                                        <dl id="luayj"><ins id="luayj"></ins></dl>

                                              1. <dl id="luayj"></dl>

                                                <dl id="luayj"></dl>

                                                  
                                                  
                                                    1. <dl id="luayj"></dl>
                                                    2. <dl id="luayj"></dl>
                                                      <dl id="luayj"></dl><dl id="luayj"></dl>
                                                      <output id="luayj"></output>

                                                      <output id="luayj"></output>
                                                            <dl id="luayj"><ins id="luayj"></ins></dl>

                                                              1. 好运彩3公式排列3玩法 钻石谷试玩 benq明基24寸144hz电竞 塔什干棉农vS多哈萨 怪物聚集闯关 幸运武林 陕西麻将下载四人的 免费棋牌游戏平台下载 魔术箱免费试玩 杜塞多夫vs门兴比分预测 巴黎圣日耳曼vs圣埃蒂安 广西11选5任3技巧 传奇霸业外挂 微乐龙江麻将下载苹果 野狼彩金 七乐彩七乐彩走势图