Generic_Function_AN1166_Final.book

Size: px
Start display at page:

Download "Generic_Function_AN1166_Final.book"

Transcription

1 嵌入式设备上的 USB 通用功能 AN1166 作者 : 引言 Bud Caldwell Microchip Technology Inc. 通用串行总线 (Universal Serial Bus, USB) 是一种简单的公共接口, 可以把外部设备连接到个人计算机或其他主机 为了以最小的付出获得其灵活性和功能, Microchip 提供了 USB 通用功能固件 通用驱动程序提供了非常简单的接口来读写与 USB 主机进行交换的数据 提供的示例代码可根据设计人员的具体应用轻松定制 如果通用驱动程序没有提供某个具体应用所需的全部功能 ( 见 USB 通用功能 API ),Microchip 提供了其他常用 USB 设备类的示例实现 这些示例实现建立在 Microchip PIC32 USB 设备固件栈的基础上 如果没有适合目标应用的示例, 设计人员可以利用 Microchip USB 协议栈来开发自己的功能驱动程序 ( 参见 Microchip 应用笔记 AN1176, PIC32 USB 设备栈编程指南 ) 本文档将对嵌入式设备上的 USB 通用功能进行说明 对于希望有一个简单的接口可以经 USB 与主机进行数据读 / 写的开发人员来说, 本文档可用作编程指南 文中还说明了如何把 Microchip 通用功能驱动程序融入到开发者自己的应用中 假设 1. C 程序设计语言的实用知识 2. 对 USB 2.0 规范有一定的熟悉 3. 熟悉 Microchip MPLAB IDE 和 MPLAB REAL ICE 在线仿真器 功能与特性 支持 USB 外部设备应用 为与主机的数据交换提供简单的读 / 写接口 处理标准的 USB 设备请求, 如 Universal Serial Bus Specification, Revision 2.0 第 9 章所述 ( 简化 USB 描述符定义和配置信息 事件驱动系统 ( 中断或查询 ) 限制 使用单个端点 使用中断传输协议 理论最大数据吞吐量 :64,000 字节 / 秒, 与 USB 2.0 规范一致 系统硬件 本应用的开发, 针对下列硬件 : PIC32 USB PIM (Processor Interface Module, 处理器接口模块 ) Microchip Explorer 16 开发板 USB PICtail Plus 子板 2009 Microchip Technology Inc. DS01166A_CN 第 1 页

2 PIC32 MCU 存储器资源需求 关于整个程序和数据存储器需求, 请参阅安装目录下的版本说明 PIC MCU 硬件资源需求 USB 通用演示使用下列 I/O 引脚 : 表 1: PIC MCU I/O 引脚用途 I/O 引脚 用途 D+ (IO) USB D+ 差动数据信号 D- (IO) USB D- 差动数据信号 VBUS ( 输入 ) USB 电源 VUSB ( 输入 ) USB D+/D- 收发器的电源输入 AN4 ( 输入 ) 通过 A/D 转换器监控温度传感器 AN5 ( 输入 ) 通过 A/D 转换器监控电位计 安装源文件 Microchip 通用功能固件的源代码可以从 Microchip 网站下载 ( 参见附录 G: 嵌入式设备上的 USB 通用功能源代码 ) 源代码以 Windows 安装文件的形式提供, 是 PIC32 器件安装的一部分 执行下列步骤, 完成安装 : 1. 执行安装文件 Windows 安装向导将指导您完成安装过程 2. 在继续安装之前, 必须点击 I Accept( 我接受 ), 接受软件许可协议 3. 安装过程完成之后, 应看到 Microchip PIC32 Solutions 程序组下有 PIC32 USB Device Firmware 程序组 完整的源代码将被复制到选定的目录中 4. 阅读版本说明, 了解最新版本提供的功能特性和限制 PICtail Plus 跳线设置 Microchip USB PICtail Plus 子板需要进行下列跳线设置 : 表 2: 跳线设置 跳线 JP1 JP2 JP3 设置 断开 短接 断开 DS01166A_CN 第 2 页 2009 Microchip Technology Inc.

3 源文件构成 Microchip USB 通用设备固件由多个文件组成, 文件分别在多个目录中 表 3 显示了目录结构 表 3: 源文件 文件目录说明 usb_device.c Microchip\USB USB 设备层 ( 设备抽象及协议处理, 如 Universal Serial Bus Specification, Revision 2.0 第 9 章所述 ) usb_hal.c Microchip\USB USB 硬件抽象层 (Hardware Abstraction Layer, HAL) 接口支持 usb_hal_core.c Microchip\USB HAL 接口支持使用的 USB 控制器函数 usb_device_local.h Microchip\USB USB 设备层的私有定义 usb_hal_core.h Microchip\USB HAL 控制器内核的私有定义 usb_hal_local.h Microchip\USB HAL 的私有定义 usb.h Microchip\Include\USB 总的 USB 头文件 ( 包括所有其他的 USB 头文件 ) usb_ch9.h Microchip\Include\USB USB 设备框架 ( Universal Serial Bus Specification, Revision 2.0 第 9 章 ) 定义 usb_common.h Microchip\Include\USB 公共的 USB 协议栈定义 usb_device.h Microchip\Include\USB USB 设备层接口定义 usb_hal.h Microchip\Include\USB USB HAL 接口定义 usb_device_generic.h Microchip\Include\USB 通用功能驱动程序 API 头文件 usb_func_generic.c Microchip\USB\generic_device_driver 通用功能驱动程序实现 usb_func_generic_local.h Microchip\USB\generic_device_driver 通用功能驱动程序的私有定义 HardwareProfile.h usb_generic_device_demo 硬件配置参数 local_typedefs.h usb_generic_device_demo 应用特定的数据类型定义 main.c usb_generic_device_demo 主要的应用源文件 usb_config.h usb_generic_device_demo 应用特定的 USB 配置选项 ( 参见附录 A: USB 固件栈配置 ) usb_demo1_app.c usb_generic_device_demo 应用特定的 USB 支持 user.c usb_generic_device_demo User 程序 /IO 处理代码 user.h usb_generic_device_demo User 程序 /IO 处理代码定义 2009 Microchip Technology Inc. DS01166A_CN 第 3 页

4 演示应用 演示应用由主机端 PC ( 个人计算机 ) 软件和设备端 PIC32 固件组成 两者共同演示了在 USB 主机和设备之间传输数据的简单方法 PC 应用程序提供的图形用户界面 (Graphical User Interface, GUI) 使得用户可以与 PIC32 进行交互 PC 应用程序支持读取电位计的当前设置, 读取温度数据和控制 Explorer 16 开发板上的两个 LED PIC32 固件演示了如何支持这些设备 注 : PIC32 通用驱动程序演示使用了现有的 PICDEM FS USB 演示工具主机 PC 应用程序, 请参阅 PICDEM FS USB Demonstration Board User s Guide (DS51526), 了解安装和使用该应用程序的详细信息 PICDEM 演示工具有两种模式 : 引导模式 (Boot mode) 和演示模式 (Demo mode) PIC32 通用演示仅使用演示模式 当演示工具和 PIC32 定制驱动程序固件一起使用时, 只有演示模式是可操作的 编程演示应用 要把演示应用编程到目标器件中, 必须使用 MPLAB REAL ICE 在线仿真器 下列步骤都假设您将使用 MPLAB IDE 如果不是的话, 请参考您所用编程器的说明书 1. 把 MPLAB REAL ICE 连接到 Explorer 16 开发板或您的目标板 2. 给目标板上电 3. 启动 MPLAB IDE 4. 选中您选择的 PIC 器件 ( 仅在导入先前已编译好的十六进制文件时才需要这一步 ) 5. 使能 MPLAB REAL ICE, 把它作为编程器 6. 如果打算使用先前已编译好的十六进制文件, 把文件导入 MPLAB 7. 如果要重新编译十六进制文件, 打开项目文件, 执行编译 (build) 过程, 创建该应用的十六进制文件 8. 演示应用包含了 Explorer 16 开发板所需的必要配置选项 如果要对其他类型的开发板编程, 确保从 MPLAB IDE 配置设定菜单中选择了恰当的振荡器模式 9. 从 MPLAB IDE 编程器菜单中, 选择 Program ( 编程 ) 菜单项, 开始对目标器件进行编程 10. 几秒钟之后, 应该看到消息 Programming successful ( 编程成功 ) 如果没有看到, 仔细检查开发板和 MPLAB REAL ICE 的连接 进一步的帮助请参阅 MPLAB IDE 联机帮助 11. 移去开发板的电源, 把 MPLAB REAL ICE 电缆从目标板上断开 12. 重新给开发板上电, 确保 LCD 显示 PIC32 Generic Demo 消息 如果没有显示, 仔细检查编程步骤, 并在必要时重复这些步骤 DS01166A_CN 第 4 页 2009 Microchip Technology Inc.

5 使用演示应用 把 PIC32 USB PIM 和 USB PICtail Plus 子板连接到 Explorer 16 开发板 在 MPLAB IDE 中, 打开项目文件, 编译固件, 接着把它编程到 PIC32 中 复位单片机, 启动固件运行 然后, 将设备与主机连接 注 : 如何编译和编程固件的说明, 请参阅 MPLAB IDE 联机帮助 当固件被编程到 PIC32 中, 并且设备第一次与主机相连后, 如何在 PC 上安装 USB 设备驱动程序的详细信息, 请参考安装说明 当 PIC32 已经过编程并连接到主机时, 下拉选择框中出现选项 Select PICDEM FS USB Board ( 选择 PIC- DEM FS USB 板 ), 可供选择 ( 见图 1) 选择开发板, 点击 Connect( 连接 ) 开始接收温度和电位计数据 点击 Toggle LEDs ( 触发发光二极管 ) 按钮来控制开发板上的 LED 注 : 演示工具 LED 按钮的标签是用于 PICDEM FS USB 演示板的, 而不是针对的 Explorer 16 开发板 因此, 标记为 LED D3 的按钮实际控制的是 Explorer 16 开发板上标记为 D9 的 LED, 而标记为 LED D4 的按钮实际控制的是 Explorer 16 开发板上标记为 D10 的 LED PICDEM 演示工具应用使用设备驱动程序, 通过 USB 访问 PIC32 ; 使用独立的 DLL 提供简单 API, 以访问设备驱动程序 其他细节和示例代码, 请参考与 PICDEM 演示工具应用一起安装的源代码和自述文件 图 1: 选择演示应用 2009 Microchip Technology Inc. DS01166A_CN 第 5 页

6 固件 通用演示固件包括以下功能 : 1. 管理 USB 2. IO 处理 管理 USB 在发生任何其他 USB 活动之前, 应用的主逻辑必须调用一次 USBInitialize 例程, 以便初始化 USB 固件栈 然后, 它在 查询 循环中调用 USBTasks 例程, 如例 1 所示 例 1: 主应用逻辑 USBInitialize(0); UserInit(); while(1) USBTasks(); ProcessIO(); } return 0; IO 处理 主逻辑调用了两个尚未讨论的例程 :UserInit 和 ProcessIO ( 见例 1) 这两个例程管理连接演示应用非 USB 部分的 IO, 读取来自 PC 应用的命令, 并把数据写回到 PC UserInit 例程初始化控制 Explorer 16 板上 LED 的 PIC32 引脚 它还启动一个定时器来控制温度传感器的采样, 并初始化温度记录程序 处理 IO 例程使用 ServiceRequests 辅助程序来读取并响应来自 PC 应用的请求, 维护温度采样的时序并获取数据 为此, 它使用 USB 通用功能 API, 读取来自主机的命令包, 如下所示 : 例 2: 处理 IO 例程 if(usbgenread((byte*)&datapacket,sizeof( datapacket))) // 命令处理 } 注 : 除非调用 USBInitialize, 否则 USB 接口模块是被禁止的, PIC32 将不会连接到 USB USBInitialize 例程辅之以应用特定的 USB 支持, 处理初始化 USB 固件栈所必需的所有事项 USBTasks 例程管理 USB 固件栈的状态, 并执行总线上发生事件所需的必要步骤 注 : 只要有 USB 中断发生, 就可从中断服务例程 (Interrupt Service Routine,ISR) 调用 USBTasks 例程, 而不是在查询循环中调用 如果以这种方式调用 USBTasks 例程的话, 整个 USB 固件栈 ( 通用驱动程序的非用户 API 部分 ) 都工作在中断现场中 DS01166A_CN 第 6 页 2009 Microchip Technology Inc.

7 自主机读取的数据的第一字节标识了命令, 如例 3 所示 包的其余字节是命令特定的数据, 用于执行指定命令 例 3: 来自主机数据包的第一个字节 counter = 0; switch(datapacket._byte[0]) case READ_VERSION: // 提供固件版本数据 break; case UPDATE_LED: // 按指定更新 LED break; case SET_TEMP_REAL: // 复位温度记录 break; case RD_TEMP: // 获取温度采样 break; case SET_TEMP_LOGGING: // 开始温度记录 break; case RD_TEMP_LOGGING: // 把温度记录数据发送到主机并复位记录 break; case RD_POT: // 读电位计 break; } default: break; 在每种情况下, 一旦命令完成, 计数器变量就会更新, 以保留发回主机的数据字节的计数 然后, 固件应用使用 USB 通用功能 API 把此计数数据发送回主机 ( 如下例所示 ) 固件演示应用使用这种命令和响应方法, 支持 PC 应用所需的服务, 演示了在 PIC32 和主机 PC 之间利用 USB 通用功能 API 传输数据的能力 例 4: 向主机发送数据 if(counter!= 0) if(!musbgentxisbusy()) USBGenWrite((BYTE*) &datapacket,counter); } 2009 Microchip Technology Inc. DS01166A_CN 第 7 页

8 应用特定的 USB 支持 由于演示使用 Microchip USB 设备固件栈, 它实现了三个应用特定的表, 如下所示 : 应用特定的表 : 1. USB 描述符表 2. 端点配置表 3. 功能驱动程序表这三张表以及 USB 协议栈用来访问它们的函数, 定义在 usb_demo1_app.c 文件中 USB 描述符表 每个 USB 设备都必须提供一组称为 描述符 的数据结构, 描述符向主机提供了其用法的详细信息 至于这些描述符是如何正确提供的以及其中包含了什么信息, 在 Universal Serial Bus Specification, Revision 2.0 的第 9 章及其类特定的补充说明中有定义 演示应用定义了样本描述符, 本文档将讨论重要的描述符字段 针对不同的应用, 可能需要改变这些字段 笼统地说, 可以认为 USB 描述符属于以下三个不同描述符组中的一个 : 它们是描述总体设备的组, 描述可能的设备配置的组以及提供用户可读取信息的组 在第一组中, 每个 USB 设备有且仅有一个描述符 设备描述符 它用于唯一地标识设备, 给出可能配置的数量 每个配置 ( 第二组 ) 都有其自身的描述符集, 对配置细节进行说明 用户可读取的信息保存在字符串描述符中, 构成了第三组描述符 字符串描述符是可选的, 但对最终用户用处很大 其他信息, 请参见图 2 和附录 E: USB 描述符表 为了让主机读取这些描述符, USB 固件栈必须能够访问它们 为了提供这样的访问, 应用定义了 USBDevGetDescriptor 例程, 它由协议栈的较低层调用, 传递一个用来标识描述符类型的值 对于字符串描述符, 此例程还传递字符串索引号和语言 ID 所有情况下, 例程必须提供一个指向所请求描述符的指针以及描述符字节长度 详细内容, 请参阅附录 F: 获取描述符例程 图 2: 描述符组 设备描述符 字符串描述符 配置描述符 Config 接口描述符 Data-In 端点描述符 Data-Out 端点描述符 DS01166A_CN 第 8 页 2009 Microchip Technology Inc.

