您现在的位置:首页 > 滚动 > 正文
STM32 USB设计单片机程序篇
发表时间:2014年10月29日 13:31 来源:21ic 责任编辑:麒麟

当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表示表示主机箱设备传输数据)。在设备一端,每个管道对应一个端点,端点配置相关的寄存器和缓冲区。在通讯之前需对端点进行相关设置。 在通信中,只需向缓冲写或读数据,并置位相关比特位即可。

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

1.usb描述符配置

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

1.1设备描述符

const u8 Joystick_DeviceDescriptor『JOYSTICK_SIZ_DEVICE_DESC』 =

{

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

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

0x00,

0x02,

0x00,

0x00,

0x00,

0x40, /*最大数据包大小为64字节(对于端点0而言)*/

0x84, /*生产商ID*/

0x19,

0x06, /*产品ID*/

0x04,

0x00,

0x02,

1,

2,

3,

0x01 /*配置描述符数目*/

}

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

1.2配置描述符

const u8 Joystick_ConfigDescriptor『JOYSTICK_SIZ_CONFIG_DESC』 =

{

0x09,

USB_CONFIGURATION_DESCRIPTOR_TYPE,

JOYSTICK_SIZ_CONFIG_DESC,

0x00,

0x01, /*接口数目*/

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

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

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

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

/************** 接口1配置****************/

0x09,

USB_INTERFACE_DESCRIPTOR_TYPE,

0x00, /*接口编号*/

0x00,

0x02, /*端点数*/

0x00,

0x00,

0x00,

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

/******************** 端点1输出描述********************/

0x07,

USB_ENDPOINT_DESCRIPTOR_TYPE,

0x81, /*端点地址,b.7表示方向(1为in,0为out)b.0-b.3为端点标号*/

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

0x08, /*最大数据包大小*/

0x00,

0x20,

/******************** 端点1输入描述********************/

0x07,

USB_ENDPOINT_DESCRIPTOR_TYPE,

0x01, /*端点地址*/

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

0x40, /*最大数据包大小*/

0x00,

0x20,

}

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

还有一些其他配置可以参可相关资料与例子加以理解。

高层访谈
用友董事长兼CEO王文京:全面数智商业创新时代到来
用友网络董事长兼CEO王文京认为,随着AI成为全球IT技术与产业创新的中心,商业创新也进入全面数..
华为汪涛:深耕价值客户、商业和分销三类市场
5月8日,在华为中国合作伙伴大会2023上,华为常务董事、ICT基础设施业务管理委员会主任、企业BG..
观点态度
12岁即显现商业头脑 IT巨头公司戴尔的发展简史
从1984成立到今天,戴尔已成长为全球知名的电脑、服务器、数据储存设备和网络设备厂商。
5G毫米波网速优势显现,少了高速路的5G不完整
随着5G网络目前在全球各地的开通,5G毫米波在峰值速率上已经展现出了巨大优势。同时,工信部在..
移动互联
手机
智能设备
汽车科技
通信
IT
家电
办公打印
企业
滚动
相关新闻
关于我们 | 联系我们 | 友情链接 | 版权声明
新科技网络【京ICP备18031908号-1
Copyright © 2020 Hnetn.com, All Right Reserved
版权所有 新科技网络
本站郑重声明:本站所载文章、数据仅供参考,使用前请核实,风险自负。