PIC24FJ256GB110 系列器件包含全速和低速兼容的 USB 串行接口引擎 (Serial Interface Engine, SIE),
并带有On-The-Go(OTG)功能。OTG 功能使器件可 用作 USB 外设器件,也可以用作具有有限主机功能的 USB 嵌入式主机。OTG 功能允许器件用 OTG 的主机协 商协议 (HNP)在器件与主机操作间动态切换。
关于OTG操作的详细信息,请参见USB-IF公布的“USB 2.0 规范 On-The-Go 补充信息”。关于 USB 操作的更多 详细信息,请参见 “通用串行总线规范”v2.0。
USB OTG 模块提供以下特性:
• 器件和主机模式下的 USB 功能与应用程序控制模 式下的OTG 功能切换
• 可用软件选择的模块速度:全速 (12 Mbps)或 低速 (1.5 Mbps,仅在主机模式下可用)
• 支持所有 4 种 USB 传输类型:控制、中断、批量和 同步
• 总共 32 个单向端点可构成 16 个双向端点
• 用于数据 RAM 快速操作的 DMA 接口
• 最多 16 个单向端点传输队列,无需服务
• 集成的片上 USB 收发器,通过数字接口支持片外 收发器
• 使用片上比较器的集成 VBUS生成和升压生成,通 过数字接口支持外部VBUS比较器和稳压器
• 片上总线上拉和下拉电阻配置
图17-1 给出了 USB OTG 模块的简化框图。
USB OTG 模块可用作 USB 外设器件或 USB 主机,并 且可通过软件控制在器件和主机模式间动态切换。两种 模式使用相同的数据路径和缓冲器描述符进行数据的发 送和接收。
讨论USB 操作时,本章使用以控制器为中心的命名法说 明单片机与USB 间数据传输的方向。 Rx (接收)用于 说明将数据从 USB 移动到单片机的传输, Tx (发送)
用于说明将数据从单片机移动到USB 的传输。表 17-1 给出了这种命名法的数据方向与 USB 令牌交换间的关 系。
表
17-1: USB 主机或目标器件以控制器为
中心的数据方向本章将介绍在应用中实现USB OTG 功能需要的最基本 操作。对USB 协议及其 OTG 补充信息的完整详细的讨 论超出了本数据手册的范围。我们假定用户对 USB 架 构和最新版该协议已有基本了解。
这里并未囊括正确的USB 操作的所有步骤 (如器件枚 举)。建议应用程序开发人员用正确的器件驱动程序实 现所有必需的功能。Microchip 提供许多特定于应用的 资 源,例 如 USB 固 件 和 驱 动 程 序 支 持。请 访 问 www.microchip.com 获得最新的固件和驱动程序支持。
注: 本数据手册总结了PIC24F 器件的功能。但 是不应把本手册当作无所不包的参考手册 来使用。更多信息,请参见《PIC24F 系列 参考手册》的“第
27 章 USB On-The-Go
(OTG)”。
USB 模式
方向接收 发送
器件 OUT 或 SETUP IN
主机 IN OUT 或 SETUP
PIC24FJ256GB110 系列
DS39897B_CN 第196 页
初稿
2009 Microchip Technology Inc.图
17-1: USB OTG 模块框图
48 MHz USB 时钟
VUSB D+(1)
D-(1)
USBID(1)
VBUS
收发器
VBUSON(1)
比较器 USB SRP 充电
SRP 放电
寄存器和 控制 接口
收发器电源3.3V
电压
系统 RAM 全速上拉
主机下拉
主机下拉
注 1: 引脚与数字 I/O 及其他器件功能复用。
VMIO(1) VPIO(1) DMH(1) DPH(1) DMLN(1) DPLN(1) RCV(1)
VBUS 升压 辅助 外部收发器接口
USBOEN(1)
USB 3.3V 稳压器 VCMPST1(1)
VCMPST2(1) VBUSST(1) VCPCON(1)
SIE USB
2009 Microchip Technology Inc.
初稿
DS39897B_CN 第 197 页PIC24FJ256GB110 系列
17.1 USB 缓冲器描述符和 BDT
端点缓冲器控制是通过叫做缓冲器描述符表 (Buffer Descriptor Table,BDT)的结构处理的。它为用户提供 了灵活的方法,用于构造和控制不同长度和配置的端点 缓冲器。
BDT 可位于任何可用的 512 字节对齐的数据 RAM 块 中。BDT 指针 (U1BDTP1)包含 BDT 的高位地址字 节,设置 BDT 在 RAM 中的位置。用户必须设置该指 针,以指示该表的位置。
BDT 由缓冲器描述符(Buffer Descriptor,BD)组成,
后者用于定义和控制USB RAM 空间中的实际缓冲器。
每个BD 都包含两个 16 位 “软”(非固定地址)寄存 器、BDnSTAT 和 BDnADR,其中 n 代表 64 个可能的 BD(范围从 0 到 63)之一。 BDnSTAT 是 BDn 的状态 寄存器,而BDnADR 指定与 BDn 相关的缓冲器的起始 地址。
根据所用的端点缓冲配置,对于总共256 字节,最多有 64 组缓冲器描述符。 BDT 至少要有 8 个字节长。这是 因为 USB 规范要求每个器件都必须有带输入和输出的 端点0,用于初始设置。
BDT 中的端点映射取决于三个变量:
• 端点号 (0 到 15)
• 端点方向 (接收或发送)
• 乒乓设置 (U1CNFG1<1:0>)
图17-2 例举了如何用这些变量在 BDT 中映射端点。
在主机模式下,只使用端点0 缓冲器描述符。所有传输都 使用端点0 缓冲器描述符和端点控制寄存器(U1EP0)。
对于接收到的数据包,所连接器件的源端点用USB 状态 寄存器中的ENDPT3:ENDPT0 (U1STAT<7:4>)的值表 示。对于发送的数据包,所连接器件的目标端点用写入令 牌寄存器 (U1TOK)的值表示。
图
17-2:
端点缓冲模式的BDT 映射
EP1 发送偶数 EP1 接收偶数
EP1 接收奇数
EP1 发送奇数 描述符
描述符
描述符
描述符 EP1 发送
EP15 发送 EP1 发送 EP0 接收 PPB1:PPB0 =00
EP0 发送
EP1 发送 无乒乓
EP15 发送 EP0 发送 EP0 接收偶数 PPB1:PPB0 =01
EP0 接收奇数
EP1 发送 EP0 OUT 上的
EP15 发送奇数 EP0 发送偶数 EP0 接收偶数 PPB1:PPB0 =10
EP0 接收奇数
EP0 发送奇数 所有EP 上的
描述符
描述符
描述符 描述符
描述符
描述符
描述符 描述符
描述符
描述符
描述符
描述符
注: 存储器区域未按比例显示。
描述符
描述符
描述符
缓冲器 乒乓缓冲器 乒乓缓冲器
EP1 发送偶数 EP1 接收偶数
EP1 接收奇数
EP1 发送奇数 描述符
描述符
描述符
描述符
EP15 发送奇数 EP0 接收 PPB1:PPB0 =11
EP0 发送 所有其他EP 上的
描述符 描述符
描述符 乒乓缓冲器
(EP0 除外)
总BDT 空间: 总BDT 空间: 总BDT 空间: 总BDT 空间:
128 字节 132 字节 256 字节 248 字节
描述符