9 端点配置表 主机 PC 上的软件通过含有一个或多个 端点 的逻辑 接口 与 USB 设备上的功能进行通信 端点和接口通过编号来标识, 编号从零开始 USB 设备可以有一个或多个这样的端点和接口的配置, 配置通过从 1 开始的编号来标识 使用哪个配置, 由主机在称为 枚举 (enumeration) 的过程中决定 不过, 通用功能驱动程序只有一个配置 例 5 的端点配置表表明哪个端点属于哪个接口, 以及每个端点的数据传输方向和协议特性 例 5: 端点配置表 const EP_CONFIG gepconfigtable[] = // EP1 - 输入和输出 EP_MAX_PKT_INTR_FS, USB_EP_TRANSMIT USB_EP_RECEIVE USB_EP_HANDSHAKE, USBGEN_EP_NUM, USBGEN_CONFIG_NUM, USBGEN_INTF_NUM, 0, 0 } }; 上表将端点 1 配置为双向端点 (USB_EP_TRANSMIT USB_EP_RECEIVE), 支持中断协议所需的握手 (USB_EP_HANDSHAKE) 端点配置表还把该端点与功能驱动程序 ( 它在功能表中索引 0 处 ) 关联在一起 ( 见 功能驱动程序表 ) 为访问配置表, 应用应定义如下例程 例 6: 获取端点配置表例程 const EP_CONFIG *USBDEVGetEpConfigurationTable ( int *num_entries ) // 提供表项的数目 *num_entries = sizeof(gepconfigtable)/sizeof(ep_config); // 提供表指针 return gepconfigtable; } 此例程向 USB 协议栈提供一个指向端点配置表的指针, 同时还提供了表中所含项的数目 协议栈通过 USB_DEV_GET_EP_CONFIG_TABLE_FUNC 宏来标识此例程 ( 参见 USB 协议栈选项 ) 2009 Microchip Technology Inc. DS01166A_CN 第 9 页

10 功能驱动程序表 Microchip 设备固件栈使用一张表来管理对功能驱动程序的访问, 因为它能够支持多功能设备 表中的每一项都含有管理单一功能驱动程序所必需的信息 由于演示应用只实现了一个 USB 功能, 它的表中仅含有一项, 如下所示 例 7: 功能驱动程序表 const FUNC_DRV gdevfunctable[] = // 通用功能驱动程序 USBGenInitialize, USBGenEventHandler, USBGEN_EP_NUM } }; 这张表提供了指向通用功能驱动程序初始化和事件处理例程的指针, 还提供了一个初始化值 ( 在这种情形下, 是驱动程序使用的端点的标识 ) 这些就是 USB 固件栈为了管理通用驱动程序和确保知道在总线上有事件发生而需要的所有信息 为了使 USB 固件栈能够访问这张表, 应用应定义如下的例程 USB 协议栈选项 Microchip USB 设备固件栈支持许多配置选项 这些选项在 usb_config.h 文件中进行定义, 以便根据需要对协议栈进行配置 本节将讨论其中几个对通用演示应用而言重要的 ( 或者是特定的 ) 选项 可用选项的详细信息, 请参阅 USB 固件栈配置 重要的协议栈选项 以下是对通用驱动程序而言, 较重要的选项 : USB_DEV_HIGHEST_EP_NUMBER USB_DEV_EP0_MAX_PACKET_SIZE 选项说明如下 : USB_DEV_HIGHEST_EP_NUMBER: 这个选项影响 USB 固件栈将要分配多少存储空间用于跟踪数据传输和 DMA 用途 通用功能驱动程序使用一个端点 ( 端点 1, 如例 5 所示 ), 所以这个宏定义为 1 USB_DEV_EP0_MAX_PACKET_SIZE: 这个宏定义 USB 固件栈为端点 0 分配的缓冲空间大小, 取值必须是 或 64 通用演示应用将其定义为 8, 以便减少 RAM 的使用 例 8: 功能驱动程序表访问例程 inline const FUNC_DRV *USBDEVGetFunctionDriverTable ( void ) return gdevfunctable; } 此例程返回一个指向功能驱动程序表基地址的指针 不需要获知表的大小, 因为端点配置表中含有指向功能驱动程序表的索引 只要这些索引是正确的, 就不会出现非法访问 DS01166A_CN 第 10 页 2009 Microchip Technology Inc.

11 应用特定的选项 如 应用特定的 USB 支持 中所述, 应用必须定义三个例程, 提供对三个应用特定表的访问, 这是 USB 固件栈所必需的 固件栈使用三个宏 ( 见下 ) 来标识这些例程 图 3: 表访问例程宏 #define USB_DEV_GET_DESCRIPTOR_FUNC #define USB_DEV_GET_EP_CONFIG_TABLE_FUNC #define USB_DEV_GET_FUNCTION_DRIVER_TABLE_FUNC USBDEVGetDescriptor USBDEVGetEpConfigurationTable USBDEVGetFunctionDriverTable 注意, 函数名 ( 在右边 ) 与 应用特定的 USB 支持 中所示访问例程的名称相同 下例宏可让应用定义几个通用驱动程序特定的选项 USBGEN_CONFIG_NUM USBGEN_INTF_NUM USBGEN_EP_NUM USBGEN_EP_SIZE 宏说明如下 : USBGEN_CONFIG_NUM: 这个宏标识通用功能所使用的配置编号 由于只有一个可用的配置, 所以定义为 1 USBGEN_INTF_NUM: 这个宏标识通用驱动程序使用的 USB 接口编号 对于本演示应用, 它定义为 0 除非更复杂的实现要求改变它, 否则该值可以保持不变 USBGEN_EP_NUM: 这个宏定义 中断 端点与主机进行数据传输时使用的 USB 端点编号 对于本演示应用, 宏定义为 1, 应用如果修改了, 也可改变这个值, 以避免冲突 USBGEN_EP_SIZE: 这个宏定义中断端点的最大包大小, 以及用来接收数据的缓冲区的最小可用大小 根据应用的需要, 宏值可置为 或 Microchip Technology Inc. DS01166A_CN 第 11 页

12 定制 USB 应用 除了演示如何通过 USB 传输数据之外, 本应用的另一个用途是作为采用受支持 Microchip 单片机进行 USB 外部设备设计的出发点 本节将说明如何使用 Microchip 定制驱动程序来开发新应用 概括地说, 修改演示应用有如下三个步骤 : 1. 修改主应用 2. 修改应用特定的 USB 支持 3. 配置 USB 协议栈选项 注 : 如果需要做较大的改动, 开发人员可以设计并实现新的 USB 功能驱动程序 不过, 这样做已经超出了本文档的范围 实现功能驱动程序的细节, 请参阅 AN1176 PIC32 USB 设备栈编程指南 修改主应用程序 使用 MPLAB IDE, 为受支持的单片机创建一个新的应用程序 ( 关于如何创建一个项目的说明, 请参阅 MPLAB IDE 联机帮助 ) 实现并测试任何所期望的非 USB 应用特定的支持 然后, 以提供的演示应用为例, 添加必需的 USB 支持 另一种方法是 : 复制演示应用, 按需要重命名项目和应用程序文件, 然后添加任何所需的非 USB 代码 注 : 应把以下头文件搜索路径添加到您的项目编译选项中.\..\Microchip\Include..\..\Microchip\Include 然后, 在任何需要访问 USB 和 / 或通用驱动 API 例程的文件内添加以下文件包含声明 #include usb/usb.h #include usb/generic_device.h 在主应用中, 在调用任何其他 USB 例程之前, 确保调用 USBInitialize 来初始化 USB 协议栈 然后, 在循环中调用 USBTasks, 如应用示例所示 有一点非常重要, 在主查询循环中, 代码执行的阻塞或任何等待不得超过几微秒 如果超过的话,USBTasks 接口调用的速度就不够迅速, 不足以在 USB 事件发生时就进行服务 如果需要阻塞行为 ( 或者中断驱动行为更佳的话 ), 可以把 USBTasks 例程直接链接到 USB 设备的中断服务例程中 ( 关于使用中断的细节, 请参阅 MPLAB IDE 联机帮助 ) 从应用程序中, 要读取来自主机的数据时, 调用 USBGenRxIsBusy USBGenGetRxLength 和 USB- GenRead API 例程 ; 要向主机写入数据时, 调用 USB- GenTxIsBusy 和 USBGenWrite 例程 这些例程的使用将在后面的演示应用中进行讲述 例 9: 从主机读数据 if (!USBGenRxIsBusy()) // 获得先前读取数据的大小 PrevSize = USBGenGetRxLength(); } // 开始下一次读 USBGenRead(&gData, sizeof(gdata)); DS01166A_CN 第 12 页 2009 Microchip Technology Inc.

13 如果 USBGenRxIsBusy 返回 FALSE, 将向 PrevSize 赋予自上一次调用 USBGenRead( 如果有的话 ) 以来接收到的实际字节数, 启动一次新的读 (Rx) 传输 调用了 USBGenRead 后, 一直到传输完成前, USBGen- RxIsBusy 都将返回 TRUE 值 例 10: 向主机写数据 if (!USBGenTxIsBusy()) USBGenWrite(&gData[, sizeof(data)); } 如果 USBGenTxIsBusy 返回 FALSE, 逻辑判断将开始一次写 (Tx) 传输 在调用 USBGenWrite 之后, USBGenTxIsBusy 将在所有数据传输到主机之前, 一直返回 TRUE 如果需要, 程序需要知道它自己传输数据的大小, 因为 Tx 和 USBGenGetRxLength 不相等 修改应用特定的 USB 支持 在实现使用 Microchip 通用驱动程序的新应用时, 只需要对应用特定的 USB 支持稍作修改 最重要的改动与描述符表有关 除非添加了额外的 USB 功能行为, 否则不需要增加描述符 修改 USB 描述符表 正如 管理 USB 中所述, 每个 USB 设备都有一个设备描述符, 一组或多组说明可能配置的描述符, 以及若干字符串描述符 用于这些描述符的数据类型定义在 usb_ch9.h 头文件中 本节将讨论在修改应用程序时需要对这些描述符进行的改动 注 : USB 数据传输方向术语可能有点混乱 在 USB 术语中, 数据传输方向始终是相对主机来说的 因此, IN ( 输入 ) 传输意味着数据流从设备传到主机, OUT ( 输出 ) 传输意味着数据流从主机传到设备 本文档和 PIC32 固件通常说到的数据传输是相对于 PIC32 来说的 因此, 数据发送 (Tx) 是从 PIC32 发送到主机, 数据接收 (Rx) 是从主机到 PIC32 总结如下表 : USB 术语 固件术语 说明 输入 发送 数据流从设备传到主机 输出 接收 数据流从主机传到设备 2009 Microchip Technology Inc. DS01166A_CN 第 13 页

14 修改设备描述符 设备描述符提供了对整个设备适用的信息, 这包括设备类 供应商和产品 ID 编号, 配置的数量以及端点 0 的信息 使用如下数据类型 ( 定义在 usb_ch9.h 头文件中 ), 为 USB 固件栈创建设备描述符 图 4: 设备描述符数据结构 typedef struct BYTE blength; BYTE bdescriptortype; WORD bcdusb; BYTE bdeviceclass; BYTE bdevicesubclass; BYTE bdeviceprotocol; BYTE bmaxpacketsize0; WORD idvendor; WORD idproduct; WORD bcddevice; BYTE imanufacturer; BYTE iproduct; BYTE iserialnum; BYTE bnumconfigurations; } USB_DEVICE_DESCRIPTOR; 在设计新设备时, 可能需要改变以下重要字段 : bmaxpacketsize0 idvendor idproduct bcddevice 字符串索引 - imanufacturer - iproduct - iserialnum 所有其他字段应该保持不变, 除非对应用进行了重大改动 ( 比如, 增加了更多的配置等 ) 以下说明了这些重要字段 : bmaxpacketsize0: 如果端点 0 缓冲区的大小改变 ( 改变了 USB_DEV_EP0_MAX_PACKET_SIZE 宏的值 ), 也必须相应地改变 bmaxpacketsize0 注 : 示例代码使用宏 USB_DEV_EP0_MAX_PACKET_SIZE 初始化这个字段, 所以如果使用示例代码的话, 当宏改变时, 这个字段会自动改变 idvendor: 必须改变供应商 ID (VID) 值, 以匹配 USB Implementers Forum (USB IF) 分配给贵公司的 ID 代码 如果您没有 USB IF 分配的 VID, 请联系 Microchip 代表, 讨论使用 Microchip 供应商 ID(0x04D8) 以及租借尚未使用的 Microchip 产品 ID 的可能性 idproduct: 必须改变产品 ID (PID) 值, 使之与分配给开发中产品的 PID 相匹配 每个供应商都要负责分配和跟踪其生产产品的 PID 如果您已经从 Microchip 租用了一个 PID, 这个值必须用在这里, 而且 VID 必须与 Microchip ID 相同 bcddevice: 这个值是产品版本号的二进制编码的十进制数 (Binary Coded Decimal,BCD) 应该改变它, 使之与产品设计的版本相匹配 字符串索引 : imanufacturer iproduct 和 iserialnum 字段中含有指向字符串描述符表中字符串描述符的索引, 字符串描述符是 Unicode 字符串格式, 说明了制造商 产品和序列号 为了提供产品适当的说明, 需要更改这些字符串描述符, 但是不需要改变设备描述符中的索引编号, 除非表中这些描述符的位置被改变 DS01166A_CN 第 14 页 2009 Microchip Technology Inc.

