Thread 中讨论的其他器件:CC3235SF
工具/软件:
-
您好:
我目前正在开发 CC3235SF 使用了 SimpleLink SDK 版本 7.10.00.13 和定制板。
我遇到了问题 UART2 接收行为 使用UART2_Mode_CALLBACK和时UART2_ReadReturnMode_PARTIAL。问题描述
-
我正在收到的消息 UART 数据不完整 在通过 Modbus RTU 协议与从设备通信期间。
-
我已经通过示波器确认了 Rx 波形已完成 、但是 我的固件仅接收部分数据 (例如,只有较长响应的前几个字节)。
-
就会出现问题 一致 收到多个帧时发出的命令。
系统设置程序
-
MCU:CC3235SF
-
SDK:simplelink_cc32xx_sdk_7_10_00_13
-
UART 模式:
UART2_Mode_CALLBACK -
波特率:115200
-
读取返回模式:
UART2_ReadReturnMode_PARTIAL -
无流控制(仅限 Rx / Tx)
-
回调重新启动对完整缓冲区(256 字节)的读取
代码概述
在我的回叫中:
-
回调接收 Modbus RTU 数据包的部分块。
-
在主线程中、我检查
rxBytesReceived > 0并复制数据。 但当需要 20–30 时、通常仅接收 5–10 个字节。 -
我还尝试在回调中使用 1 字节读取、结果相同。
我已验证的事项:
-
UART RX 信号存在于引脚上且是干净的。
-
触发回调。
-
Rx 缓冲区未满(256 字节、Modbus 数据包<64 字节)。
-
没有内存损坏或任务耗尽。
问题:
-
UART2_ReadReturnMode_PARTIAL未返回所有可用数据是否存在任何已知问题? -
每次在回调中重新发出完整的缓冲区读取(256 字节)是否正确?
-
是否可以在两次读取之间发生数据丢失、或者 UART 驱动程序是否应该在内部处理队列?
-
您是否有使用可靠地接收完整 Modbus RTU 帧的建议
UART2_Mode_CALLBACK?
感谢您的支持
-