你好
我使用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
关键词:
设备:
嗨,埃什瓦尔,
您能探测UART发送和接收吗?您是否正在使用任何可用的睡眠模式?另外,您可以在调试模式下运行您的项目吗?它运行正常吗?
谢谢,下午好
你好
我已经确认传感器通信良好,并且TX帧正确地从DA14531到达传感器。我还检查了带有普通UART通信的传感器。(附件)
发送长度:28字节
Rx len 27字节
我没有使用任何睡眠模式,我的应用程序基于空模板。我尝试强制读取27个长度的rx,但程序在nmi_handler.c崩溃。
如果我注释掉WDOG宏,接收长度仍然是16字节
要从uart读取超过16个字节,还可以做些什么?
嗨,埃什瓦尔,
请尝试增加uart_receive()中的长度参数。
谢谢,下午好
你好
在uart_receive()中增加长度参数后,程序将在nmi_handler.c我猜这是因为我试图强制读27个字节时,没有27个字节从rx FIFO读取。您能否为UART读取(> 16字节)重现这个问题,以确保不会发生这种情况?
嗨,埃什瓦尔,
您能检查WDOD是启用还是禁用的吗?签出使用UART API的sdk的UART示例。您正在使用哪个SDK示例?
谢谢,下午好
你好
默认情况下,WDOD保持启用状态。当我禁用它时,Rx字节仍然是16。我可以用下面的代码读取16个字节,但当count>17时无法读取
这个附件显示读取力时的故障计数=17(WDOD已禁用)。我使用的是SDK6.14,这个例子来自同一个SDK for API。我仍然无法读取超过16个字节
我编译并运行了带有传感器的DSPS_设备源代码。它可以工作,RX长度为27,序列如预期的那样正确,但这也是API的预期。
你能不能在你这边重新创建这个问题?如果需要,我可以分享我的全部源代码
你好
提供额外的调试信息。这就是异常发生的地方
嗨,埃什瓦尔,
我看到你的代码卡在平台上了。获得此断言的最可能原因是内存不足,因为您可能会尝试分配从不使用的消息。
您能指出复制的步骤吗?
谢谢,下午好