返回首页
当前位置: 主页>USB开发应用>

基于keil C mdk开发环境的stm32的USB接口单片机程序设计

时间:2018-03-11 23:18来源:USB开发群 作者:USB开发频道 点击:

  

  首先,我们来看看usb的工作过程。

  当usb设备接入到主机时,主机开始枚举usb设备,并向usb设备发出指令要求获取usb设备的相关描述信息,其中包括设备描述(devICe descriptor)、配置描述(configuration descriptor)、接口描述(interface descriptor)、端点描述(endpoint descriptor)等。这些信息是通过端点0(endpoint 0)传送到主机的。获取各种描述信息后,操作系统会为其配置相应的资源。这样主机就可以与设备之间进行通信了。

织梦内容管理系统

  usb通讯有四种通讯方式控制(control)、中断(interrupt)、批量(bulk)和同步( synchronous)。usb通讯是通过管道(pipe)实现的。管道是一个抽象的概念,指的是主机与设备之间通讯的虚拟链路。不如说一个usb通讯 主机A和设备B,其中有bulk in(批量输入)、bulk out(批量输出)、control out(控制输出)三种通讯方式,那么A与B之间的通讯管道就有三个。(这里明确一个概念,在usb通信中数据流向都是相对设备来说的,in表示设备向主 机传送数据,out表示表示主机箱设备传输数据)。在设备一端,每个管道对应一个端点,端点配置相关的寄存器和缓冲区。在通讯之前需对端点进行相关设置。 在通信中,只需向缓冲写或读数据,并置位相关比特位即可。

内容来自dedecms

  下面具体从usb的中断输入输出来讲述基于keil C mdk开发环境的stm32的USB接口单片机程序设计。值得一提的是,st或相关公司给我们提供许多封装函数和相关例子,我们可以根据其中的例子并进行修改即可实现我们自己需要的usb通讯程序。 内容来自dedecms

  1.usb描述符配置 copyright dedecms

  从上面的讲述可以看出,usb描述符是usb通讯的前提。主机必须先了解设备后才能与其进行通讯。在st提供的例子中,描述符都在usb_des.c文件进行定义,下面就其中的Joystick例子说明usb描述负的配置。 织梦内容管理系统

  1.1设备描述符 本文来自织梦

  const u8 Joystick_DeviceDescriptor[JOYSTICK_SIZ_DEVICE_DESC] = dedecms.com

  { 内容来自dedecms

  0x12, /*本描述长度*/

dedecms.com

  USB_DEVICE_DESCRIPTOR_TYPE, /*指明为设备描述符*/ 织梦好,好织梦

  0x00,

内容来自dedecms

  0x02, 织梦好,好织梦

  0x00,

dedecms.com

  0x00, 织梦内容管理系统

  0x00, dedecms.com

  0x40, /*最大数据包大小为64字节(对于端点0而言)*/ 织梦内容管理系统

  0x84, /*生产商ID*/ 织梦好,好织梦

  0x19,

内容来自dedecms

  0x06, /*产品ID*/

织梦内容管理系统

  0x04,

本文来自织梦

  0x00, copyright dedecms

  0x02, 织梦内容管理系统

  1, 织梦内容管理系统

  2, 织梦好,好织梦

  3, dedecms.com

  0x01 /*配置描述符数目*/ 织梦好,好织梦

  } 织梦好,好织梦

  设备描述符两个重要参数是生产商ID和产品ID,主机将根据以上两个ID为设备选择相应驱动程序。在我们的应用中,我们一般只需修改例子中的这儿两个参数即可完成设备描述符的设置。

织梦好,好织梦

  1.2配置描述符

