读取灵活的UART字节

了解更多常见问题解答教程

9个帖子/ 0新
最后一篇
eShwar.
离线
最后一次露面:6个月6天前
加入:2020-04-28 12:20
读取灵活的UART字节

你好,

我使用UART1接受传感器,该传感器接受可变长度的命令(22到28个字节)。响应于这些命令,传感器确认并附加可变长度(27到40字节)的有效载荷响应。我正在使用UART_DATA_READY_GETF.读取直到数据可用。读取长度始终为16字节。当我在COM端口上单独检查传感器响应时,这不是这种情况。传感器每次发送27个字节(验证)(验证),在连接到UART1时读取固定的16个字节。我有附加调试信息PDF。我陷入了很大一段时间的问题。如何解决此问题以在UART1上实现灵活的接收?

注意:UART2是调试UART

int count = 0;uint8_t rx_buff [50];printf_string(UART2,“\ n \ r <=”);而(UART_DATA_READY_GETF(UART1)== 1){UINT8_T BUFFER [1];//临时Rx元素变量UART_RECEIVE(UART1,(UINT8_T *)缓冲区,1,UART_OP_BLOCKING);rx_buff [count] =缓冲器[0];count ++;for(int i = 0; i 

关键词:
依恋:
设备:
PM_DIALOG.
离线
最后一次露面:40分钟43秒前
职员
加入:2018-02-08 11:03
嗨eShwar,

嗨eShwar,

请你探讨UART TX和RX吗?您是否使用了任何可用的睡眠模式?此外,您可以在调试模式下运行项目吗?它是否正确运行?

谢谢,PM_DIALOG.

eShwar.
离线
最后一次露面:6个月6天前
加入:2020-04-28 12:20
你好,

你好,

我已经验证了传感器正在通信井,而TX帧则从DA14531正确到达传感器。我还通过普通UART通信检查传感器。(附件)

Tx Len:28个字节

rx len 27字节

我不使用任何睡眠模式,我的应用程序基于empty_peripheral_template。我尝试了强制rx读取27长,但程序崩溃在nmi_handler.c。

如果我评论WDOG宏,仍然是接收长度为16字节

还可以从UART阅读超过16个字节?

依恋:
PM_DIALOG.
离线
最后一次露面:40分钟43秒前
职员
加入:2018-02-08 11:03
嗨eShwar,

嗨eShwar,

请尝试增加UART_RECEIVE()中的长度参数。

谢谢,PM_DIALOG.

eShwar.
离线
最后一次露面:6个月6天前
加入:2020-04-28 12:20
你好,

你好,

在增加UART_RECEIVE()中的长度参数后,程序会停止nmi_handler.c.我猜这是因为当没有27个字节来读取来自RX FIFO时,我试图强制读取27个字节。您是否可以为UART读取(> 16字节)重现此问题,以确保不得发生这种情况?

PM_DIALOG.
离线
最后一次露面:40分钟43秒前
职员
加入:2018-02-08 11:03
嗨eShwar,

嗨eShwar,

您是否可以检查WDOD是否已启用或禁用?checkout使用UART API的SDK的UART示例。您使用的是哪个SDK示例?

谢谢,PM_DIALOG.

eShwar.
离线
最后一次露面:6个月6天前
加入:2020-04-28 12:20
你好,

你好,

默认情况下启用WDOD。当我禁用它时,Rx字节仍然是16。我可以用以下代码读取16个字节,但不是在计数> 17时

int count = 16;uint8_t rx_buff [50];printf_string(UART2,“\ n \ r <=”);//读取“count”字节UART_RECEIVE(UART1,(UINT8_T *)RX_BUFF,COUNT,COUND,UART_OP_BLOCKING);for(int i = 0; i 

依恋显示一个力读取时的错误count = 17.(禁用WDOD)。我正在使用SDK 6.14,并且该示例是从相同的SDK引用API。我仍然无法阅读超过16个字节

我编译并使用传感器运行DSPS_DEVICE源代码。它有效,RX长度为27,按预期正确序列,但这也是API的预期。

你能在你最后重新创建这个问题吗?如果需要,我可以共享我的完整源代码

eShwar.
离线
最后一次露面:6个月6天前
加入:2020-04-28 12:20
你好,

你好,

提供额外的调试信息。这是出现异常的地方

依恋:
PM_DIALOG.
离线
最后一次露面:40分钟43秒前
职员
加入:2018-02-08 11:03
嗨eShwar,

嗨eShwar,

我看到你的代码卡在platform_reset_func()中被困。您获得此断言的最可能原因是由于内存不足,因为您可能会尝试分配您永远不会消耗的消息。

您能否注明要复制的步骤吗?

谢谢,PM_DIALOG.