PAGE1
PAGE1
SAMD系列的USB接口
1.USB接口概述
USB(UniversalSerialBus,通用串行总线)是一种广泛使用的接口标准,用于在计算机和其他设备之间进行数据传输和电源供应。SAMD系列单片机集成了USB设备控制器(USBD)和USB主机控制器(USBH),支持全速(12Mbps)和低速(1.5Mbps)通信。这些控制器可以用于实现各种USB设备和主机功能,如HID(HumanInterfaceDevice,人机接口设备)、CDC(CommunicationDeviceClass,通信设备类)、MassStorage(大容量存储设备)等。
2.USB设备控制器(USBD)
2.1USBD功能简介
SAMD系列的USBD控制器支持以下功能:
全速(12Mbps)和低速(1.5Mbps)通信
支持多个端点(Endpoints)
支持各种USB设备类(如HID、CDC、MassStorage等)
内置DMA(DirectMemoryAccess,直接存储器访问)控制器,用于高效的数据传输
支持USB唤醒功能
2.2USBD端点配置
USBD控制器支持多个端点,每个端点可以配置为不同的类型,包括控制端点、批量端点、中断端点和同步端点。端点配置通过USB设备描述符和配置描述符来实现。
2.2.1控制端点
控制端点用于传输控制信息,如设备请求和配置信息。控制端点通常配置为端点0,是USB设备必须支持的端点。
2.2.2批量端点
批量端点用于传输大量数据,如文件传输。批量端点保证数据传输的完整性,但不保证传输的时间。
2.2.3中断端点
中断端点用于定期传输小量数据,如键盘和鼠标输入。中断端点保证数据传输的及时性。
2.2.4同步端点
同步端点用于传输时间敏感的数据,如音频和视频流。同步端点保证数据传输的时间和带宽。
2.3USBD描述符
USB设备描述符和配置描述符是USB设备与主机通信的基础。描述符定义了设备的特性、支持的配置和端点信息。
2.3.1设备描述符
设备描述符包含设备的基本信息,如设备类、子类、协议等。以下是一个设备描述符的示例:
//设备描述符
constuint8_tUSBD_DeviceDescriptor[]=
{
//设备描述符头
0x12,//描述符大小
USB_DEVICE_DESCRIPTOR,//描述符类型
0x00,0x02,//USB规范版本
0x00,//设备类
0x00,//设备子类
0x00,//设备协议
0x40,//最大包大小
0x89,0x03,//厂商ID
0x01,0x00,//产品ID
0x00,0x01,//设备版本
0x01,//制造商字符串索引
0x02,//产品字符串索引
0x00,//序列号字符串索引
0x01//配置数量
};
2.3.2配置描述符
配置描述符定义了设备的配置信息,包括接口和端点。以下是一个配置描述符的示例:
//配置描述符
constuint8_tUSBD_ConfigDescriptor[]=
{
//配置描述符头
0x09,//描述符大小
USB_CONFIGURATION_DESCRIPTOR,//描述符类型
0x22,0x00,//总长度
0x01,//接口数量
0x01,//配置值