15 修改配置描述符 示例代码实现的是单个配置 因此, 只有一组配置特定的描述符, 以单个配置描述符作为开头 使用如下数据类型来定义配置描述符 : 图 5: 配置描述符数据结构 typedef struct BYTE blength; BYTE bdescriptortype; WORD wtotallength; BYTE bnuminterfaces; BYTE bconfigurationvalue; BYTE iconfiguration; struct BYTE reserved_zero: 5; BYTE remote_wakeup: 1; BYTE self_powered: 1; BYTE reserved_one: 1; }bmattributes; BYTE bmaxpower; } USB_CONFIGURATION_DESCRIPTOR; 在配置描述符中, 只有 bmaxpower 是可能需要改动的字段 bmaxpower: 这个字段指明设备工作在此配置下时, 它需要的电流大小 描述符中的值是所需电流的一半 因此 50 的值表示此配置下设备正常工作时需要的最大电流是 100 ma 这个值每增加 1, 则最大电流增加 2 ma 注 : USB 设备可能要求总线能够提供最大 500 ma 的电流, 但低功耗主机 ( 或集线器 ) 可能只能从总线上提供最大 100 ma 的电流 USB On The Go 或嵌入式主机可能只能提供 8 ma 的小电流 如果设备旨在与这样的主机一起工作, 确保设备只汲取主机能够支持的电流 修改接口描述符 接口描述符提供了一个标识接口的编号 接口的类信息以及接口所需端点的数量 使用如下数据类型来定义接口描述符 : 图 6: 接口描述符数据结构 typedef struct BYTE blength; BYTE bdescriptortype; BYTE binterfacenumber; BYTE balternatesetting; BYTE bnumendpoints; BYTE binterfaceclass; BYTE binterfacesubclass; BYTE binterfaceprotocol; BYTE iinterface; } USB_INTERFACE_DESCRIPTOR; 通常, 不需要改动接口描述符中的任何字段 不过, 下面讨论的两个字段可能要引起注意 : binterfacenumber 在单个设备配置中, 任意两个 USB 接口都不能拥有相同的接口编号, 除非使用的是备用接口设定 ( 定制驱动程序不使用备用接口设定 ) 但是, 如果在本应用中集成了更多的 USB 功能, 可能需要改变接口的接口编号 ( 方法是改变这个字段的值 ), 从而使主机能够唯一地标识设备中的每个接口 iinterface 没有为这个接口提供样本字符串描述符 ( 它也不需要 ) 如果打算添加一个字符串描述符的话, 它在字符串描述符表中的索引需要放入这个字段中 2009 Microchip Technology Inc. DS01166A_CN 第 15 页

16 修改端点描述符 通用驱动程序使用单个端点来发送和接收数据 这就需要两个端点描述符 端点描述符标识传输的类型 ( 通用驱动程序使用中断传输 ) 方向 缓冲区大小以及查询周期 使用如下数据类型来定义端点描述符 : 图 7: 端点描述符数据结构 typedef struct BYTE blength; BYTE bdescriptortype; BYTE bendpointaddress; BYTE bmattributes; WORD wmaxpacketsize; BYTE binterval; } USB_ENDPOINT_DESCRIPTOR; 下面各项标识的值是最有可能改变的值 改变其他值可能导致端点停止工作 bendpointaddress: 这个值表明描述符针对哪个端点 如果在应用中集成了更多 USB 功能而出现冲突时, 可能要改变这个值 使用 USBGEN_EP_NUM 宏来初始化这个值 如果改变这个宏的值而改变了端点编号的话, 端点描述符将会自动更改 wmaxpacketsize: 这个值向主机表明与端点关联的缓冲区的大小 这个值可以是 或 64, 根据应用的需要而定 缓冲区越小, 消耗的设备存储空间就越少 ; 缓冲区越大, 数据吞吐的效率就越高 修改字符串描述符字符串描述符表提供的是人可阅读的 Unicode 字符串格式的信息, 它有助于主机把设备呈示给用户 它还给出了设备的序列号, 序列号也用字符串给出 可支持许多不同语言的字符串 字符串描述符表中的第一项标识出一列支持的语言 示例仅支持英语 ( 美式英语 ) 通过给第一个描述符添加更多的语言 ID, 可支持更多的语言 注 : 在示例代码中, 给出了供应商描述 产品描述以及序列号的字符串描述符 应该改变它们, 以表示正在开发的系统 注 : 可用的语言 ID 列表, 请参阅 Universal Serial Bus (USB) Language Identifiers (LangIDs), 网址是 developers/docs/usb_langids.pdf 在添加更多的语言时, 通过增加 NUM_LANGS 宏的值, 确保增加第一个字符串描述符 ( 字符串描述符零 ) 的大小 尽管不是必需的, 但每个设备都应有一个独一无二的序列号 否则, 您就不能把两个相同类型的设备同时连接到同一主机上 另外, 每次当设备连接不同的 USB 端口时, 主机系统可能要求用户重新安装驱动程序软件 ; 而不是在设备第一次连接时安装一次即可 注 : USB 固件栈不会为 USB 端点分配缓冲区 ( 除了端点 0) 相反, 它使用应用定义的缓冲区来经由数据端点进行所有传输 DS01166A_CN 第 16 页 2009 Microchip Technology Inc.

17 修改端点配置表 端点配置表表明 USB 设备上使用的每个端点的方向和协议特征 这张表还将表明对于每个端点发生的事件, 应使用哪个功能驱动程序提供服务 唯一的例外是端点 0, USB 协议栈自动配置端点 0, 它也不包含在端点配置表中 表中的每个项都由下面的数据结构组成 : 图 8: 端点配置数据结构 typedef struct _endpoint_configuration_data UINT16 max_pkt_size; UINT16 flags; BYTE config; BYTE ep_num; BYTE intf; BYTE alt_intf; BYTE function; } EP_CONFIG, *PEP_CONFIG; EP_CONFIG 结构和标志定义在 usb_device.h 头文件中 max_pkt_size: 这个字段定义此端点在单个包中能够传输多少字节 flags: 这个字段给出配置端点行为的信息 要定义下列标志 端点配置标志 : USB_EP_TRANSMIT 使能端点, 从而能够发送数据 USB_EP_RECEIVE 使能端点, 从而能够接收数据 USB_EP_HANDSHAKE 非同步端点使用 ACK/NACK 握手包 USB_EP_NO_INC 用于到其他设备 FIFO 的 DMA config intf 和 alt_intf: 这些字段表明 : 哪些设备配置 接口和备用接口设定使用了这个结构描述的配置 ep_num: 这个字段表明 : 结构描述的是哪个端点 function: 这个字段表明 : 哪个功能驱动程序要使用 ep_num 中标识的端点 为此, 要提供指向支持的功能驱动程序表的索引 通常不需要修改端点配置表 不过, 如果应用要集成更多的 USB 功能, 可能需要添加额外的表项, 如上所述 警告 : 包含在端点配置表中的某些信息重复了描述符表中定义的信息 为了消除额外的代码, 需要这种信息冗余, 否则就需要解析描述符表以获取信息 不过, 确保两张表是一致的, 确实给程序员增加了负担 2009 Microchip Technology Inc. DS01166A_CN 第 17 页

18 修改支持的功能驱动程序表 一个 USB 设备可实现多个类或供应商特定的功能 为此, Microchip USB 固件栈使用功能驱动程序表来管理对支持的功能驱动程序的访问 表中每个项都含有管理某一个功能驱动程序的必要信息 如果某个应用 ( 如通用演示 ) 只实现了一个 USB 功能, 则表中将只有一项 下面的数据结构定义了功能驱动程序表中的项 图 9: 功能驱动程序表结构 struct _function_driver_table_entry USBDEV_INIT_FUNCTION_DRIVERInitialize; USB_EVENT_HANDLER EventHandler; BYTE flags; }; Initialize 和 flags: Initialize ( 初始化 ) 字段中存放了一个指针, 指向功能驱动程序的初始化例程 当主机选择与表中给定项标识的功能驱动程序相匹配的设备配置时, 将会调用初始化例程 在调用时, 要向初始化例程传递 flags ( 标志 ) 参数 修改 USB 协议栈选项 本节将着重说明几个重要的配置选项, 它们是确保 USB 设备栈正常工作所必需的选项 所有可用配置选项的完整说明, 请参阅附录 A 必需的选项 下列选项必须如下定义 USB_SUPPORT_DEVICE: 为了确保 USB 协议栈编译为外部设备模式, 必须定义这个宏 ( 不需要值 ) 否则, USB 协议栈的行为将不适合 USB 外部设备应用 USB_DEV_EVENT_HANDLER: 这个宏允许用户替换 USB 固件栈的 设备 层 ( 参见附录 D: USB 固件栈架构 ) 不过, 这样做超出了本文档的范围, 所以, 应用应确保这个宏定义为设备层事件处理例程 USBDEVHandleBusEvent 的名字 EventHandler: 这个字段中存放了一个指针, 指向用于处理类或供应商特定的 USB 事件的功能驱动程序例程 通用功能驱动程序使用 flags 字段来标识应该使用哪个端点 ( 注 : 使用的端点必须与描述符中报告的是同一端点 ) 其他两个字段是 USB 固件栈较低层用来调用通用功能驱动程序的链接 如果应用将另外的 USB 功能和通用驱动程序功能集成起来, 功能驱动程序表可能需要修改 DS01166A_CN 第 18 页 2009 Microchip Technology Inc.

19 修改影响 RAM 使用的选项 为了确保 USB 协议栈分配的 RAM 不超过实际需要, 应小心定义下面的宏 USB_DEV_HIGHEST_EP_NUMBER USB_DEV_SUPPORTS_ALT_INTERFACES USB_DEV_EP0_MAX_PACKET_SIZE 宏说明如下 : USB_DEV_HIGHEST_EP_NUMBER: 这个宏指明设备使用的最高端点编号 在定制驱动程序的情形, 它定义为 1, 因为端点 1 是除端点 0 以外唯一使用的端点 如果需要, 也可改变这个值, 从而集成更多的 USB 功能 修改应用特定的 USB 支持选项 为了确保 USB 协议栈能够调用三个应用定义的例程来访问描述符 端点配置以及功能驱动程序表, 必须正确定义下面的宏 : USB_DEV_GET_DESCRIPTOR_FUNC USB_DEV_GET_EP_CONFIG_TABLE_FUNC USB_DEV_GET_FUNCTION_DRIVER_TABLE_FUNC 注 : 增加这个值将增加 USB 协议栈使用的 RAM 量,USB 协议栈使用 RAM 来分配更多 BDT 项以及跟踪状态数据 USB_DEV_SUPPORTS_ALT_INTERFACES: 如果应用支持任何其 USB 接口的备用设定, 就必须定义这个宏 由于定制驱动程序不使用备用接口设定, 所以不应改变它, 除非此应用要集成其他需要备用接口设定的应用 USB_DEV_EP0_MAX_PACKET_SIZE: 端点零能够支持的缓冲区大小是 或 64 字节 此缓冲区 RAM 的分配取决于 USB_DEV_EP0_MAX_PACKET_SIZE 宏的定义 对于通用驱动程序, 这个值定义为 8 字节 如果稍稍缩短枚举设备所必需的时间, 可以把这个值加大, 使缓冲区更大一些, 而代价则是分配给端点 0 缓冲区的 RAM 更大 注 : 设备层 ( 见附录 D) 为端点 0 分配缓冲空间 2009 Microchip Technology Inc. DS01166A_CN 第 19 页

20 宏说明如下 : USB_DEV_GET_DESCRIPTOR_FUNC: 这个宏向 USB 协议栈标识应用特定的 获取描述符 例程的名称 这个例程提供所请求描述符的地址和大小 例 11: 标识 获取描述符 函数 #define USB_DEV_GET_DESCRIPTOR_FUNC 如果 获取描述符 例程的名称改变, 必须改变这个宏定义, 使之与例程的新名称相同 USB_DEV_GET_EP_CONFIG_TABLE_FUNC 这个宏向 USB 协议栈标识应用特定的 获取端点配置表 例程的名称 这个例程提供端点配置表的地址以及表中所含项的数目 例 12: 标识 获取端点配置表 函数 #define USB_DEV_GET_EP_CONFIG_TABLE_FUNC 如果 获取端点配置表 例程的名称改变, 必须改变这个宏定义, 使之与例程的新名称相同 USB_DEV_GET_FUNCTION_DRIVER_TABLE_FUNC 这个宏向 USB 协议栈标识应用特定的 获取功能驱动程序表 例程的名称 这个例程提供功能驱动程序表的地址 例 13: 标识 获取功能驱动程序表 函数 #define USB_DEV_GET_FUNCTION_DRIVER_TABLE_FUNC USBDEVGetDescriptor USBDEVGetEpConfigurationTable USBDEVGetFunctionDriverTable 如果 获取功能驱动程序表 例程的名称改变, 必须改变这个宏定义, 使之与例程的新名称相同 其他信息, 请参阅 应用特定的 USB 支持 和 USB 固件栈配置 DS01166A_CN 第 20 页 2009 Microchip Technology Inc.

21 修改通用功能选项 通用功能驱动程序有几个会影响它如何使用资源的选项 可以根据目标应用的需要, 改变这些选项 USBGEN_CONFIG_NUM USBGEN_INTF_NUM USBGEN_EP_NUM USBGEN_EP_SIZE 宏说明如下 : USBGEN_CONFIG_NUM: 定义通用功能的配置 ID 值 由于通用功能驱动程序仅支持单个配置, 这个值不需要改变, 除非此应用要集成更多的使用多重配置的 USB 功能 USBGEN_INTF_NUM: 定义定制的或通用驱动程序接口的 ID 值 不应改变这个值, 除非应用要集成更多的 USB 功能 USBGEN_EP_NUM: 定义与主机进行数据传输的端点编号 不需改变这个值, 除非应用要集成其他 USB 功能且使用的端点存在冲突 USBGEN_EP_SIZE: 定义用于数据传输的端点缓冲区的大小 ( 以字节为单位 ) 由于它由应用定义, 值可更改为中断端点的任何合法大小 : 或 64 其他选项 根据应用, 可能还有两个选项需要改变 USB_DEV_SELF_POWERED: 定义这个宏, 通知 USB 协议栈 : 设备是自供电的 如果设备需要由总线供电, 不应定义这个宏 USB_DEV_SUPPORT_REMOTE_WAKEUP: 定义这个宏, 通知 USB 协议栈 : 设备支持远程唤醒主机 如果不支持的话, 不应定义这个宏 2009 Microchip Technology Inc. DS01166A_CN 第 21 页

22 结论 本文档和相关的演示应用由 PC 软件和 PIC32 固件组成, 演示了在主机 PC 和 USB 设备之间进行通信的一种简单的 通用 方法 通常, 管理通用串行总线需要开发人员处理用于设备标识 控制和数据传输的复杂协议 不过, Microchip 已经对 USB 细节进行了处理, 提供了一种简单的通用功能驱动程序 ; 对于使用受支持的 Microchip 单片机的开发人员而言, 这简化了应用的实现 参考文献 Microchip 应用笔记 AN1176, PIC32 USB 设备栈编程指南 Microchip MPLAB IDE 集成开发环境, 许可证免费, 下载地址 : Universal Serial Bus Specification, Revision OTG Supplement, Revision Universal Serial Bus (USB) Language Identifiers (LangIDs) usb_langids.pdf DS01166A_CN 第 22 页 2009 Microchip Technology Inc.

23 附录 A: USB 固件栈配置 USB 设备栈提供了若干配置选项, 以便针对应用来定制协议栈 配置选项必须在文件 usb_config.h 中定义, 任何 USB 应用都必须包含该文件 一旦选项有改变, 必须重新 干净地 编译协议栈, 从而重新编译所有相关的二进制文件 下列配置选项可用于定制协议栈 : USB_SUPPORT_DEVICE USB_DEV_EVENT_HANDLER USB_DEV_HIGHEST_EP_NUMBER USB_DEV_EP0_MAX_PACKET_SIZE USB_DEV_SUPPORTS_ALT_INTERFACES USB_DEV_GET_DESCRIPTOR_FUNC USB_DEV_GET_EP_CONFIG_TABLE_FUNC USB_DEV_GET_FUNCTION_DRIVER_TABLE_FUNC USB_DEV_SELF_POWERED USB_DEV_SUPPORT_REMOTE_WAKEUP USB_SAFE_MODE USBGEN_CONFIG_NUM USBGEN_INTF_NUM USBGEN_EP_NUM USBGEN_EP_SIZE 2009 Microchip Technology Inc. DS01166A_CN 第 23 页

24 USB_SUPPORT_DEVICE 用途 : 先决条件 : 有效值 : 默认值 : 示例 : 确定要实现的应用是否针对 USB 外部设备 无 不需要对宏赋值 对宏进行定义, 就足以选择 USB 在应用中的角色 无定义 #define USB_DEVICE_ONLY USB_DEV_EVENT_HANDLER 用途 : 为 USB 设备固件栈的外部设备支持层定义总线事件处理例程的名字 设备支持层处理所有的标 准请求 ( 参见 Universal Serial Bus Specification, Revision 2.0 第 9 章 ) 宏始终定义为示 例所示的那样, 除非用户打算直接处理标准设备请求 先决条件 : 无 有效值 : 宏应等于能够处理所有 USB 设备请求的例程名 默认值 : USBDevHandleBusEvent 示例 : #define USB_DEV_EVENT_HANDLER USBDEVHandleBusEvent USB_DEV_HIGHEST_EP_NUMBER 用途 : 确定应用将要使用的最高端点编号 注 : 为管理数据传输, USB 设备固件栈将为每个端点使用额外的 RAM 先决条件 : 无 有效值 : 有效值是 1 到 15 之间的任何整数, 包括 1 和 15 默认值 : 15 示例 : #define USB_DEV_HIGHEST_EP_NUMBER 15 USB_DEV_EP0_MAX_PACKET_SIZE 用途 : 为端点 0 定义允许的最大包大小 注 : USB 设备固件栈将使用额外的 RAM, 其字节数等于宏定义的值 先决条件 : 无 有效值 : 宏必须定义为 或 64 默认值 : 8 示例 : #define USB_DEV_EP0_MAX_PACKET_SIZE 8 DS01166A_CN 第 24 页 2009 Microchip Technology Inc.

25 USB_DEV_SUPPORTS_ALT_INTERFACES 用途 : 先决条件 : 有效值 : 默认值 : 示例 : 如果定义了这个宏, USB 设备固件栈将支持在单个配置内的备用接口 注 : 如果定义了这个宏, USB 设备固件栈将使用额外的 RAM 和闪存来管理备用接口 无不需要给宏赋值 对宏进行定义, 就足以使能备用接口支持 无定义 #define USB_DEV_SUPPORTS_ALT_INTERFACES USB_DEV_GET_DESCRIPTOR_FUNC 用途 : 定义向 USB 固件栈提供描述符的例程名 应用必须实现这个例程 函数签名 (signature) 必须 与 usb_device.h 头文件中定义的原型匹配 先决条件 : 无 有效值 : 定义的宏值必须是应用的 获取描述符 例程名, 以支持 USB 外部设备操作 默认值 : 无定义 示例 : #define USB_DEV_GET_DESCRIPTOR_FUNC USBDEVGetDescriptor USB_DEV_GET_EP_CONFIG_TABLE_FUNC 用途 : 定义例程的名称, 例程提供的指针指向端点配置表 根据需要, 使用端点配置表来配置端点 先决条件 : 无 有效值 : 定义的宏值必须是应用的 获取端点配置表 例程名, 以支持 USB 外部设备操作 默认值 : 无定义 示例 : #define USB_DEV_GET_EP_CONFIG_TABLE_FUNC \ USBDEVGetEpConfigurationTable USB_DEV_GET_FUNCTION_DRIVER_TABLE_FUNC 用途 : 定义例程的名称, 例程提供的指针指向功能驱动程序表 先决条件 : 无 有效值 : 定义的宏值必须是应用的 获取功能驱动程序表 例程名, 以支持 USB 外部设备操作 默认值 : 无定义 示例 : #define USB_DEV_GET_FUNCTION_DRIVER_TABLE_FUNC \ USBDEVGetFunctionDriverTable 2009 Microchip Technology Inc. DS01166A_CN 第 25 页

26 USB_DEV_SELF_POWERED 用途 : 先决条件 : 有效值 : 默认值 : 示例 : 如果系统是自供电的 USB 外部设备, 应定义这个宏 注 : 必须与描述符中提供的信息匹配 无不需要给宏赋值 对宏进行定义, 就足以在 USB 外部设备固件栈中使能对自供电设备的支持 无定义 #define USB_DEV_SELF_POWERED USB_DEV_SUPPORT_REMOTE_WAKEUP 用途 : 如果系统要支持远程唤醒主机, 应定义这个宏 先决条件 : 无 有效值 : 不需要给宏赋值 对宏进行定义, 就足以使能对远程唤醒的支持 默认值 : 无定义 示例 : #define USB_DEV_SUPPORT_REMOTE_WAKEUP USB_SAFE_MODE 用途 : 先决条件 : 有效值 : 默认值 : 示例 : 定义宏使能对整个 USB 固件栈进行参数和边界检查 注 : 一旦执行了仔细的测试和调试, 即可不再定义这个宏来删除此特性, 从而提高效率 无不需要给宏赋值 对宏进行定义, 就足以使能对安全模式的支持 无定义 #define USB_SAFE_MODE USBGEN_CONFIG_NUM 用途 : 定义通用驱动程序的配置 ID 编号 默认情况下, 驱动程序仅支持单个配置 先决条件 : 无 有效值 : 设备配置编号必须从 1 开始 默认值 : 无 必须由应用定义 示例 : #define USBGEN_CONFIG_NUM 1 USBGEN_INTF_NUM 用途 : 为通用驱动程序的通信管理接口定义 USB 接口 ID 编号 先决条件 : 无 有效值 : 接口 ID 编号必须从 0 开始, 不得与同一配置中任何其他活动接口发生冲突 默认值 : 无 必须由应用定义 示例 : #define USBGEN_INTF_NUM 0 DS01166A_CN 第 26 页 2009 Microchip Technology Inc.

27 USBGEN_EP_NUM 用途 : 先决条件 : 有效值 : 为通用驱动程序的中断端点定义 USB 端点编号, 中断端点用于向主机发送数据和从主机接收数据 无 端点编号必须在 1 与 15 之间, 包括 1 和 15( 端点 0 是专用的 ), 每个方向的使用不得超过一次 默认值 : 无 必须由应用定义 示例 : #define USBGEN_EP_NUM 1 USBGEN_EP_SIZE 注 : USB 固件栈为跟踪各端点而分配给每个端点一定的存储空间, 从端点 0 开始, 结束于所使用的最高端点 ( 见 USB_DEV_HIGHEST_EP_NUMBER: ) 为此范围内未使用的端点分配存储空间, 将导致分配的存储空间被浪费 用途 : 为定制驱动程序的中断端点定义允许的最大包大小 演示应用还使用这个宏定义缓冲区大小 先决条件 : 无 有效值 : 宏值必须定义为 或 64 默认值 : 无 必须由应用定义 示例 : #define USBGEN_EP_SIZE Microchip Technology Inc. DS01166A_CN 第 27 页

28 附录 B: USB 通用功能 API 本节将对通用功能驱动程序 API 进行说明 API 为应用提供了一种在 USB 上传输数据的方法, 就好像它是具有读 / 写能力的 通用 设备一样 对于应用而言, USB 细节都被隐藏了起来 表 B-1 对通用功能驱动程序 API 进行了概括. 表 B-1: USB 通用功能 API 概要 操作 说明 USBGenRxIsBusy 查看系统当前是否正忙于通过 USB 接收来自主机的数据 USBGenTxIsBusy 查看系统当前是否正忙于通过 USB 向主机发送数据 USBGenGetRxLength 提供来自主机的最近一次传输所接收的字节数 USBGenWrite 准备通过 USB 向主机发送数据 USBGenRead 准备通过 USB 接收来自主机的数据 后续页将给出各 API 例程的详细说明 DS01166A_CN 第 28 页 2009 Microchip Technology Inc.

29 USB 通用功能 API - USBGenRxIsBusy 确定 USB 接口当前是否正忙于接收来自主机的数据 语法 BOOL USBGenRxIsBusy ( void ) 参数 无 返回值 TRUE 如果 USB 接口当前正忙于接收数据 FALSE 如果可用于接收新数据 先决条件 必须已调用 USBInitialize, 且返回值表明调用成功 ; 同时, 主机必须已经成功地把设备枚举为 Microchip 通用 USB 设备 副作用 无 示例 if (!USBGenRxIsBusy()) USBGenRead(&buffer, sizeof(buffer)); } 2009 Microchip Technology Inc. DS01166A_CN 第 29 页

30 USB 通用功能 API - USBGenTxIsBusy 确定 USB 接口当前是否正忙于向主机发送数据 语法 BOOL USBGenTxIsBusy ( void ) 参数 无 返回值 TRUE 如果 USB 接口当前正忙于发送数据 FALSE 如果可用于发送新数据 先决条件 必须已调用 USBInitialize, 且返回值表明调用成功 ; 同时, 主机必须已经成功地把设备枚举为 Microchip 通用 USB 设备 副作用 无 示例 if (!USBGenTxIsBusy()) USBGenWrite(&gData[gTail], size); } DS01166A_CN 第 30 页 2009 Microchip Technology Inc.

31 USB 通用功能 API - USBGenGetRxLength 给出已经从主机接收了多少数据 语法 BYTE USBGenGetRxLength ( void ) 参数 无 返回值 返回最近一次调用 USBGenRead 时复制到调用程序缓冲区中的字节数 先决条件 必须已调用 USBInitialize, 且返回值表明调用成功 ; 同时, 主机必须已经成功地把设备枚举为 Microchip 通用 USB 设备 副作用 无 示例 USBGenRead(&buffer, sizeof(buffer)); while (!USBGenRxIsBusy()) ; // 等待读操作完成 count = USBGenGetRxLength(); // 获得实际读取的字节数 2009 Microchip Technology Inc. DS01166A_CN 第 31 页

32 USB 通用功能 API USBGenWrite 开始通过 USB 向主机发送数据 语法 void USBGenWrite ( BYTE *buffer, BYTE len ) 参数 buffer 指针, 指向数据字节的起始位置 len 调用者缓冲区的数据长度, 以字节为单位 返回值 无 先决条件 必须已调用 USBInitialize, 且返回值表明调用成功 ; 同时, 主机必须已经成功地把设备枚举为 Microchip 通用 USB 设备 此外, 在调用此例程之前,USBGenTxIsBusy() 必须返回 FALSE, 否则可能导致无法预料的行为 副作用 已经开始向 USB 进行给定长度和数据的传输 示例 if (!USBGenTxIsBusy()) USBGenWrite(&buffer, sizeof(buffer)); } DS01166A_CN 第 32 页 2009 Microchip Technology Inc.

33 USB 通用功能 API USBGenRead 准备通过 USB 接收来自主机的数据, 并将数据置于调用者的缓冲区 语法 BYTE USBGenRead ( BYTE *buffer, BYTE len ) 参数 buffer 指针, 指向接收数据的缓冲区之起始位置 len 调用者缓冲区的数据长度, 以字节为单位返回值当前已从主机接收到的字节数 注 : Rx 传输刚刚开始时, 这个值一直为零 此后, 如果传输正在进行, 调用此例程将返回调用者缓冲区当前可用的字节数 先决条件 必须已调用 USBInitialize, 且返回值表明调用成功 ; 同时, 主机必须已经成功地把设备枚举为 Microchip 通用 USB 设备 副作用 USB 接口已经准备从主机接收数据, 并将数据置于调用者缓冲区 ( 参见上文 返回值 下的注释 ) 示例 if (!USBGenRxIsBusy()) USBGenRead(&buffer, sizeof(buffer)); } 2009 Microchip Technology Inc. DS01166A_CN 第 33 页

34 附录 C: USB 通用功能驱动程序接口 本节将说明的例程构成了通用功能驱动程序与低级别 USB 设备固件栈之间的接口 这个接口由两个例程组成, 一个用来初始化功能驱动程序, 另一个用来处理通用驱动程序特定的事件 应用不应直接调用这两个例程 例程是在合适的时间由低级别的 USB 固件栈调用的 指向这两个例程的指针存放在功能驱动程序表中 ( 参见 应用特定的 USB 支持 ), 以便向低级别的 USB 固件栈标识它们 这种机制可支持多功能设备 表 C-1: USB 通用功能驱动程序接口概要操作 USBGenInitialize 初始化通用驱动程序 USBGenEventHandler 标识并处理总线事件. 说明 DS01166A_CN 第 34 页 2009 Microchip Technology Inc.

35 USB 通用功能驱动程序接口 - USBGenInitialize 此例程由低级别的 USB 固件栈调用 当主机已经把系统配置成 Microchip 定制设备时, 就将调用此例程 它的用途是初始化并激活通用功能驱动程序 语法 BOOL USBGenInitialize ( unsigned long flags ) 参数 flags 初始化标志, 第 3-0 位用来标识所使用的端点 所有其他位都保留, 应设为零 返回值 TRUE 如果成功的话 FALSE 如果失败的话 先决条件 无 副作用 Microchip 通用功能驱动程序已经初始化, 并准备好处理事件 示例 const FUNC_DRV gdevfunctable[] = // 通用功能驱动程序 USBGenInitialize, // 初始化例程 USBGenEventHandler, // 事件例程 USBGEN_EP_NUM // 端点编号 ( 低 4 位 ) } }; 2009 Microchip Technology Inc. DS01166A_CN 第 35 页

36 USB 通用功能驱动程序接口 USBGenEventHandler 此例程由低级别的 USB 固件栈调用, 通知通用功能驱动程序, 在 USB 上有事件发生 它的用途是根据需要处理这些事件, 以便支持通用驱动程序 API 语法 BOOL USBGenEventHandler ( USB_EVENT event, void *data, unsigned int size ) 参数 event 事件 ID data 指针, 指向事件特定的数据 size 事件特定数据的长度 ( 以字节为单位 ), 如果有数据的话 注 : 事件由级别更低的 USB 固件栈定义, 由通用功能驱动程序处理 返回值 TRUE 如果事件已经得到处理 FALSE 如果没有得到处理 ( 或者, 如果需要进一步的处理 ) 先决条件 系统已经枚举为 USB 上的 Microchip 通用设备, 通用功能驱动程序已经初始化 副作用 随事件的不同, 副作用变化非常大 一般而言, 事件已得到适当处理 示例 注 : 有关可能发生的 USB 设备层事件的完整列表和相关数据, 请参阅 AN1176, PIC32 USB 设备栈编程指南 const FUNC_DRV gdevfunctable[] = // 通用功能驱动程序 USBGenInitialize, // 初始化例程 USBGenEventHandler, // 事件例程 USBGEN_EP_NUM // 端点编号 ( 低 4 位 ) } }; DS01166A_CN 第 36 页 2009 Microchip Technology Inc.

37 附录 D: USB 固件栈架构 PIC32 USB 设备固件栈架构的说明, 请参阅 AN1176 PIC32 USB 设备栈编程指南 2009 Microchip Technology Inc. DS01166A_CN 第 37 页

38 附录 E: USB 描述符表 通用演示应用定义了它自己的描述符表, 如 应用特定的 USB 支持 和 定制 USB 应用 所示 描述符表的值如下所示 : 表 E-1: 设备描述符 字段 说明 大小 ( 字节 ) 值 ( 十六进制 ) blength 描述符的大小 1 12 bdescriptortype USB_DESCRIPTOR_TYPE_DEVICE 1 01 bcdusb USB 规范版本, BCD 码格式 bdeviceclass 设备类代码 1 00 bdevicesubclass 设备子类代码 1 00 bdeviceprotocol 设备协议 1 00 bmaxpacketsize0 EP0, 最大包大小 1 08 idvendor 供应商 ID (VID) 2 04d8 idproduct 产品 ID (PID) 2 000C bcddevice 设备版本编号, BCD 码格式 imanufacturer 制造商名称字符串索引 1 01 iproduct 产品描述字符串索引 1 02 iserialnum 产品序列号字符串索引 1 03 bnumconfigurations 支持的配置数量 1 01 表 E-2: 配置描述符字段 说明 大小 ( 字节 ) 值 ( 十六进制 ) blength 描述符的大小 1 09 bdescriptortype USB_DESCRIPTOR_TYPE_CONFIGURATION 1 02 wtotallength 此配置中全部描述符的总长度 bnuminterfaces 此配置中的接口数量 1 01 bconfigurationvalue 此配置的 ID 编号 1 01 iconfiguration 说明此配置的字符串描述符的索引 1 00 bmattributes 此配置属性的位映射 1 80 bmaxpower 1/2 最大电流 ( 以 ma 为单位 ) 1 32 表 E-3: 接口描述符字段 说明 大小 ( 字节 ) 值 ( 十六进制 ) blength 描述符的大小 1 09 bdescriptortype USB_DESCRIPTOR_TYPE_INTERFACE 1 04 binterfacenumber 接口 ID 编号 1 00 balternatesetting 备用接口设置的 ID 编号 1 00 bnumendpoints 此接口中端点的数量 1 02 binterfaceclass USB 接口类 ID 1 00 binterfacesubclass USB 接口子类 ID 1 00 binterfaceprotocol USB 接口协议 ID 1 00 iinterface 接口描述字符串索引 1 00 DS01166A_CN 第 38 页 2009 Microchip Technology Inc.

39 表 E-4: 数据 (OUT) 端点描述符字段 说明 大小 ( 字节 ) 值 ( 十六进制 ) blength 描述符的大小 1 07 bdescriptortype USB_DESCRIPTOR_TYPE_INTERFACE 1 05 bendpointaddress 端点的地址和方向 1 01 bmattributes 中断传输端点 1 03 wmaxpacketsize 此端点能处理的最大包 binterval 查询周期 ( 以 ms 为单位 ) 1 20 表 E-5: 中断 (IN) 端点描述符字段 说明 大小 ( 字节 ) 值 ( 十六进制 ) blength 描述符的大小 1 07 bdescriptortype USB_DESCRIPTOR_TYPE_ENDPOINT 1 05 bendpointaddress 端点的地址和方向 1 81 bmattributes 中断传输端点 1 03 wmaxpacketsize 此端点能处理的最大包 binterval 查询周期 ( 以 ms 为单位 ) 1 20 表 E-6: 语言 ID 字符串 (0) 描述符字段 说明 大小 ( 字节 ) 值 ( 十六进制 ) blength 描述符的大小 1 04 bdescriptortype USB_DESCRIPTOR_TYPE_STRING 1 03 wlangid 语言 ID 代码 表 E-7: 供应商描述字符串 (1) 描述符 字段 说明 大小 ( 字节 ) ) 值 ( 十六进制 / 字符串 ) blength 描述符的大小 1 34 bdescriptortype USB_DESCRIPTOR_TYPE_STRING 1 03 bstring 序列号字符串 50 Microchip Technology Inc. 表 E-8: 设备描述字符串 (2) 描述符字段 说明 大小 ( 字节 ) 值 ( 十六进制 / 字符串 ) blength 描述符的大小 1 34 bdescriptortype USB_DESCRIPTOR_TYPE_STRING 1 03 wlangid 语言 ID 代码 54 PIC32 PICDEM Demo Emulation 表 E-9: 序列号字符串 (3) 描述符字段 说明 大小 ( 字节 ) 值 ( 十六进制 / 字符串 ) blength 描述符的大小 1 16 bdescriptortype USB_DESCRIPTOR_TYPE_STRING 1 03 bstring 序列号字符串 Microchip Technology Inc. DS01166A_CN 第 39 页

40 附录 F: 获取描述符例程 下面的 获取描述符 例程 ( 以及辅助函数 ) 提供了从低级别 USB 协议栈对描述符 ( 应用特定的描述符 ) 的访问途径 static inline const void *GetConfigurationDescriptor( BYTE config, unsigned int *length ) switch (config) case 0: // 配置 1 ( 默认 ) *length = sizeof(config1); return &config1; default: return NULL; } } // GetConfigurationDescriptor static inline const void *GetStringDescriptor( PDESC_ID desc, unsigned int *length ) // 检查语言 ID if (desc->lang_id!= LANG_1_ID) return NULL; } // 获取请求的字符串 switch(desc->index) case 0: // 字符串 0 *length = sizeof(string0); return &string0; case 1: // 字符串 1 *length = sizeof(string1); return &string1; case 2: // 字符串 2 *length = sizeof(string2); return &string2; case 3: // 字符串 3 *length = sizeof(string3); return &string3; default: return NULL; } } // GetStringDescriptor const void *USBDEVGetDescriptor ( PDESC_ID desc, unsigned int *length ) switch (desc->type) case USB_DESCRIPTOR_TYPE_DEVICE: // 设备描述符 *length = sizeof(dev_desc); return &dev_desc; case USB_DESCRIPTOR_TYPE_CONFIGURATION: // 配置描述符 return GetConfigurationDescriptor(desc->index, length); case USB_DESCRIPTOR_TYPE_STRING: // 字符串描述符 return GetStringDescriptor(desc, length); DS01166A_CN 第 40 页 2009 Microchip Technology Inc.

41 // 对于所有未支持的描述符请求, 将会失败 : default: return NULL; } } // USBDEVGetDescriptor 辅助例程都是内联 (inline) 函数 使用它们, 代码的可读性更高, 同时不会产生函数调用开销 USB 固件栈通过 USB_DEV_GET_DESCRIPTOR_FUNC 宏 ( 见附录 A: USB 固件栈配置 ) 来标识 USBDEVGetDescriptor 2009 Microchip Technology Inc. DS01166A_CN 第 41 页

42 软件许可协议 Microchip Technology Incorporated ( 以下简称 本公司 ) 在此提供的软件旨在向本公司客户提供专门用于 Microchip 生产的产品的软件 本软件为本公司及 / 或其供应商所有, 并受到适用的版权法保护 版权所有 使用时违反前述约束的用户可能会依法受到刑事制裁, 并可能由于违背本许可的条款和条件而承担民事责任 本软件是按 现状 提供的 任何形式的保证, 无论是明示的 暗示的或法定的, 包括但不限于有关适销性和特定用途的暗示保证, 均不适用于本软件 对于在任何情况下 因任何原因造成的特殊的 附带的或间接的损害, 本公司概不负责. 附录 G: 嵌入式设备上的 USB 通用功能源代码 Microchip USB 定制驱动程序的完整源代码在免费许可证协议的基础上提供 它以一个档案文件的形式提供, 可以从 Microchip 公司网站下载, 地址是 : 下载档案文件之后, 应查阅版本说明, 了解当前的版本号以及软件的修改历史 DS01166A_CN 第 42 页 2009 Microchip Technology Inc.

43 版本历史 版本 A (2008 年 2 月 ) 这是本文档的初始版本 2009 Microchip Technology Inc. DS01166A_CN 第 43 页

44 注 : DS01166A_CN 第 44 页 2009 Microchip Technology Inc.

45 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一 目前, 仍存在着恶意 甚至是非法破坏代码保护功能的行为 就我们所知, 所有这些行为都不是以 Microchip 数据手册中规定的操作规范来使用 Microchip 产品的 这样做的人极可能侵犯了知识产权 Microchip 愿与那些注重代码完整性的客户合作 Microchip 或任何其他半导体厂商均无法保证其代码的安全性 代码保护并不意味着我们保证产品是 牢不可破 的 代码保护功能处于持续发展中 Microchip 承诺将不断改进产品的代码保护功能 任何试图破坏 Microchip 代码保护功能的行为均可视为违反了 数字器件千年版权法案 (Digital Millennium Copyright Act) 如果这种行为导致他人在未经授权的情况下, 能访问您的软件或其他受版权保护的成果, 您有权依据该法案提起诉讼, 从而制止这种行为 提供本文档的中文版本仅为了便于理解 请勿忽视文档中包含的英文部分, 因为其中提供了有关 Microchip 产品性能和使用情况的有用信息 Microchip Technology Inc. 及其分公司和相关公司 各级主管与员工及事务代理机构对译文中可能存在的任何差错不承担任何责任 建议参考 Microchip Technology Inc. 的英文原版文档 本出版物中所述的器件应用信息及其他类似内容仅为您提供便利, 它们可能由更新之信息所替代 确保应用符合技术规范, 是您自身应负的责任 Microchip 对这些信息不作任何明示或暗示 书面或口头 法定或其他形式的声明或担保, 包括但不限于针对其使用情况 质量 性能 适销性或特定用途的适用性的声明或担保 Microchip 对因这些信息及使用这些信息而引起的后果不承担任何责任 如果将 Microchip 器件用于生命维持和 / 或生命安全应用, 一切风险由买方自负 买方同意在由此引发任何一切伤害 索赔 诉讼或费用时, 会维护和保障 Microchip 免于承担法律责任, 并加以赔偿 在 Microchip 知识产权保护下, 不得暗中或以其他方式转让任何许可证 商标 Microchip 的名称和徽标组合 Microchip 徽标 Accuron dspic KEELOQ KEELOQ 徽标 MPLAB PIC PICmicro PICSTART rfpic SmartShun 和 UNI/O 均为 Microchip Technology Inc. 在美国和其他国家或地区的注册商标 FilterLab Linear Active Thermistor MXDEV MXLAB SEEVAL SmartSensor 和 The Embedded Control Solutions Company 均为 Microchip Technology Inc. 在美国的注册商标 Analog-for-the-Digital Age Application Maestro CodeGuard dspicdem dspicdem.net dspicworks dsspeak ECAN ECONOMONITOR FanSense In-Circuit Serial Programming ICSP ICEPIC Mindi MiWi MPASM MPLAB Certified 徽标 MPLIB MPLINK mtouch nanowatt XLP PICkit PICDEM PICDEM.net PICtail PIC 32 徽标 PowerCal PowerInfo PowerMate PowerTool REAL ICE rflab Select Mode Total Endurance TSHARC WiperLock 和 ZENA 均为 Microchip Technology Inc. 在美国和其他国家或地区的商标 SQTP 是 Microchip Technology Inc. 在美国的服务标记 在此提及的所有其他商标均为各持有公司所有 2009, Microchip Technology Inc. 版权所有 Microchip 位于美国亚利桑那州 Chandler 和 Tempe 与位于俄勒冈州 Gresham 的全球总部 设计和晶圆生产厂及位于美国加利福尼亚州和印度的设计中心均通过了 ISO/TS-16949:2002 认证 公司在 PIC MCU 与 dspic DSC KEELOQ? 跳码器件 串行 EEPROM 单片机外设 非易失性存储器和模拟产品方面的质量体系流程均符合 ISO/TS :2002 此外, Microchip 在开发系统的设计和生产方面的质量体系也已通过了 ISO 9001:2000 认证 2009 Microchip Technology Inc. DS01166A_CN 第 45 页

46 全球销售及服务网点 美洲 亚太地区 亚太地区 欧洲 公司总部 Corporate Office 2355 West Chandler Blvd. Chandler, AZ Tel: Fax: 技术支持 : 网址 : 亚特兰大 Atlanta Duluth, GA Tel: Fax: 波士顿 Boston Westborough, MA Tel: Fax: 芝加哥 Chicago Itasca, IL Tel: Fax: 克里夫兰 Cleveland Independence, OH Tel: Fax: 达拉斯 Dallas Addison, TX Tel: Fax: 底特律 Detroit Farmington Hills, MI Tel: Fax: 科科莫 Kokomo Kokomo, IN Tel: Fax: 洛杉矶 Los Angeles Mission Viejo, CA Tel: Fax: 圣克拉拉 Santa Clara Santa Clara, CA Tel: Fax: 加拿大多伦多 Toronto Mississauga, Ontario, Canada Tel: Fax: 亚太总部 Asia Pacific Office Suites , 37th Floor Tower 6, The Gateway Harbour City, Kowloon Hong Kong Tel: Fax: 中国 - 北京 Tel: Fax: 中国 - 成都 Tel: Fax: 中国 - 香港特别行政区 Tel: Fax: 中国 - 南京 Tel: Fax: 中国 - 青岛 Tel: Fax: 中国 - 上海 Tel: Fax: 中国 - 沈阳 Tel: Fax: 中国 - 深圳 Tel: Fax: 中国 - 武汉 Tel: Fax: 中国 - 厦门 Tel: Fax: 中国 - 西安 Tel: Fax: 中国 - 珠海 Tel: Fax: 台湾地区 - 高雄 Tel: Fax: 台湾地区 - 台北 Tel: Fax: 澳大利亚 Australia - Sydney Tel: Fax: 印度 India - Bangalore Tel: Fax: 印度 India - New Delhi Tel: Fax: 印度 India - Pune Tel: Fax: 日本 Japan - Yokohama Tel: Fax: 韩国 Korea - Daegu Tel: Fax: 韩国 Korea - Seoul Tel: Fax: 或 马来西亚 Malaysia - Kuala Lumpur Tel: Fax: 马来西亚 Malaysia - Penang Tel: Fax: 菲律宾 Philippines - Manila Tel: Fax: 新加坡 Singapore Tel: Fax: 泰国 Thailand - Bangkok Tel: Fax: 奥地利 Austria - Wels Tel: Fax: 丹麦 Denmark-Copenhagen Tel: Fax: 法国 France - Paris Tel: Fax: 德国 Germany - Munich Tel: Fax: 意大利 Italy - Milan Tel: Fax: 荷兰 Netherlands - Drunen Tel: Fax: 西班牙 Spain - Madrid Tel: Fax: 英国 UK - Wokingham Tel: Fax: 台湾地区 - 新竹 Tel: Fax: /26/09 DS01166A_CN 第 46 页 2009 Microchip Technology Inc.

untitled

untitled C 8051 MCU SPI EEPROM Alexandru Valeanu Microchip Technology Inc. Microchip Technology 25XXX EEPROM SPI 25XXX EEPROM SO 25XXX EEPROM 3MHz 20 MHz SPI HOLD 25XXX EEPROM EEPROM MCU HOLD 25XXX EEPROM SPI EEPROM

More information

00872a.book

00872a.book 从 MCP2510 升 级 至 MCP2515 作 者 : 介 绍 Pat Richards Microchip Technology Inc. 开 发 MCP2510 独 立 CAN 控 制 器 的 初 衷 是 赋 予 CAN 系 统 和 模 块 设 计 人 员 更 多 的 灵 活 性, 允 许 他 们 为 自 己 的 应 用 选 择 最 好 的 处 理 器 使 用 MCP2510 不 会 使 设

More information

untitled

untitled N1113 8051MU I 2 EEPROM lexandru Valeanu Microchip Technology Inc. Microchip Technology 24XXX EEPROM 2 SL 24XXX EEPROM 24XXX EEPROM I 2 100 khz 1MHz 24XXX EEPROM 2 I 2 EEPROM 128 512 b 100 khz 1MHz 1.7V

More information

01262B.book

01262B.book 使用 C30 编译器实现单片机与片外串行 SRAM 的通信 作者 : 引言 Martin Bowman Microchip Technology Inc. 适用于 Microchip 的 dspic DSC 和 PIC24 系列单片机的 C30 编译器为寻址外部存储器提供了一个解决方案 该编译器支持这样的功能, 即允许用户按照访问 MCU 的片内存储器的方式来访问外部存储器 本应用笔记主要介绍如何使用

More information

61127c_cn.book

61127c_cn.book 1 第 1 章 简 介 简 介 目 录 本 章 包 括 下 列 主 题 : 1.1 简 介... 1-2 1.2 本 手 册 的 目 标... 1-2 1.3 器 件 结 构... 1-2 1.4 开 发 支 持... 1-4 1.5 样 式 和 符 号 约 定... 1-4 1.6 相 关 文 档... 1-6 1.7 版 本 历 史... 1-7 2010 Microchip Technology

More information

41632B.book

41632B.book 互 补 波 形 发 生 器 (CWG) 可 配 置 逻 辑 单 元 (CLC) 和 数 控 振 荡 器 (NCO) 外 设 技 巧 与 诀 窍 简 介 Microchip 致 力 于 不 断 向 客 户 提 供 体 积 更 小 速 度 更 快 使 用 更 简 便 与 运 行 更 可 靠 的 创 新 产 品 我 们 的 闪 存 PIC MCU 已 广 泛 应 用 于 日 常 生 活 中 从 烟 雾 探

More information

,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC, LCD LC

,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC, LCD LC LCD PIC 单片机解决方案 集成 LCD 驱动器模块的 PIC 单片机 www.microchip.com/lcd ,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC,

More information

CTMU Temperature Measurement AN.book

CTMU Temperature Measurement AN.book 利用 PIC MCU 中的 CTMU 测量温度 TB3016 作者 : 最新一代 PIC24F 和 PIC18F 器件包含的充电时间测量单元 (Charge Time Measurement Unit,CTMU) 使用恒流源来计算电容值的变化以及事件的间隔时间 运用半导体物理学的基本原理, 同样的电流源也可用来测量温度 这允许使用普通而廉价的二极管来取代相对昂贵的热敏电阻和温度传感器 本技术简介描述了使用

More information

MCP47x6_DaughterBoard.book

MCP47x6_DaughterBoard.book MCP47X6 PICtail Plus 子 板 用 户 指 南 DS51932B_CN 请 注 意 以 下 有 关 Microchip 器 件 代 码 保 护 功 能 的 要 点 : Microchip 的 产 品 均 达 到 Microchip 数 据 手 册 中 所 述 的 技 术 指 标 Microchip 确 信 : 在 正 常 使 用 的 情 况 下, Microchip 系 列 产 品

More information

61146A.book

61146A.book PIC32 2008 Microchip Technology Inc. DS61146A_CN Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Digital Millennium Copyright Act Microchip

More information

CDC_Class_AN1164_Final.book

CDC_Class_AN1164_Final.book 嵌入式设备上的 USB CDC 类 AN1164 作者 : 引言 Bud Caldwell Microchip Technology Inc. 对于最终用户而言, 有了通用串行总线 (Universal Serial Bus,USB), 把外部设备连接到个人计算机上, 已经变得非常简单, 几乎不再需要过去必不可少的大量连接线 RS-232 串行 COM 端口便是不再需要的连接之一, 它已经越来越罕见

More information

21999a_cn.book

21999a_cn.book 1.5A 低 电 压 低 静 态 电 流 LDO 稳 压 器 MCP1727 特 性 输 出 电 流 能 力 为 1.5A 输 入 工 作 电 压 范 围 :2.3V 至 6.0V 可 调 输 出 电 压 范 围 :0.8V 至 5.0V 标 准 固 定 输 入 电 压 : - 0.8V 1.2V 1.8V 2.5V 3.0V 3.3V 和 5.0V 可 根 据 需 要 提 供 其 他 固 定 输

More information

TB3109 PIC32MX 器件中与 USB 模块相关的更改 USB 模块中断位 ( 即 USBIF USBIE USBIP 和 USBIS 位 ) 的位置变化会影响 PIC32MX 器件上的 USB 协议栈操作 表 1 给出了所列 PIC32MX 器件系列中 USBIF USBIE USBIP

TB3109 PIC32MX 器件中与 USB 模块相关的更改 USB 模块中断位 ( 即 USBIF USBIE USBIP 和 USBIS 位 ) 的位置变化会影响 PIC32MX 器件上的 USB 协议栈操作 表 1 给出了所列 PIC32MX 器件系列中 USBIF USBIE USBIP 在 v2013-06-15 MLA USB 设备和主机协议栈中更新 PIC32MX 支持 TB3109 简介 我们提供适合 PIC32MX MCU 的 Microchip 应用程序库 (Microchip Libraries for Applications,MLA), 但未计划向 MLA 添加新功能 v2013-06-15 MLA USB 协议栈本质上支持所有适用的 PIC32MX MCU 器件

More information

21928a.book

21928a.book PS080, PowerTool 800 开发软件用户指南 2005 Microchip Technology Inc. DS21928A_CN 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一

More information

untitled

untitled MCP3421 DS51683A_CN Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Microchip Digital Millennium Copyright Act Microchip Microchip Technology Inc. Microchip

More information

HID_Class_AN1163_Final.book

HID_Class_AN1163_Final.book 嵌入式设备上的 USB HID 类 AN1163 作者 : 引言 人机接口设备 (Human Interface Device, HID) 是一类用在通用串行总线 (Universal Serial Bus,USB) 的设备 构成 HID 类的设备是人们可以用来控制计算机系统操作的设备 这样的设备包括但不只限于 : 鼠标 键盘 操纵杆 按钮及开关 人机接口设备除了提供来自人机接口的信息之外, 还提供各种类型的输出来表明计算机系统采取的操作

More information

21498c_cn.book

21498c_cn.book 精密温度 - 电压转换器 特性 工作电压范围 : - TC147:2.7V 至 4.4V - TC147A:2.5V 至 5.5V 宽温度测量范围 : - -4 C 至 +125 C 温度转换精度高 : - 在 25 C 时为 ±2 C ( 最大值 ) 线性温度斜率 :1 mv/ C ( 典型值 ) 提供 3 引脚 SOT-23B 封装 低工作电流 : - 35 µa 典型值 应用 移动电话 电源过热关断控制

More information

Microsoft Word - DataAns.doc

Microsoft Word - DataAns.doc 一. 用量产工具将一个 U 盘做成带一个 CDROM 和一个 USBHD 只使用一个接口, 但是使用两个应用集合二. 数据分析 43.0 CTL 80 06 00 01 00 00 12 00 GET DESCRIPTOR 27.1.0 wvalue = 00 01 ( 高在后 ) 第一字节 00 索引号, 第二字节 01, 表示描述符的类型编号,table 9-5, 此处表示要取得设备描述符 43.0

More information

70641A.book

70641A.book AN1299 调整指南 1.1 配置双电流检测电阻模式 本文档介绍了 AN1299 PMSM 无传感器 FOC 的单电流检测电阻三相电流重构算法 (DS01299A_CN) 中所述算法调整所需的步骤和设置 1. 第一步, 用户需完成 AN1078 中的调整过程, 其中介绍了在具体电机和硬件上运行滑模控制器 (Slide Mode Controller, SMC) 所需的全部步骤 2. 应用运行后,

More information

PIC18F65J90/85J90 Product Brief

PIC18F65J90/85J90 Product Brief 采用纳瓦技术内置 LCD 驱动器的 64/80 引脚高性能单片机 单片机的特殊性能 : 闪存程序存储器可承受 1000 次擦写 ( 典型值 ) 闪存数据保存时间为 20 年 ( 典型值 ) 软件控制下可自编程 中断具有优先级 8 x 8 单周期硬件乘法器 扩展的看门狗定时器 (Watchdog Timer, WDT): - 周期从 4 ms 到 131s, 可编程设定 通过两个引脚可进行在线串行编程

More information

21666b.book

21666b.book 具 有 关 断 功 能 的 80 ma 小 型 CMOS LDO TC1016 特 性 节 省 空 间 的 5 引 脚 SC-70 和 SOT-23 封 装 极 低 的 工 作 电 流, 利 于 延 长 电 池 寿 命 : 典 型 值 53 µa 很 低 的 电 压 差 (Dropout Voltage) 额 定 输 出 电 流 :80 ma 仅 需 一 个 1µF 的 陶 瓷 输 出 电 容 高

More information

00686A.Book

00686A.Book 理解和使用监控电路 AN686 概要 本应用笔记讨论了什么是单片机监控器件, 为什么需要这些器件以及在选择这些器件时需要考虑的一些因素 监控器件属于一个很广的范畴, 它涵盖了上电复位 (Power on Reset,POR) 器件 欠压检测 (Brown-Out Detect,BOD) 器件和看门狗定时器器件 本应用笔记将仅讨论具有 POR 和 BOD 功能的监控器件 监控电路的工作 监控电路可用于几种不同的应用,

More information

工作原理 脉冲血氧仪基于氧合血红蛋白 (HbO 2 ) 和脱氧血红蛋白 (Hb) 的红光 ( 波长为 nm) 和红外光 ( 波长为 nm) 吸收特性来监测人体血液的氧饱和度 (SpO 2 ) 脉冲血氧仪会交替地闪烁红光和红外光, 光线穿过手指到达光电二极管 HbO

工作原理 脉冲血氧仪基于氧合血红蛋白 (HbO 2 ) 和脱氧血红蛋白 (Hb) 的红光 ( 波长为 nm) 和红外光 ( 波长为 nm) 吸收特性来监测人体血液的氧饱和度 (SpO 2 ) 脉冲血氧仪会交替地闪烁红光和红外光, 光线穿过手指到达光电二极管 HbO 使用 Microchip 的 dspic 数字信号控制器 (DSC) 和模拟器件实现脉冲血氧仪设计 作者 : Zhang Feng Microchip Technology Inc. 简介 脉冲血氧仪是一种用于监测患者血氧饱和度和心率的非侵入式医疗设备 本应用笔记演示了如何使用 Microchip 的 dspic 数字信号控制器 (Digital Signal Controller, DSC) 和模拟器件来实现高精度脉冲血氧仪

More information

01277A_cn.book

01277A_cn.book 使用 C32 编译器进行串行 SRAM 器件与 PIC32 MCU 的接口设计 作者 : 引言 Pinakin K Makwana Microchip Technology Inc. Microchip 的串行 SRAM 产品线提供了向应用添加附加 RAM 的一种新方法 这些器件采用 8 引脚小型封装以及 SPI 接口, 使设计人员提升系统的灵活性 Microchip Technology 的 23XXXX

More information

0507A_Auto Tech_Microchip

0507A_Auto Tech_Microchip 汽 车 无 线 安 全 接 入 技 术 解 决 方 案 Youbok Lee 主 任 工 程 师 Willie Fitzgerald 产 品 营 销 总 监 Microchip Technology Inc. 引 言 全 球 汽 车 半 导 体 面 临 极 大 的 市 场 机 会, 而 汽 车 设 计 工 程 师 正 在 应 对 高 性 价 比 的 性 能 增 强 功 耗 小 尺 寸 和 安 全 性

More information

光 探 测 应 用 光 探 测 应 用 可 以 使 用 许 多 探 测 器, 例 如 光 电 二 极 管 光 电 晶 体 管 光 敏 电 阻 光 电 管 光 电 倍 增 管 电 荷 耦 合 器 件 等 本 应 用 笔 记 将 重 点 介 绍 光 电 二 极 管, 因 为 它 是 最 常 用 的 光

光 探 测 应 用 光 探 测 应 用 可 以 使 用 许 多 探 测 器, 例 如 光 电 二 极 管 光 电 晶 体 管 光 敏 电 阻 光 电 管 光 电 倍 增 管 电 荷 耦 合 器 件 等 本 应 用 笔 记 将 重 点 介 绍 光 电 二 极 管, 因 为 它 是 最 常 用 的 光 用 于 光 探 测 应 用 的 MCP649 运 放 AN494 作 者 : 简 介 Yang Zhen Microchip Technology Inc. 许 多 光 探 测 应 用 中 经 常 使 用 低 输 入 偏 置 运 算 放 大 器 ( 运 放 ), 以 降 低 电 流 误 差 和 提 高 输 出 信 号 的 精 度 以 下 为 典 型 的 光 探 测 应 用 : 烟 雾 探 测 器 火

More information

01018A.book

01018A.book 使用 C18 编译器进行 SPI 串行 EEPROM 与 PIC18 单片机的接口设计 作者 : 引言 Chris Parris Microchip Technology Inc. Microchip Technology 生产的 25XXX 系列串行 EEPROM 兼容 SPI 通信标准, 最大时钟频率范围从 3MHz 到 20 MHz 许多时候, 在设计利用串行 EEPROM 器件的应用时, 使用非专用

More information

39697b.book