织梦好,好织梦

  const u8 Joystick_ConfigDescriptor[JOYSTICK_SIZ_CONFIG_DESC] = copyright dedecms

  {

本文来自织梦

  0x09,

copyright dedecms

  USB_CONFIGURATION_DESCRIPTOR_TYPE,

copyright dedecms

  JOYSTICK_SIZ_CONFIG_DESC, 织梦内容管理系统

  0x00, 内容来自dedecms

  0x01, /*接口数目*/ 内容来自dedecms

  0x01, /*Set_Configuration命令所需要的参数值*/ 织梦好,好织梦

  0x00, /*描述该配置的字符串的索引值*/ dedecms.com

  0xE0, /*供电模式的选择,bus供电、自供电、支持wakeup*/

织梦内容管理系统

  0x32, /*最大供电电流*/

本文来自织梦

  /************** 接口1配置****************/ 内容来自dedecms

  0x09,

本文来自织梦

  USB_INTERFACE_DESCRIPTOR_TYPE,

织梦内容管理系统

  0x00, /*接口编号*/ copyright dedecms

  0x00, 内容来自dedecms

  0x02, /*端点数*/

dedecms.com

  0x00,

织梦好,好织梦

  0x00,

织梦好,好织梦

  0x00, 织梦好,好织梦

  0, /*接口描述符索引值*/

织梦好,好织梦

  /******************** 端点1输出描述********************/ 内容来自dedecms

  0x07,

dedecms.com

  USB_ENDPOINT_DESCRIPTOR_TYPE,

本文来自织梦

  0x81, /*端点地址,b.7表示方向(1为in,0为out)b.0-b.3为端点标号*/ 织梦内容管理系统

  0x03, /*端点数据传输方式*/

dedecms.com

  0x08, /*最大数据包大小*/ 织梦好,好织梦

  0x00,

织梦内容管理系统

  0x20, dedecms.com

  /******************** 端点1输入描述********************/ 织梦内容管理系统

  0x07,

本文来自织梦

  USB_ENDPOINT_DESCRIPTOR_TYPE,

内容来自dedecms

  0x01, /*端点地址*/

织梦好,好织梦

  0x03, /*端点数据传输方式*/ 本文来自织梦

  0x40, /*最大数据包大小*/ 织梦好,好织梦

  0x00, dedecms.com

  0x20,

dedecms.com

  } copyright dedecms

  配置描述符中包括了接口、端点的配置。如果设备为HID设备,在配置描述符中还应加入HID描述,具体描述可以参照Joystick例子的配置。

copyright dedecms






秦华 『上海买保险』上海地区人寿保险资深寿险顾问 上海外籍人士买保险-高端人士医疗办理
服务项目:儿童医疗/子女教育金/养老保险/重大疾病/意外伤害/员工团险/公众责任
免费热线『上海』:13761630213, QQ:107242375, Email:victor.qin@qq.com
选择保险事业 为了爱,为了一份坚定的承诺!MSN:
上海地区请直接拨打本人电话,应约免费上门提供免费保险方案。
Baoxian.ws>>           旅行签证保险、上门办理>>        重大疾病网>>     上海重大疾病一览    
友情链接: 走在上海人寿保险的前端    和讯保险博客    上海投保在线    Shanghai Insurance    秦华的个人简历


顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
图文并茂 我的链接
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
上海高端医疗/住院医疗保险信息
上海保险规划师信息
上海子女教育理财保险信息
上海保险规划师信息
上海女性高端生育保险方案-等待期
上海保险规划师信息
上海三口之家家庭保障方案
上海保险规划师信息
上海女性特色重大疾病保险方案
上海保险规划师信息
上海女性白领理财保险方案
上海保险规划师信息
上海养老理财规划保险方案
上海保险规划师信息
通过网络取得初步咨询
  •    
上海办理-免费咨询送计划书
上海买保险
上海办理-申根签证 出国旅行保险
上海买保险
上海买保险,海外基金,买保险,友邦保险,中国人民健康保险,养老保险,儿童保险,儿童医疗,子女教育金,太平洋保险,医疗保险,工伤保险条例,中国人寿保险,保险公司,中国平安保险,医疗险,进口药,自费药,外籍人士医疗,泰康人寿,英国保诚集团,上海综合保险,国际医疗保险,上海医疗保险,上海社会保险,上海养老保险,上海市综合保险,上海平安保险,上海太平洋保险,和睦家医院,上海综合保险卡,买保险,高端医疗,重大疾病,意外伤害,定期寿险,家庭理财,友邦保险,金茂大厦,少儿互助基金,上海社保,太平洋集团,港安医院