Modbus 模式下缺少 STM32CubeMX UART 设置
Posted
技术标签:
【中文标题】Modbus 模式下缺少 STM32CubeMX UART 设置【英文标题】:STM32CubeMX UART settings are missing in Modbus Mode 【发布时间】:2021-09-24 11:33:27 【问题描述】:我正在使用 STM32H745。我想将 UART 模式字段设置为“Modbus 通信”,但是当我这样做时,GUI 会擦除所有参数设置,并在配置部分给出一条消息,说“警告:此外围设备没有要配置的参数”。我希望它具有与其他模式相似的参数。我正在运行 STMCubeIDE 版本 1.6.1 和 CubeMX 版本 6.2.1-RC2。
我找不到任何关于此的在线文档,唯一相关的详细信息在 ST 参考手册 RM0399 部分 51.5.11 USART Modbus 通信中。这是 CubeMX 中没有实现的功能吗?
【问题讨论】:
你的 STM32 部件的确切型号是什么? 单片机为STM32H745 【参考方案1】:我对 CubeMX 不是很有经验,但 IMO,这似乎是一个错误或未实现的功能。硬件中的 Modbus 支持非常有限 - 可能是因为它不需要太多硬件支持。 HW 仅提供 块结束检测 功能。因此,必须能够像往常一样配置其他设置。
硬件中的这种 Modbus 支持并非 H7 系列独有。 F0系列也有同样的特点。但在 F0 系列中,CubeMX 甚至没有在 GUI 中显示 Modbus 通信模式。
我想您可以简单地将 USART 配置为 异步模式 并修改 USART_RTOR
寄存器并使用 USART_CR1:RTOIE
位手动启用 接收器超时中断。然后,您将需要在 USART 回调中进行某种条件检查和分支。没有与 Modbus 支持相关的其他设置。
【讨论】:
我发现stm32h7xx_hal_uart_ex.c中定义的函数HAL_UARTEx_ReceiveToIdle_DMA是实现这个能力的有效方式。我怀疑 CubeMX modbus 模式是开发人员打算在未来某个时间实现的占位符。以上是关于Modbus 模式下缺少 STM32CubeMX UART 设置的主要内容,如果未能解决你的问题,请参考以下文章