国民技术

代理品牌

国民技术N32G45x系列芯片USB自定义HID设备的实现应用笔记-绿都电子为您提供技术支持

国民技术N32G45x系列芯片USB自定义HID设备的实现应用笔记-绿都电子为您提供技术支持

产品分类:国民技术

  • 产品说明

国民技术N32G45x系列芯片USB自定义HID设备的实现应用笔记

本文档主要介绍 N32G45x系列芯片 USB 自定义 HID 设备的实现,更多的技术资料及技术支持,请联络国民技术代理商深圳市绿都电子有限公司,联络方式:0755-83777478,18688790400,philip.yf@szlvdu.com

本文档适用于国民技术N32G452、N32G455、N32G457、N32G451系列单片机,包含下述芯片型号:

    N32G452系列

    N32G452CBL7 N32G452CCL7 N32G452CEL7 N32G452RBL7 N32G452RCL7 N32G452REL7 N32G452MBL7 N32G452MCL7 N32G452MEL7 N32G452VCL7 N32G452VEL7 N32G452QCL7 N32G452QEL7

    N32G455系列

    N32G455CBL7 N32G455CCL7 N32G455CEQ7 N32G455CEL7 N32G455RBL7 N32G455RCL7 N32G455REL7 N32G455MBL7 N32G455MCL7 N32G455MEL7 N32G455VBL7 N32G455VCL7 N32G455VEL7

    N32G457系列

    N32G457RCL7 N32G457REL7 N32G457MCL7 N32G457MEL7 N32G457VCL7 N32G457VEL7 N32G457QEL7

    N32G451系列

    N32G451CBL7 N32G451CCL7 N32G451CEL7 N32G451RBL7 N32G451RCL7 N32G451REL7 N32G451VCL7 N32G451VEL7

1 概述

1.1 功能概述

N32G45x 系列产品内嵌一个兼容全速 USB 的设备控制器,遵循全速 USB 设备(12Mbit/秒)标准,端点可由软件配置,具有待机/唤醒功能。它包含了物理层的 USB PHY 不需要额外的 PHY 芯片。USB 外设

支持 USB2.0 协议定义的控制传输、批量传输、中断传输和同步传输共四种传输类型。

USB设备控制器主要特性如下:
 USB2.0 全速设备
 可配置最多 8 个 USB 端点
 支持控制传输、批量传输、中断传输和同步传输(端点 0 只支持控制传输)
 支持双缓冲区的批量同步传输端点
 CRC(循环冗余校验)生成/校验,反向不归零(NRZI)编码/解码和位填充
 支持 USB 挂起恢复操作
 帧锁定时钟脉冲生成
1.2 USB HID 概述
USB 设备中有一大类就是 HID 设备,即 Human Interface Devices,人机接口设备。这类设备包括鼠标、键盘等,主要用于人与计算机进行交互,它是 USB 协议最早支持的一种设备类。在 windows 下,鼠标、键盘等标准的系统设备通常是操作系统独占的,应用程序无法直接访问这些设备的驱动程序。而用户自定义的 HID设备,Windows 操作系统自身并不会访问它们。在 Windows 操作系统下,自带了 HID 设备的驱动程序,因而无需用户自己开发驱动程序,对于一些数据量较少的场合(例如按键输入、LED 显示或一些小容量的芯片烧录器等),使用用户自定义 HID 设备是很合适的。
本文主要介绍N32G45x USB自定义HID设备的实现。

2 实现说明

以 SDK 中 HID_Keyboard 例程作为模版,在这个模版上进行工程整理,最终实现为应用笔记中的DEMO。主要实现步骤:

1. 编写描述符。在 usb_desc.c 上修改设备描述符、配置描述符、报告描述符等。

2. 端点初始化配置。在 usb_prop.c 中修改 void CustomHID_Reset(void)函数内容,修改成与描述符对应的端点配置。

3. 数据收发接口实现。usb_endp.c 中实现 void EP1_OUT_Callback(void)、void EP2_IN_Callback(void)等端点收发中断回调函数,实现 void USB_HID_SendData(void)、void

USB_HID_ReceiveData_Handle(void)等数据发送及数据接收处理函数。 

2.1 编写描述符

1. 设备描述符。CustomHID_DeviceDescriptor 保留原工程的内容即可。

2. 配置描述符。CustomHID_ConfigDescriptor 需要修改的内容:

    -由于是自定义HID设备,没有子类和协议,所以bInterfaceSubClass和nInterfaceProtocol应为0x00。 


    -端点描述符。端点 2 配置为 IN 端点,端点 1 配置为 OUT 端点,都配为中断传输,最大包MAX_PACKET_SIZE 定义为 64,在 usb_desc.h 中定义。


3. 报告描述符。修改为自定义 HID 设备的报告描述符,其中 REPORT_COUNT 与配置描述符的wMaxPacketSize 关联,都用宏定义 MAX_PACKET_SIZE 表示,应用时根据报告长度修改MAX_PACKET_SIZE 宏的值即可;报告描述符长度有变化,CUSTOMHID_SIZ_REPORT_DESC 需要修改为 33。


2.2 端点初始化配置 

usb_prop.c 中修改 void CustomHID_Reset(void)函数内容,对应描述符,配置相应的端点及各端点传输类型为控制传输或中断传输,配置端点缓冲区地址,配置端点状态。端点 1、2 的最大包配置应与配置描述符的wMaxPacketSize 一致,使用宏定义 MAX_PACKET_SIZE。端点状态配置,端点 1 作为 OUT 端点,USB 枚举完成后需要等待接收主机的数据,所以需在此处启用接收 SetEPRxStatus(ENDP1, EP_RX_VALID);,;端点 2作为 IN 端点,USB 枚举完成后不需要立即发送数据,此处配置为 NAK,SetEPTxStatus(ENDP2,EP_TX_NAK)。

对 usb_conf.h 中的端点缓冲区地址进行修改,如下图。 

以下内容由于篇幅原因未详述,若您需要获取技术资料、技术支持、免费样品、正品芯片购买等,请联络国民技术代理商深圳市绿都电子有限公司,联络方式:0755-83777478, 18688790400, philip.yf@szlvdu.com

2.3 数据收发接口实现

3 使用注意事项