你好,
我接口的传感器使用UART1接受可变长度(22至28字节)的命令。为了响应这些命令,传感器确认并附加可变长度(27到40字节)的有效负载响应。我用的是uart\u数据\u就绪\u获取读取直到有数据为止。读取长度始终为16字节。当我在COM端口上单独检查传感器响应时,情况并非如此。传感器发送27个字节(已验证),但每次连接到UART1时,读取固定的16个字节。我已附上调试信息PDF。我在这个问题上耽搁了很长一段时间。如何解决这个问题,在UART1上实现灵活的接收?
注意:UART2是调试UART
int count=0;uint8_t rx_buff[50];printf_string(UART2,“\n\r<=”);while(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++}for(int i=0;i
关键词:
设备:
嗨,埃什瓦尔,
你能探测一下UART的发送和接收吗?您是否使用任何可用的睡眠模式?另外,你能在调试模式下运行你的项目吗?它运行正常吗?
谢谢,下午好
你好,
我已经验证了传感器通信良好,TX帧从DA14531正确到达传感器。我还检查了传感器与普通UART通信。(附件)
发送长度:28字节
接收长度27字节
我没有使用任何睡眠模式,我的应用程序是基于空模板。我试图强制读取27个长度的rx,但是程序在nmi\u handler.c崩溃了。
如果我注释掉WDOG宏,接收长度仍然是16字节
要从uart读取超过16个字节,还可以做些什么?
嗨,埃什瓦尔,
请尝试增加uart\u receive()中的长度参数。
谢谢,下午好
你好,
在uart\u receive()中增加length参数后,程序将在nmi\ U处理程序.c我想这是因为我试图强制读取27字节时,没有27字节读取从rx先进先出。你能为UART读取重现这个问题(>16字节)只是为了确保这不会发生吗?
嗨,埃什瓦尔,
请检查WDOD是启用还是禁用?签出使用uartapi的sdk的UART示例。您使用的是哪个SDK示例?
谢谢,下午好
你好,
WDOD在默认情况下保持启用状态。当我禁用它时,Rx字节仍然是16。我可以用下面的代码读取16个字节,但当count>17时不能
这个附件显示读取力的故障计数=17(WDOD已禁用)。我使用的是sdk6.14,这个示例来自同一个sdkforapi。我仍然不能读取超过16个字节
我编译并运行了带有传感器的DSPS\u设备源代码。它的工作和接收长度是27与正确的序列预期,但这是预期的API也。
你能不能在你这边重现这个问题?如果需要,我可以分享我的全部源代码
你好,
提供其他调试信息。这就是异常发生的地方
嗨,埃什瓦尔,
我看到你的代码被卡在平台上了。得到此断言的最可能原因是内存不足,因为您可能会尝试分配从不使用的消息。
你能指出复制的步骤吗?
谢谢,下午好