Skip to content

[nrf fromlist] drivers: serial: nrfx_uarte: Add mode with TIMER byte counting #3033

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Jul 29, 2025

Conversation

nordic-krch
Copy link
Contributor

Upstream PR 92767

Copy link

github-actions bot commented Jul 8, 2025

The following west manifest projects have changed revision in this Pull Request:

Name Old Revision New Revision Diff

All manifest checks OK

Note: This message is automatically posted and updated by the Manifest GitHub Action.

@nordic-krch nordic-krch force-pushed the ncs/uart_byte_count branch 5 times, most recently from b22c2c1 to 75e2c33 Compare July 16, 2025 05:38
@nordic-krch nordic-krch force-pushed the ncs/uart_byte_count branch 2 times, most recently from 7c3d657 to 960e1d5 Compare July 17, 2025 11:22
Copy link
Contributor

@nika-nordic nika-nordic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

engineering at its finest 👍

@nordic-krch nordic-krch force-pushed the ncs/uart_byte_count branch from 960e1d5 to 7cdb8c5 Compare July 18, 2025 12:53
@kl-cruz kl-cruz force-pushed the ncs/uart_byte_count branch 5 times, most recently from 591d666 to e80a759 Compare July 28, 2025 07:36
@kl-cruz kl-cruz added this to the ncs-3.1.0 milestone Jul 28, 2025
@kl-cruz kl-cruz force-pushed the ncs/uart_byte_count branch from e80a759 to 98465e2 Compare July 28, 2025 11:20
Timer property indicates which TIMER instance should be used for
byte counting. If timer property is present then given instance
is using TIMER to count received bytes.

Upstream PR #: 92767

Signed-off-by: Krzysztof Chruściński <[email protected]>
Add reporting about the test progress. Test lasts few seconds and
progress report helps to see if test stuck or how it is progressing.

Upstream PR #: 92767

Signed-off-by: Krzysztof Chruściński <[email protected]>
Extend test with a mode where HWFC is off and receiver is providing
buffers on time. In that case receiver should be able to continuously
receive data without losing any byte (even without HWFC). Additionally,
TX data is chopped to verify that receiver does not loose bytes when
new TX data collides with detected RX timeout.

Upstream PR #: 92767

Signed-off-by: Krzysztof Chruściński <[email protected]>
… for nrf54l

Add timer property to the uart device under test.
Add zephyr,pm-device-runtime-auto to the uart device under test.

Upstream PR #: 92767

Signed-off-by: Krzysztof Chruściński <[email protected]>
…nfiguration

Add workaround timer to instances that are used for reception in the
test.

Upstream PR #: 92767

Signed-off-by: Krzysztof Chruściński <[email protected]>
…andling

Stress test is executed on CPUs with slow clock (16MHz). Handling of test
data in UART_RX_RDY event is optimized to reduce time spent in the
interrupt context. Since payload is always a decrementing sequence, fixed
array is used to compare memory which allows to use standard memcmp
instead of byte by byte comparison.

Upstream PR #: 92767

Signed-off-by: Krzysztof Chruściński <[email protected]>
Rearrange code to prepare for upcoming extension that adds special
receive mode.

Upstream PR #: 92767

Signed-off-by: Krzysztof Chruściński <[email protected]>
…counting

Add mode to be used on UARTE with frame timeout which is using a bounce
buffers and TIMER to count bytes. This mode shall be used to reliably
receive data without HWFC as frame timeout approach is not 100% reliable
because it can loose or corrupt a byte when new byte arrives after
frame timeout is detected but before it is fully handled. This mode is
similar to the one enabled with CONFIG_UART_x_NRF_HW_ASYNC but
additional bounce buffers are used and UARTE is receiving data to
internal buffers and copies data to the user buffer. Legacy apporach
cannot be used because in new SoC DMA attempts to copy data in words
so when byte is received it stays in the DMA internal buffer until
4 bytes are received or end of transfer happens then internal DMA
buffer is flushed.

Upstream PR #: 92767

Signed-off-by: Krzysztof Chruściński <[email protected]>
@kl-cruz kl-cruz force-pushed the ncs/uart_byte_count branch from 98465e2 to 2ba3c09 Compare July 28, 2025 11:51
@rlubos rlubos merged commit a07f73b into nrfconnect:main Jul 29, 2025
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants