NUS UART Service with hardware flow control


I was trying to stream data from nus central to nus peripheral, with hardware flow control. I changed the drive to nrfx_uarte, it is working  good except when the peripheral not consumed the data before central sending the next set of data. My expectation was: at peripheral hardware flow control blocking uart thus blocks central device sending more and finally central device uart stops the sender as it using hardware flow control.

Q.1. But this is never happening. Is it possible to get this from nRF UART Service? Since the data rate is high, application-level ack is not an option.

Sometimes peripheral hangs in uarte tx function, which I thought the reason is uarte event handler is running with a lower priority than soft device event that calls the nrfx_uarte_rx function. The uarte event handler should be called to free up memory/queue used for nrfx_uarte_rx. So I changed priority to 3, but now the central device returns NRF resource error (I think the answer may be related to Q1).

Q2. What is the priority level for ble event handler?

Using nRF52DK, SDK 16.0, soft device s112 and s132.

Thanks in advance,


No Data
  • Hi

    You're transmitting data from a central to a peripheral, correct? Are both devices nRF52 DKs, or is the peripheral another kind of device? Is HWFC enabled in the peripheral end as well?

    Also, what is the ATT MTU size set as in central and peripheral? Both devices in the link need to support a length greater than your largest string in order to work properly.

    Best regards,