- 主题:请教软串口通信丢数据是什么原因
arduino nano连接了一个gps模块,通过软串口通信,发现gps数据读取不完整,部分数据能正常读取,部分乱码,部分丢失。
gps模块是正常的,如果通过串口连pc,可以正常完整的读取数据。这个模块比较新,兼容gps,北斗和伽利略和格洛纳斯,因此每秒输出的语句有点多,猜测是不是arduino nano算力不够、处理不过来?但我不知道判断。
如果改用树莓派pico,会不会改善这个问题?
谢谢
--
FROM 124.42.128.*
好的,我研究研究再试试,多谢!
我还试了用现成的库解析,发现可以解析一部分语句,另一部分又解析不了,按说都是标准的定位语句,搞不懂为啥会这样
【 在 foxknox 的大作中提到: 】
: buffersize调整就好了
:
--
FROM 119.143.211.*
软串口通信时是模块供电,连pc时是usb供电,都不是独立供电,感觉不太像这个原因,我再试试看是不是这个原因
【 在 heyuanlie 的大作中提到: 】
: gps模块是不是独立供电?
: 是不是供电不足引起的?
:
--
FROM 119.143.211.*
今天学习了一下,通过分析gps直连pc获取的完整数据,一秒内传输了约1100个字符,我把softwareserial的buffersize逐渐改大测试,发现连arduino时输出的数据有了变化,正确的读取内容增加了,但即使把buffersize改大到1300,仍然没法正确读全部信息,用overflow看确实是缓冲区溢出了,猜测是1秒内读取的数据没有处理完,下一秒的数据又来了
不知道还能怎么解决
【 在 foxknox 的大作中提到: 】
: buffersize调整就好了
:
--
FROM 124.42.128.*
模块的波特率是115200,硬串口目前用于调试时arduino与pc通信,我改用硬串口连gps试试,把结果通过spi写到sd卡看是否可用
【 在 redleaves 的大作中提到: 】
: 波特率多少?改用Arduino硬件串口看看。
:
--
FROM 124.42.128.*
gps模块的输出内容估计不好改,定位芯片的调试软件好像没有关闭的设置,换定位模块肯定可以精简,但其他模块的精度又不满足要求
【 在 foxknox 的大作中提到: 】
: 1、精简传输内容;
: 2、看看能否不一次传输很多内容
:
--
FROM 124.42.128.*
我感觉不是,我现在还在测试阶段,程序就简单的通过软串口读取数据,再通过硬串口把收到的数据传递给pc
【 在 wazowski 的大作中提到: 】
: 中断干扰?
--
FROM 27.45.165.*
赞啊,是chatgpt答的吗?
我先试试硬串口,然后spi输出到sd卡看结果是否正常
另外已经在看有兼容arduino的rp2040的模块,切换一下成本不高的
【 在 cburst 的大作中提到: 】
: 你的问题可能是由于以下原因引起的:
: 1. **处理能力不足**:Arduino Nano 的微处理器可能无法处理 GPS 模块每秒发送的大量数据。这可能是因为它的时钟速度较慢,或者因为它的串口缓冲区较小。
: 2. **软件串口(Software Serial)问题**:软件串口是通过软件模拟的,而不是硬件直接支持的,这样就会消耗更多的处理资源,尤其是在高波特率下。如果 GPS 模块的输出数据速度很快,那么 Arduino Nano 可能会跟不上,导致数据丢失。
: ...................
--
FROM 14.150.142.*
试了硬串口连gps,通过spi把结果写到sd卡,发现果然有改善:
1.通过现成的库解析我要的核心字段,并保存下来,这次我要的全部核心字段都有了,目标基本实现了
2.简单把gps输出的全部数据保存下来,不做任何处理,发现仍然不能成功,估计保存量还是太大,占用过多资源,没能全部保存
后面打算还是换一个兼容arduino的rp2040芯片再测试一下,想全部保存数据
多谢各位的指导!
【 在 cburst 的大作中提到: 】
: 是的,gpt很好的
--
FROM 14.150.142.*
我这个模块没找到,它输出了GPGSV,可见卫星信息,我同时开了多星双频定位,导致可见卫星太多,每秒输出了一大堆GpS,北斗,伽利略等的可见星信息
它可以设置成单星系统定位,这样可见星的信息就少多了,但精度又可能会有影响,我不想这么设置
【 在 AIREE 的大作中提到: 】
: 有的GPS模块可以发指令 定义输出内容。看看说明书。
--
FROM 14.150.142.*