[技术问答] NUC980DK61YC的UART接收大数据量数据时数据无法读出

[复制链接]
3149|14
 楼主| liuziliang 发表于 2024-7-12 09:12 | 显示全部楼层 |阅读模式
我在使用NUC980DK61YC的串口接收数据时发现串口接收数据量过大时,读串口缓存区数据读不到,只能等到缓存区满才能一次性读出来。串口数据量小的时候接收数据时没有问题的。请问这是怎么回事?
 楼主| liuziliang 发表于 2024-7-12 09:15 | 显示全部楼层

这是正常状态下从串口向外读的数据量

这是正常状态下从串口向外读的数据量

评论

这是正常状态下的串口缓存区数据读取量  发表于 2024-7-12 09:16
 楼主| liuziliang 发表于 2024-7-12 09:17 | 显示全部楼层
2.png
这是数据量大时从串口缓存区向外读数据的返回值。1ms读一次,中间并不会读到。知道我设定的缓存区(2040)满了,才能将数据读出来。
riplay 发表于 2024-7-12 14:28 | 显示全部楼层
应该是程序里接收到大量串口数据后进行了某些处理,占用大量系统的资源或优先级。导致了低优先级的UART中断或则定时接收无法进入。
未说出口的像你 发表于 2024-8-23 14:37 | 显示全部楼层
在使用NUC980DK61YC的串口接收数据时,遇到串口接收数据量过大导致读串口缓存区数据读不到的问题,可能是串口接收速度慢
我吃小朋友 发表于 2024-8-23 17:00 | 显示全部楼层
如果串口接收数据的速度比数据处理的速度慢,会导致数据在缓存区堆积,最终导致缓存区满。这种情况下,需要确保及时处理串口接收到的数据,避免数据堆积
失物招領 发表于 2024-8-23 19:00 | 显示全部楼层
串口接收数据写入缓存区时,如果数据量过大超过了缓存区的容量,会导致缓存区溢出,造成数据丢失。可以通过增大缓存区的大小来解决这个问题。
她已醉 发表于 2024-8-23 21:00 | 显示全部楼层
一般的话,如果数据处理的过程中出现阻塞,导致无法及时处理串口接收到的数据,也会导致缓存区数据堆积。确保数据处理的过程尽量不阻塞串口接收。
一只眠羊 发表于 2024-8-23 23:00 | 显示全部楼层
可能是串口接收数据的中断处理不及时,会导致数据在中断处理函数中没有及时读取,从而造成数据丢失或缓存区数据堆积。确保中断处理函数尽快读取串口接收数据。
月亮一键变蓝 发表于 2024-8-24 02:00 | 显示全部楼层
在数据量过大的情况下,可能会出现数据丢失的情况。可以考虑使用数据流控制或者缓冲区管理技术来避免数据丢失。
在曼谷的春 发表于 2024-8-24 04:00 | 显示全部楼层
可以通过调整串口接收数据处理的速度、增大缓存区的大小、优化数据处理算法等方式来解决串口接收数据量过大导致的问题。
将爱藏于深海 发表于 2024-8-24 08:00 | 显示全部楼层
我觉得可以考虑提高串口的速率试试呢?
温室雏菊 发表于 2024-8-24 12:00 | 显示全部楼层
是不是串口阻塞了,数据太大处理不过来啊
春日负喧 发表于 2024-8-24 14:00 | 显示全部楼层
你可以扩大缓冲区试试呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部