USB Generic HID Device Example Code - What is the benefit of enabling the double buffer?

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

USB Generic HID Device Example Code - What is the benefit of enabling the double buffer?

1,703 次查看
nbgatgi
Contributor IV

I'm using the LPCXpresso54608 SDK for MCUXpresso.  In particular, I'm running the generic HID device with FreeRTOS example code (link to my code/setup).

One of the settings is to enable the double buffer in usb_device_lpcip3511.h:

#define USB_DEVICE_IP3511_DOUBLE_BUFFER_ENABLE (1u)

The double buffer is enabled by default.  It seems to add a layer of complexity that I'm not sure I need, and I'm not so sure it is even working correctly with the example!

Could someone enlighten me on the purpose/intended use of the double buffer?

2 回复数

1,479 次查看
danielchen
NXP TechSupport
NXP TechSupport

Hi Nick:

Double buffering is used for more efficient transfers.

Data in one buffer are being processed while the next set of data is read into the other one.

I hope it helps.

Regards

Daniel

0 项奖励
回复

1,479 次查看
nbgatgi
Contributor IV

I should have been more clear in my question.  I generally understand the purpose of double-buffering.  I'm looking for more of a walk-through of this particular implementation.  I can see the buffer index toggle, and see that every packet received goes into the alternate buffer, but within "USB_DeviceHidGenericCallback", the case "kUSB_DeviceHidEventRecvResponse" first calls "USB_DeviceHidSend" without toggling the buffer index, which echoes the data received the the IN-ENDPOINT (to the PC).  Right after that, the buffer index is toggled which generally makes sense to me.  THEN "USB_DeviceHidRecv" is called using the newly toggled buffer index.  WHAT IS THIS DOING?!?!

0 项奖励
回复