39697b.book 第 9 章看门狗定时器 (WDT) 目录 本章包括下列主题 : 9.1 简介...9-2 9.2 WDT 工作原理... 9-3 9.3 寄存器映射... 9-7 9.4 设计技巧... 9-8 9.5 相关应用笔记... 9-9 9.6 版本历史... 9-10 9 看门狗定时器 (WDT) 2010 Microchip Technology Inc. DS39697B_CN 第 9-1 页 PIC24F

More information

2.0 MHz, 500 mA Synchronous Buck Regulator

2.0 MHz, 500 mA Synchronous Buck Regulator 2.0 MHz 500 ma 同 步 降 压 稳 压 器 MCP1603 特 性 典 型 效 率 大 于 90% 输 出 电 流 最 高 为 500 ma 低 静 态 电 流 = 45 µa ( 典 型 值 ) 低 关 断 电 流 = 0.1 µa ( 典 型 值 ) 可 调 输 出 电 压 : - 0.8V 至 4.5V 固 定 输 出 电 压 : - 1.2V 1.5V 1.8V 2.5V 和

More information

00966A.book

00966A.book SPI 串行 EEPROM 与 PICmicro 单片机的接口设计 作者 : 引言 Martin Kvasnicka Microchip Technology Inc. 目前市场上有许多种单片机用在嵌入式控制系统设计中, 这些嵌入式控制系统中的很大一部分都要用到非易失性存储器 由于串行 EEPROM 具有封装尺寸小, 存储容量灵活, 对 I/O 引脚要求低, 和低功耗低成本等特点, 已成为非易失性存储器的首选

More information

01236B.book

01236B.book 使用 C3 和定时器连接 dspic33 DSC 和 PIC24 MCU 与兼容 UNI/O 总线的串行 EEPROM 作者 : 简介 Martin Kvasnicka Microchip Technology Inc. 随着嵌入式系统小型化的趋势, 市场对于减少器件间通信所用 I/O 引脚数的需求也与日俱增 Microchip 开发的 UNI/O 总线正满足了这一需求, 这一个低成本且易于实现的解决方案,

More information

MCP Phase Energy Meter Reference Design Using PIC18F2520 Users Guide

MCP Phase Energy Meter Reference Design Using PIC18F2520 Users Guide 跟踪接口工具包规范 跟踪接口工具包 简介 MPLAB REAL ICE 在线仿真器跟踪接口工具包 (AC2446) 可与具有跟踪连接器的 PIC32 接插模块 (PIM)( 表 1-1) 配合使用 具有跟踪连接器的 PIC32 PIM 支持 PIC32 指令跟踪 请参见仿真器文档了解关于 PIC32 指令跟踪的更多信息 表 1-1: PIC32 PIM 列表 * PIM 编号 PIM 名称 跟踪连接器

More information

00513D_CN.FM

00513D_CN.FM 使用 PIC16C54 实现模数转换 AN513 作者 : 简介 本应用笔记介绍了一种使用 PIC16C5X 系列单片机实现模数转换 (Analog to Digital,A/D) 的方法 仅需 5 个外部元件即可实现该转换器, 且可通过软硬件配置使转换分辩率达到 6 到 10 位且转换时间不短于 250 µs 这一方法可用于电压和电流转换且使用软件校准技术来补偿由于时间和温度漂移以及元件误差造成的精度误差

More information

ICD ICD ICD ICD ICD

ICD ICD ICD ICD ICD MPLAB ICD2 MPLAB ICD2 PIC MPLAB-IDE V6.0 ICD2 usb PC RS232 MPLAB IDE PC PC 2.0 5.5V LED EEDATA MPLAB ICD2 Microchip MPLAB-IDE v6.0 Windows 95/98 Windows NT Windows 2000 www.elc-mcu.com 1 ICD2...4 1.1 ICD2...4

More information

33023A.book(31001A_cn.fm)

33023A.book(31001A_cn.fm) 1 第 1 章 简 介 简 介 目 录 本 章 包 括 下 面 一 些 主 要 内 容 : 1.1 简 介...1-2 1.2 本 手 册 的 宗 旨... 1-3 1.3 器 件 结 构... 1-4 1.4 开 发 支 持... 1-6 1.5 器 件 种 类... 1-7 1.6 格 式 和 符 号 的 约 定... 1-12 1.7 相 关 文 档... 1-14 1.8 相 关 应 用 笔

More information

01096B.book

01096B.book 使用 C30 编译器进行 SPI 串行 EEPROM 与 dspic33f 和 PIC24F 的接口设计 AN1096 作者 : 引言 Martin Kvasnicka Microchip Technology Inc. Microchip 的 25XXX 系列串行 EEPROM 均与 SPI 兼容, 其最大时钟频率在 3 MHz 到 20 MHz 的范围内 许多时候, 当设计利用串行 EEPROM

More information

Chapter #

Chapter # 第三章 TCP/IP 协议栈 本章目标 通过本章的学习, 您应该掌握以下内容 : 掌握 TCP/IP 分层模型 掌握 IP 协议原理 理解 OSI 和 TCP/IP 模型的区别和联系 TCP/IP 介绍 主机 主机 Internet TCP/IP 早期的协议族 全球范围 TCP/IP 协议栈 7 6 5 4 3 应用层表示层会话层传输层网络层 应用层 主机到主机层 Internet 层 2 1 数据链路层

More information

SMSC LAN8700 Datasheet

SMSC LAN8700 Datasheet Microchip LAN9252 SDK 与 Beckhoff EtherCAT SSC 集成 AN1916 作者 : Kansal Mariam Banu Shaick Ibrahim Microchip Technology Inc. 简介 Microchip LAN9252 是一款集成双以太网 PHY 的 2/3 端口 EtherCAT 从控制器 (EtherCAT Slave Controller,ESC)

More information

Using Microchip’s Micropower LDOs

Using Microchip’s Micropower LDOs 使用 Microchip 的微功率 LDO AN765 作者 : 简介 Paul Paglia, 公式 1: Microchip Technology Inc. = V REF [( ) 1] V REF = 1.20V Microchip Technology, Inc 的微功率 LDO 系列采用低电压 CMOS 工艺技术 这些 LDO 提供与双极型稳压器类似的纹波抑制和压差特性, 但效率却显著提高了

More information

01476A.book

01476A.book 结合 CLC 和 NCO 实现高分辨率 PWM AN1476 作者 : 简介 Cobus Van Eeden Microchip Technology Inc. 虽然许多应用可以使用分辨率低于 8 位的 PWM, 但是有一些应用 ( 例如灯具调光 ) 由于人眼灵敏度的原因需要较高分辨率 背景 传统的 PWM 使用定时器来生成规则的开关频率 (T PWM ), 然后使用纹波计数器来确定在脉冲结束之前,

More information

Cost_Effective C Handbook

Cost_Effective C Handbook HT66FB5x0 实现 D Joystick 的程序范例 (C 语言 ) 文件编码 :AN0S 简介 HT66FB5x0 系列 MCU 为 A/D Flash USB 8-Bit MCU, 本文将介绍如何使用 HT66FB550 编 写 USB D Joystick C 语言程序范例, 供读者参考 工作原理 Joystick 简介 Joystick, 通常翻译成摇杆或操纵杆, 是一种游戏控制器,

More information

800 mA Fixed-Output CMOS LDO with Shutdown

800 mA Fixed-Output CMOS LDO with Shutdown I 2 C 7/8-7 128 129-8 256 257 4 R AB - 5 kω - 1 kω - 5 kω - 1 kω 75Ω - 5 ppm -7 C - 15 ppm I 2 C - 1 khz - 4 khz - 3.4 MHz / TCON 1.5V 2.5 ua 12.5V SCL SDA - 2.7V 5.5V - 1.8V 5.5V -3 db 2 MHz 5. kω -4

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

Rotork new IQ brochure

Rotork new IQ brochure Rotork IQ Rotork IQ 3 40 4 5 6 7 Rotork 8 10 12 14 16 18 20 Rotork Rotork Rotork Controls Ltd, Bath, UK 2 Rotork Controls Inc, Rochester, USA Rotork IQ Rotork IQ IQ Rotork IQ Rotork IQ IQ Rotork IQ IQ

More information

RW Focus Asia Whitepaper CH1029

RW Focus Asia Whitepaper CH1029 F CUSASIA 1 Robert Walters Focus Asia Whitepaper Matthew Bennett Robert Walters 2 03 04 06 08 10 13 13 14 3 4 5 Robert Walters Focus Asia Whitepaper 6 7 Robert Walters Focus Asia Whitepaper 8 9 Robert

More information

93004A.book

93004A.book 用 dspic DSC MCPWM 模块驱动交流感应电机 作者 : Jorge Zambada Microchip Technology Inc. 如图 1 所示, 电机绕组的电感对 PWM 电压源的电流进行滤波 正如下文即将介绍的, 基于该原理我们可利用 PWM 信号产生正弦波来对三相 ACIM 进行通电 引言 本文档概括介绍了采用 dspic3f 电机控制数字信号控制器系列芯片实现的电机控制 PWM

More information

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor 1 4.1.1.1 (Load) 14 1.1 1 4.1.1.2 (Save) 14 1.1.1 1 4.1.2 (Buffer) 16 1.1.2 1 4.1.3 (Device) 16 1.1.3 1 4.1.3.1 (Select Device) 16 2 4.1.3.2 (Device Info) 16 2.1 2 4.1.3.3 (Adapter) 17 2.1.1 CD-ROM 2 4.1.4

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

目录 简介 概念 解决方案 / 实现 相关资源... 7 Microchip 网站... 8 变更通知客户服务... 8 客户支持... 8 Microchip 器件代码保护功能... 8 法律声明... 9 商标... 9 DNV 认证的质量管理体系

目录 简介 概念 解决方案 / 实现 相关资源... 7 Microchip 网站... 8 变更通知客户服务... 8 客户支持... 8 Microchip 器件代码保护功能... 8 法律声明... 9 商标... 9 DNV 认证的质量管理体系 什么是 ICM? 如何将 ICM 用于加密 简介 完整性检查监控器 (Integrity Check Monitor,ICM) 是一个 DMA 控制器, 可使用 Cortex M7 MCU 内存 (ICM 描述符区 ) 中的传输描述符在多个存储区上执行哈希计算 ICM 集成了用于哈希的安全哈希算法 (Secure Hash Algorithm,SHA) 引擎 基于 SHA 的哈希适合用于密码验证 质询哈希身份验证

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

01

01 ZEBRA 技术白皮书 条码编码 101 相关知识介绍 引言 20 70 数据 80 20 90 (JIT) AIAG EIA HIBCC HAZMAT 条码的优势提高数据准确性 99% 85% / / 提升效率 / 2 Zebra Technologies 保持一致性 ID 改进库存和资产管理 成本 / 效益分析 ID ID ID (ERP) RFID Zebra Technologies 3 ID

More information

Rotork E120E IQ brochure

Rotork E120E IQ brochure Rotork IQ IQ IQ 3 7 IP68(3-8 )NEMA 9 6 11 IQ 12 1 16 18 Rotork Controls Ltd, Bath, UK 2 Rotork Controls Inc, Rochester, USA IQ IQ IQ PCIQ-Insight IQ IQ IQ IP67 IQ - EEx ia IIC T ( ) Insight IrDA TM 9 (RS232-IrDA

More information

}; "P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ", " " string imagedata; if(0!= read_image("a.jpg",imagedata)) { return -1; } string rsp; ytopen_sdk m_sd

}; P2VTKNvTAnYNwBrqXbgxRSFQs6FTEhNJ,   string imagedata; if(0!= read_image(a.jpg,imagedata)) { return -1; } string rsp; ytopen_sdk m_sd tencentyun-youtu c++ sdk for 腾讯云智能优图服务 & 腾讯优图开放平台 安装 运行环境 Linux 依赖项 - curl-7.40.0, 获取更新版本 https://github.com/bagder/curl - openssl-1.0.1k, 获取更新版本 https://github.com/openssl/openssl 构建工程 工程采用 CMake 构建 1.

More information

HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD Leica MC170 HD

HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD Leica MC170 HD Leica MC170 HD Leica MC190 HD 5 6 7 8 11 12 13 14 16 HD ( ) 18 HD ( ) 18 PC 19 PC 19 PC 20 Leica MC170 HD Leica MC190 HD 22 Leica MC170 HD Leica MC190 HD 22 23 24 26 Leica MC170 HD Leica MC190 HD ( ) 28

More information

「兆豐商業銀行」原交通銀行客戶重要權益手冊

「兆豐商業銀行」原交通銀行客戶重要權益手冊 行 益 行 95 年 8 錄 1 1 參 4 6 金 7 陸 金 7 7 8 錄 行 行 18 錄 行 行 19 行 行 益 行 行 行 95.8.21 行 行 Mega International Commercial Bank Co., Ltd. 行 017 北 路 123 金 樓 行 不 行 行 行 行 行 更 行 更 行 連 參 錄 不 益 益 不 利 行 行 利 不 行 www.ctnbank.com.tw

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

PIC32 Starter Kit User’s Guide

PIC32 Starter Kit User’s Guide PIC32 入门工具包用户指南 2010 Microchip Technology Inc. DS61159B_CN 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一 目前, 仍存在着恶意

More information

2 12

2 12 SHENZHEN BRILLIANT CRYSTAL TECHNOLOGIC CO.,LTD. The specification for the following models Graphic LCM serial communication control board CB001 PROPOSED BY APPROVED Design Approved TEL:+86-755-29995238

More information

MCP1630

