Skip to content

[BSP] [NS800RT7P65]Feature/optimize ns800 uart Drive#11423

Merged
Rbb666 merged 2 commits into
RT-Thread:masterfrom
zhang-haitao-repo:feature/optimize_ns800_uart_menuconfig
Jun 3, 2026
Merged

[BSP] [NS800RT7P65]Feature/optimize ns800 uart Drive#11423
Rbb666 merged 2 commits into
RT-Thread:masterfrom
zhang-haitao-repo:feature/optimize_ns800_uart_menuconfig

Conversation

@zhang-haitao-repo
Copy link
Copy Markdown
Contributor

拉取/合并请求描述:(PR description)

[

为什么提交这份PR (why to submit this PR)

  1. 为NS800RT7P65的Uart驱动新增Kconfig配置,用户可以直接通过menuconfig配置串口波特率、停止位等信息;
  2. 修复NS800RT7P65Uart Drive在低波特率情况下,严重丢失报文的问题;
  3. 所有提交均本地测试无问题;

你的解决方案是什么 (what is your solution)

  1. Kconfig中添加波特率配置选项、Uart Drive增加波特率等相关配置的宏,覆盖默认配置;
  2. 按系统 tick 等待 TX 空位,低波特率也能稳定逐字节输出

请提供验证的bsp和config (provide the config and bsp)

  • BSP:
  • .config:
  • action:

]

当前拉取/合并请求的状态 Intent for your PR

必须选择一项 Choose one (Mandatory):

  • 本拉取/合并请求是一个草稿版本 This PR is for a code-review and is intended to get feedback
  • 本拉取/合并请求是一个成熟版本 This PR is mature, and ready to be integrated into the repo

代码质量 Code Quality:

我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:

  • 已经仔细查看过代码改动的对比 Already check the difference between PR and old code
  • 代码风格正确,包括缩进空格,命名及其他风格 Style guide is adhered to, including spacing, naming and other styles
  • 没有垃圾代码,代码尽量精简,不包含#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up
  • 所有变更均有原因及合理的,并且不会影响到其他软件组件代码或BSP All modifications are justified and not affect other components or BSP
  • 对难懂代码均提供对应的注释 I've commented appropriately where code is tricky
  • 代码是高质量的 Code in this PR is of high quality
  • 已经使用formatting 等源码格式化工具确保格式符合RT-Thread代码规范 This PR complies with RT-Thread code specification
  • 如果是新增bsp, 已经添加ci检查到.github/ALL_BSP_COMPILE.json 详细请参考链接BSP自查

@github-actions
Copy link
Copy Markdown

👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread!

为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。
To ensure your code complies with RT-Thread's coding style, please run the code formatting workflow by following the steps below (If the formatting of CI fails to run).


🛠 操作步骤 | Steps

  1. 前往 Actions 页面 | Go to the Actions page
    点击进入工作流 → | Click to open workflow →

  2. 点击 Run workflow | Click Run workflow

  • 设置需排除的文件/目录(目录请以"/"结尾)
    Set files/directories to exclude (directories should end with "/")
  • 将目标分支设置为 \ Set the target branch to:feature/optimize_ns800_uart_menuconfig
  • 设置PR number为 \ Set the PR number to:11423
  1. 等待工作流完成 | Wait for the workflow to complete
    格式化后的代码将自动推送至你的分支。
    The formatted code will be automatically pushed to your branch.

完成后,提交将自动更新至 feature/optimize_ns800_uart_menuconfig 分支,关联的 Pull Request 也会同步更新。
Once completed, commits will be pushed to the feature/optimize_ns800_uart_menuconfig branch automatically, and the related Pull Request will be updated.

如有问题欢迎联系我们,再次感谢您的贡献!💐
If you have any questions, feel free to reach out. Thanks again for your contribution!

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds Kconfig-based default UART configuration (baudrate / data bits / stop bits) for the ns800rt7p65-nssinepad BSP and reworks the TX wait logic in drv_uart.c to use system ticks rather than a raw loop counter, with the stated goal of preventing dropped bytes at low baudrates.

Changes:

  • Add BSP_UART_DEFAULT_BAUDRATE, BSP_UART_DEFAULT_DATABITS and BSP_UART_DEFAULT_STOPBITS options to the BSP Kconfig.
  • Map the new Kconfig symbols to defaults in drv_uart.c and apply them in ns800_uart_fill_default_config.
  • Extract a new ns800_wait_tx_space helper that times out using rt_tick_get() / rt_tick_from_millisecond() instead of a decrementing iteration counter; ns800_putc no longer waits for the TC bit after writing.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
bsp/novosns/ns800/ns800rt7p65-nssinepad/board/Kconfig Adds default baudrate / data-bits / stop-bits menuconfig entries under the UART menu.
bsp/novosns/ns800/libraries/HAL_Drivers/drivers/drv_uart.c Maps new Kconfig symbols to default serial_configure fields; replaces iteration-based TX timeout with a tick-based wait helper and removes the post-write TC wait in ns800_putc.

Comment on lines +415 to +416
timeout_tick = rt_tick_from_millisecond(timeout_ms);
start_tick = rt_tick_get();
Comment on lines 418 to 424
while (!UART_isSpaceAvailable(uart->handle.Instance))
{
if (block_timeout-- == 0U)
if ((rt_tick_get() - start_tick) > timeout_tick)
{
return -1;
return -RT_ETIMEOUT;
}
}
Comment on lines +23 to +27
config BSP_UART_DEFAULT_BAUDRATE
int "UART default baudrate"
default 115200
help
Default baudrate for all UART ports.
Comment on lines +443 to +444
UART_writeChar(uart->handle.Instance, (rt_uint8_t)c);
return 1;
@Rbb666 Rbb666 added the BSP: Novosns BSP related with novosns label Jun 3, 2026
@Rbb666 Rbb666 merged commit 38ac071 into RT-Thread:master Jun 3, 2026
12 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

BSP: Novosns BSP related with novosns BSP

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants