USB NYET response despite of free buffer (LPC55S69 USB1 HS Controller)

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

USB NYET response despite of free buffer (LPC55S69 USB1 HS Controller)

176 次查看
pettel
Contributor II

I'm using EP2 OUT with double buffering.

  • Buf0 and Buf1 have 2048 bytes each
  • EP2 OUT is a bulk endpoint with a maximum packet size of 512 bytes

Both endpoints (EP2_OUT_BUF0, EP2_OUT_BUF1) are initialized with 2048 N-bytes and the endpoints are set to active.

Expectation: without further interaction 4096 bytes should be received, without a NYET response.

 

Observed behaviour: after Buf0 is full a NYET response is transmitted instead of an ACK response, despite Buf1 beeing completely empty and active.

Bild 2025-10-07 at 01.17.49.png

This behaviour is especially detrimental to performance if you work with 512 byte buffers for Buf0 and Buf1, because in this case a NYET response is transmitted after every OUT transmission from the host, which requires an unnecessary USB-Ping and reduces throughput.

Is there a workaround or is this a hardware bug?

  

标记 (2)
0 项奖励
回复
2 回复数

83 次查看
EdwinHz
NXP TechSupport
NXP TechSupport

Hi @pettel,

This is by design of the USB stack implementation of the SDK. As you can see on a comment on "PERI_USBHSD.h": 

DATA_PENDING - As long as this bit is set to one and LPM supported bit is set to one, HW will
* return a NYET handshake on every LPM token it receives. If LPM supported bit is set to one and
* this bit is zero, HW will return an ACK handshake on every LPM token it receives. If SW has
* still data pending and LPM is supported, it must set this bit to 1.

 

0 项奖励
回复

53 次查看
pettel
Contributor II

Hi @EdwinHz ,

 

this topic is not about LPM tokens. It's about sending user data from the USB host to EP2 of the LPC55S69. Link Power Management and the associated transactions are a completely separate topic.

0 项奖励
回复