Implementing SET_REPORT/ GET_REPORT in USB full speed and low speed HID devices
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
Answer:
Implementaion is as follows:
The RAM location for feature report data is USBFS_INTERFACE_0_FEATURE_RPT_DATA.
Transfers using feature report can be implemented by directly accessing this buffer.
This buffer is declared in the ‘USBFS_descr.asm’ file associated with the USBFS user module as follows:
_USBFS_INTERFACE_0_FEATURE_RPT_DATA:
USBFS_INTERFACE_0_FEATURE_RPT_DATA:
BLK 8 ;
Proceed by exporting this RAM buffer for use in your ‘main.c’ file. This can be done with the line of code:
externUSBFS_INTERFACE_0_FEATURE_RPT_DATA[4];
You can assign values to these locations as:
USBFS_INTERFACE_0_FEATURE_RPT_DATA[0]=0x1122;
USBFS_INTERFACE_0_FEATURE_RPT_DATA[1]=0x3344;
USBFS_INTERFACE_0_FEATURE_RPT_DATA[2]=0x5566;
USBFS_INTERFACE_0_FEATURE_RPT_DATA[3]=0x7788;
Each location is capable of handling a WORD sized data.
GET_REPORT request reads data from these locations to the HOST. Similarly, SET_REPORT request writes data from HOST to these locations.
The ‘main.c’ firmware is as follows:
#include<m8c.h> // part specific constants and macros
#include"PSoCAPI.h" // PSoC API definitions for all User Modules
externUSBFS_INTERFACE_0_FEATURE_RPT_DATA[4];
voidmain()
{
USBFS_INTERFACE_0_FEATURE_RPT_DATA[0]=0x1122;
USBFS_INTERFACE_0_FEATURE_RPT_DATA[1]=0x3344;
USBFS_INTERFACE_0_FEATURE_RPT_DATA[2]=0x5566;
USBFS_INTERFACE_0_FEATURE_RPT_DATA[3]=0x7788;
M8C_EnableGInt;
USBFS_Start(0, USB_5V_OPERATION);
while(!USBFS_bGetConfiguration());
while(1)
{
//Application code
}
}
The HID report descriptor used in the project is as follows:
Usage Page 06 FF FF
Usage 09 01
Collection (Application 01)
Report ID 85 01
Usage 09 02
Logical Minimum 15 00
Logical Maximum 25 FF
Report Size 75 08
Report Count 95 08
Input (Data, Variable, Absolute 02)
Usage 09 03
Report ID 85 02
Report Count 95 01
Logical Maximum 25 10
Feature (Data, Variable, Absolute 02)
End Collection C0
Note that irrespective of the report descriptor configuration, all HID class devices are supposed to respond to the HID class requests like SET_REPORT and GET_REPORT.
To test this firmware, please follow the instructions given in the attached word document
-
This widget could not be displayed.Anonymous