MCP1630 可 用 单 片 机 控 制 的 高 速 脉 宽 调 制 器 特 性 高 速 PWM 操 作 ( 电 流 检 测 至 输 出 有 12 ns 延 时 ) 工 作 温 度 范 围 : - -4 C 至 125 C 精 确 峰 值 电 流 限 制 (±5%)(MCP163) 电 压 模 式 和 平 均 电 流 模 式 控 制 (MCP163V) CMOS 输 出 驱 动 器 ( 直 接 驱 动 MOSFET

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

/ / (FC 3)...

/ / (FC 3)... Modbus/TCP 1.0 1999 3 29 Andy Swales Schneider aswales@modicon.com ... 2 1.... 3 2.... 3 2.1.. 3 2.2..4 2.3..4 2.4... 5 3.... 5 3.1 0... 5 3.2 1... 5 3.3 2... 6 3.4 / /... 7 4.... 7 5.... 8 5.1 0... 9

More information

LayoutPhyCS_cn.book

LayoutPhyCS_cn.book 电容触摸传感器布板和物理设计指南 AN1102 作者 : 介绍 本应用笔记用于说明 AN1101 电容触摸传感简介 中介绍的电容触摸解决方案的布板和物理设计 电容触摸系统的布板和物理设计是设计过程中尤为重要的部分 良好的布板可以使软件实现更为简单 取决于实际应用, 布板可能非常简单, 也可能很复杂, 但相同而简单的设计指南将适用于所有的布板 焊盘外形和尺寸 一般规则 当设计电容触摸按键时, 焊盘的形状并不很重要

More information

Converting image (bmp/jpg) file into binary format

Converting image (bmp/jpg) file into binary format RAiO Image Tool 操作说明 Version 1.0 July 26, 2016 RAiO Technology Inc. Copyright RAiO Technology Inc. 2013 RAiO TECHNOLOGY INC. www.raio.com.tw Revise History Version Date Description 0.1 September 01, 2014

More information

CHCN_8-14_K.indd

CHCN_8-14_K.indd 是德科技 三个理由让您选择深存储快响应示波器 应用指南 介绍 1. 更长的波形捕获时间 = / 1 1 Mpts 10 GSa/s 1 2 100 Mpts 10 1. = / 1 Mpts 10 GSa/s 1 ms 2. = / 100 Mpts 10 GSa/s 10 ms 3 12.5 Mpts 3 300 Kpts 3 3. 3 12.5 Mpts 3 300 Kpts? Agilent

More information

93002A.book

93002A.book 使用 QEI 模块测量速度和位置 GS002 作者 : 引言 本文档给出了电机控制系列 dspic30f 数字信号控制器中正交编码器 (Quadrature Encoder Interface, QEI) 模块的概述 还提供了一个需要测量转子速度和位置的典型电机控制应用的代码示例 QEI 模块 Jorge Zambada Microchip Technology Inc. 正交编码器 ( 又称增量式编码器或光电式编码器

More information

01019A.book

01019A.book EEPROM 耐擦写能力教程 作者 : 基本术语 David Wilkie Microchip Technology Inc. 耐擦写能力 (Endurance) ( 指 EEPROM) 的定义中包含一些需要明确定义和理解的词语和短语 从以下段落可以看出, 不同厂商使用不同的标准 耐擦写循环 (Endurance Cycling) 是所有厂商 ( 和一些客户 ) 采用的测试方法, 用以确定产品经过多少次

More information

图 1 给出了 WWDT 的框图 为确保在最坏情况下能够通过程序主循环, 需要为定时器设置延时 定时器可通过控制寄存器进行配置 在定时器达到其设定的最大计数值并发生上溢前, 用户的应用程序应定期发出 CLRWDT 指令 如果用户的应用程序未能成功通过 CLRWDT 指令复位定时器, 则看门狗将发生上

图 1 给出了 WWDT 的框图 为确保在最坏情况下能够通过程序主循环, 需要为定时器设置延时 定时器可通过控制寄存器进行配置 在定时器达到其设定的最大计数值并发生上溢前, 用户的应用程序应定期发出 CLRWDT 指令 如果用户的应用程序未能成功通过 CLRWDT 指令复位定时器, 则看门狗将发生上 PIC 单片机的窗口看门狗定时器 TB3123 作者 : Ashutosh Tiwari Microchip Technology Inc. 简介 窗口看门狗定时器 (Windowed Watchdog Timer, WWDT) 是 PIC 单片机的增强型看门狗定时器 该定时器是 PIC 单片机现有看门狗定时器 (Watchdog Timer, WDT) 的扩展 Microchip 的 WDT 具有可配置的时间阈值上限和固定的时间阈值下限

More information

JLX

JLX PRODUCT:LCD MODULE. Model No.: JLX177-006 Product Type: 1.77 inch QVGA TFT Modoule. 产品规格书 晶联讯研发研发部 : Written By Checked By Approved By 客户名称 : 结构电子核准 地址 : 深圳市宝安区西乡宝安大道东华工业区 A3 栋 6 楼电话 :0755-29784961 Http://www.jlxlcd.cn

More information

MASTERs 06 Slide Template

MASTERs 06 Slide Template 2009 Microchip Technology Incorporated. 版权所有 C10L08 BAT 第 1 页 C10L08 BAT 便携式产品中的电池管理策略 课程目标 完成课程后, 你将了解到 : 不同化学电池的基本原理和如何在便携式设计中进行应用 针对应用选择合理的电池管理 便携式电源的新趋势以及选择拓扑结构的关键因素 2009 Microchip Technology Incorporated.

More information

Moto Z

Moto Z Moto G Moto NFC 12:36 SIM microsd > / 0.5 SAR SAR SAR https://motorola.com/sar SAR > > www.motorola.com/rfhealth Moto / / www.motorola.com/device-legal /USB-C WLAN WLAN WLAN Moto Mods Nano SIM MicroSD

More information

Bus Hound 5

Bus Hound 5 Bus Hound 5.0 ( 1.0) 21IC 2007 7 BusHound perisoft PC hound Bus Hound 6.0 5.0 5.0 Bus Hound, IDE SCSI USB 1394 DVD Windows9X,WindowsMe,NT4.0,2000,2003,XP XP IRP Html ZIP SCSI sense USB Bus Hound 1 Bus

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

00992A.book

00992A.book 用 dspic30f2010 控制无传感器 BLDC 电机 AN992 作者 : 概述 Stan D Souza Microchip Technology 本应用笔记介绍了如何使用 dspic30f2010 数字信号控制器控制无传感器的 BLDC 电机 应用中采用的技术是基于另一 Microchip 应用笔记 : dspic30f 在无传感器 BLDC 控制中的应用 (AN901) 本文介绍了如何将

More information

24FJ256GB210 PB rev A.book

24FJ256GB210 PB rev A.book 带有 USB OTG 的 16 位 64/100 引脚闪存单片机产品简介 通用串行总线特性 : 兼容 USB v2.0 On-The-Go (OTG) 双重功能 可作为主机或外设 在主机模式下 USB 可低速 (1.5 Mb/s) 和全速 (12 Mb/s) 运行 在设备模式下 USB 可全速运行 用于 USB 的高精度 PLL 最多支持 32 个端点 ( 双向 16 个 ): - 端点缓冲器可在首个

More information

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit 6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128

More information

物理传感器布线设计 基本设计要素包括传感器的尺寸 传感器相对于接地层和 / 或其他低阻抗走线的位置, 以及 mtouch/righttouch 器件中的具体设置 在遵守几个简单准则的前提下, 可以对器件进行独特的设计, 来检测用户接近或附近金属物体和高介电常数物体的移动 要实现具有高信号强度和低噪声

物理传感器布线设计 基本设计要素包括传感器的尺寸 传感器相对于接地层和 / 或其他低阻抗走线的位置, 以及 mtouch/righttouch 器件中的具体设置 在遵守几个简单准则的前提下, 可以对器件进行独特的设计, 来检测用户接近或附近金属物体和高介电常数物体的移动 要实现具有高信号强度和低噪声 Microchip 电容式接近检测设计指南 AN1492 作者 : 简介 Xiang Gao Microchip Technology Inc. 接近检测为用户提供了一种无需物理接触即可与电子设备进行交互的新方法 该技术可提升产品美感, 改进用户体验并降低功耗 为实现接近检测, 人们已使用了许多方法 : 电磁 IR 光学 多普勒效应 电感和电容 每种方法均有各自的优势和局限性 电容传感方法的原理是检测传感器上由于用户触摸或接近而产生的电容变化

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

模拟外设 : 10 位模数转换器 (Analog-to-Digital Converter, ): - 最多 17 路外部通道 - 可在休眠模式下进行转换 : - 最多 2 个 - 低功耗 / 高速模式 - ( 同相 ) 反相输入上的固定电压参考 - 可从外部访问输出 5 位数模转换器 (Digit

模拟外设 : 10 位模数转换器 (Analog-to-Digital Converter, ): - 最多 17 路外部通道 - 可在休眠模式下进行转换 : - 最多 2 个 - 低功耗 / 高速模式 - ( 同相 ) 反相输入上的固定电压参考 - 可从外部访问输出 5 位数模转换器 (Digit 采用 XLP 技术的全功能低引脚数单片机产品简介 说明 : 单片机具有模拟 内核独立外设以及通信外设特性, 并结合了超低功耗 (extreme Low Power,XLP) 技术, 适用于一系列广泛的通用和低功耗应用 外设引脚选择 (Peripheral Pin Select, PPS) 功能可以在使用数字外设 ( 和通信 ) 时进行引脚映射, 以增加应用设计的灵活性 内核特性 : 优化的 C 编译器

More information

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 1 2 1 2 3 4 5 6 7 8 9 10 3 1 150 2 150 1 1 1.1 1.1.1 1.2 1.2.1 1.2.2 1.2.3 1.3 1.3.1 1.3.2 1.4 1.4.1 CPU 1.4.2 I/O 1.4.3 I/O 1.5 1.5.1 CISC RISC 1.5.2 1.5.3 1.6 1.6.1 1.6.2 N 1.6.3 2 2.1 2.1.1 2.1.2 2.1.3

More information

RW Salary Survey 2015 - China A4

RW Salary Survey 2015 - China A4 2015 中国 2014年 中国政府实施从纯制造业和基础设施行业向高科 技行业的转型 加强专业服务和消费者领域发展 以出口 刺激经济增长 由于政府的投资政策重新定位 我们看到越来越多的研发 中心在国内成立 更多国际专业服务公司进入中国市场 奢侈品及零售品牌进驻苏州 杭州 南京和成都等二线城 市 带动了当地市场的招聘需求 纵观总体经济 经济普遍增长 就业市场前景乐观 雇员 与雇主信心增强 2014年前三季度GDP增长率达7.4%

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

文件名

文件名 MICROCHIP PIC10F200/202/204/206 6 8 FLASH PIC10F200 PIC10F202 PIC10F204 PIC10F206 RISC CPU 33 12 8 8 4MHz 1 s 4MHz 1% TM ICSP TM ICD POR DRT WDT RC MCLR I/O /CMOS < 350 A @ 2V 4 MHz 100 na @ 2V FLASH 10000

More information

MPLAB X IDE 和 软 件 工 具 简 介 Microchip 生 产 约 900 种 不 同 的 开 发 工 具, 本 文 档 仅 重 点 介 绍 其 中 一 些 精 选 工 具 关 于 Microchip 开 发 工 具 的 完 整 列 表, 请 访 问

MPLAB X IDE 和 软 件 工 具 简 介 Microchip 生 产 约 900 种 不 同 的 开 发 工 具, 本 文 档 仅 重 点 介 绍 其 中 一 些 精 选 工 具 关 于 Microchip 开 发 工 具 的 完 整 列 表, 请 访 问 开发工具 Microchip开发工具快速指南 www.microchip.com/tools MPLAB X IDE 和 软 件 工 具 简 介 Microchip 生 产 约 900 种 不 同 的 开 发 工 具, 本 文 档 仅 重 点 介 绍 其 中 一 些 精 选 工 具 关 于 Microchip 开 发 工 具 的 完 整 列 表, 请 访 问 www.microchip.com/dts

More information

2 PIC PIC 1 / CPU PIC MCU PIC RC

2 PIC PIC 1 / CPU PIC MCU PIC RC 2 PIC PIC 1 /... 2-2 2... 2-3 3... 2-4 4... 2-4 5... 2-4 6 CPU... 2-5 7 PIC MCU... 2-6 8 PIC16... 2-6 9... 2-7 10... 2-7 11 RC... 2-7 12... 2-8 13... 2-8 14 NOP... 2-9 15 PMD... 2-9 16... 2-10 17 WDTWDT...

More information

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha CYPOK CYPOK 1 UltraEdit Project-->Install Language Tool: Language Suite----->hi-tech picc Tool Name ---->PICC Compiler Executable ---->c:hi-picinpicc.exe ( Command-line Project-->New Project-->File Name--->myc

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

00884a_cn.book

00884a_cn.book .E-0.E+00.E+0.E+0.E+03.E+04.E+05.E+06.E+07 使用运放驱动容性负载 AN884 作者 : 简介 运算放大器在驱动大的容性负载时, 若不采取正确地补偿, 则会产生尖峰和振荡问题 其他问题还包括 : 带宽减小, 输出压摆率降低和功耗增加 本应用笔记将解释为什么会发生这些问题, 如何改变运放电路来达到更佳性能, 以及如何快速计算电路的参数值 简化的运放模型 Kumen

More information

untitled

untitled 3 4 Watson Farley & Williams 5 6 Watson Farley & Williams 7 9 10 Watson Farley & Williams 11 ATHENS BANGKOK DUBAI FRANKFURT HAMBURG HONG KONG LONDON MADRID MILAN MUNICH NEW YORK PARIS ROME SINGAPORE wfw.com

More information

先进制造技术是近几年提得较多,叫得较响的一个专用词语,而且先进制造技术在机械制造业领域中的应用越来越广泛而深入,并取得了很大的成绩

先进制造技术是近几年提得较多,叫得较响的一个专用词语,而且先进制造技术在机械制造业领域中的应用越来越广泛而深入,并取得了很大的成绩 21 世 纪 全 国 高 校 应 用 人 才 培 养 旅 游 类 规 划 教 材 中 国 公 民 出 境 旅 游 目 的 地 国 家 ( 地 区 ) 概 况 方 海 川 主 编 付 景 保 副 主 编 内 容 简 介 中 国 公 民 出 境 旅 游 目 的 地 国 家 ( 地 区 ) 概 况 一 书 共 分 5 章, 第 1 章 主 要 介 绍 有 关 中 国 出 境 旅 游 市 场 的 发 展 历

More information

技 术 文 件

技  术  文  件 技术文件 技术文件名称 :IAlert 接口使用说明 技术文件编号 : 版 本 :V1.0 共页 ( 包括封面 ) 拟制 审核 会签 标准化 批准 中兴通讯股份有限公司 XX 软件模块详细设计说明 版本号 修改记录 文件编号 版本号 拟制人 / 修改人 拟制 / 修改日期 1 V1.0 胡曦 2005-08-12 新建 更改理由 主要更改内容 ( 写要点即可 ) 注 1: 每次更改归档文件 ( 指归档到事业部或公司档案室的文件

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

EPSON Safety Instructions Manual

EPSON Safety Instructions Manual ... 2... 9... 11... 12 Epson... 14 1 2 3 4 5 ( ) A/V 50cm 6 7 + - 8 LCD LCD LCD 9 14 UL NEMKO CSA FIMKO BSI LCIE IMQ CEBEC SAA KEMA OVE PSE SEV EK SEMKO CCC DEMKO PSB VDE 10 CD-ROM http://www.epson.com

More information

EK-STM32F

EK-STM32F STMEVKIT-STM32F10xx8 软 件 开 发 入 门 指 南 目 录 1 EWARM 安 装... 1 1.1 第 一 步 : 在 线 注 册... 1 1.2 第 二 步 : 下 载 软 件... 2 1.3 第 三 步 : 安 装 EWARM... 3 2 基 于 STMEVKIT-STM32F10xx8 的 示 例 代 码 运 行... 6 2.1 GPIO Demo... 6 2.2

More information

水晶分析师

水晶分析师 大数据时代的挑战 产品定位 体系架构 功能特点 大数据处理平台 行业大数据应用 IT 基础设施 数据源 Hadoop Yarn 终端 统一管理和监控中心(Deploy,Configure,monitor,Manage) Master Servers TRS CRYSTAL MPP Flat Files Applications&DBs ETL&DI Products 技术指标 1 TRS

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information