灵活的UART字节读取

⚠️
你好。。谢谢你来到论坛。令人兴奋的消息!我们现在正在迁移到新的论坛平台,该平台将提供更好的功能,并包含在主对话网站中。所有员额和帐户都已迁移。我们现在只接受新论坛的流量-请在//www.xmece.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
9个员额/0个新员额
最后一篇文章
埃什瓦尔
离线
最后一次见到:1年1个月前
加入:2020-04-28 12:20
灵活的UART字节读取

你好

我使用UART1连接传感器,UART1接受可变长度(22到28字节)的命令。响应这些命令,传感器确认并附加可变长度(27至40字节)的有效负载响应。我正在使用uart\u数据\u就绪\u getf读取直到数据可用为止。读取长度始终为16字节。当我在COM端口上单独检查传感器响应时,情况并非如此。传感器发送27个字节(已验证),但每次连接到UART1时,都会读取固定的16个字节。我已经附上调试信息PDF。我在这个问题上纠缠了很长一段时间。如何解决这个问题,在UART1上实现灵活的接收?

注意:UART2是调试UART

整数计数=0;uint8_t rx_buff[50];printf_字符串(UART2,“\n\r<=”;而(uart_data_ready_getf(UART1)=1{uint8_t buffer[1];//临时rx元素变量uart_receive(UART1,(uint8_t*)buffer,1,uart_OP_BLOCKING);rx_buff[count]=buffer[0];count++}(int i=0;i

关键词:
附件:
设备:
PM_对话框
离线
最后一次见到:5天13小时前
工作人员
加入:2018-02-08 11:03
嗨,埃什瓦尔,

嗨,埃什瓦尔,

您能探测UART发送和接收吗?您是否正在使用任何可用的睡眠模式?另外,您可以在调试模式下运行您的项目吗?它运行正常吗?

谢谢,下午好

埃什瓦尔
离线
最后一次见到:1年1个月前
加入:2020-04-28 12:20
你好

你好

我已经确认传感器通信良好,并且TX帧正确地从DA14531到达传感器。我还检查了带有普通UART通信的传感器。(附件)

发送长度:28字节

Rx len 27字节

我没有使用任何睡眠模式,我的应用程序基于空模板。我尝试强制读取27个长度的rx,但程序在nmi_handler.c崩溃。

如果我注释掉WDOG宏,接收长度仍然是16字节

要从uart读取超过16个字节,还可以做些什么?

附件:
PM_对话框
离线
最后一次见到:5天13小时前
工作人员
加入:2018-02-08 11:03
嗨,埃什瓦尔,

嗨,埃什瓦尔,

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

谢谢,下午好

埃什瓦尔
离线
最后一次见到:1年1个月前
加入:2020-04-28 12:20
你好

你好

在uart_receive()中增加长度参数后,程序将在nmi_handler.c我猜这是因为我试图强制读27个字节时,没有27个字节从rx FIFO读取。您能否为UART读取(> 16字节)重现这个问题,以确保不会发生这种情况?

PM_对话框
离线
最后一次见到:5天13小时前
工作人员
加入:2018-02-08 11:03
嗨,埃什瓦尔,

嗨,埃什瓦尔,

您能检查WDOD是启用还是禁用的吗?签出使用UART API的sdk的UART示例。您正在使用哪个SDK示例?

谢谢,下午好

埃什瓦尔
离线
最后一次见到:1年1个月前
加入:2020-04-28 12:20
你好

你好

默认情况下,WDOD保持启用状态。当我禁用它时,Rx字节仍然是16。我可以用下面的代码读取16个字节,但当count>17时无法读取

整数计数=16;uint8_t rx_buff[50];printf_字符串(UART2,“\n\r<=”)//读取uart_接收的“计数”字节(UART1,(uint8_t*)接收缓冲、计数、uart_操作_阻塞);对于(int i=0;i

这个附件显示读取力时的故障计数=17(WDOD已禁用)。我使用的是SDK6.14,这个例子来自同一个SDK for API。我仍然无法读取超过16个字节

我编译并运行了带有传感器的DSPS_设备源代码。它可以工作,RX长度为27,序列如预期的那样正确,但这也是API的预期。

你能不能在你这边重新创建这个问题?如果需要,我可以分享我的全部源代码

附件:
埃什瓦尔
离线
最后一次见到:1年1个月前
加入:2020-04-28 12:20
你好

你好

提供额外的调试信息。这就是异常发生的地方

附件:
PM_对话框
离线
最后一次见到:5天13小时前
工作人员
加入:2018-02-08 11:03
嗨,埃什瓦尔,

嗨,埃什瓦尔,

我看到你的代码卡在平台上了。获得此断言的最可能原因是内存不足,因为您可能会尝试分配从不使用的消息。

您能指出复制的步骤吗?

谢谢,下午好