國民技術N32G45x系列芯片USB自定義HID設備的實現應用筆記
本文檔主要介紹 N32G45x系列芯片 USB 自定義 HID 設備的實現,更多的技術資料及技術支持,請聯絡國民技術代理商深圳市綠都電子有限公司,聯絡方式:0755-83777479,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 使用注意事項