MEGA2560 多串口干扰问题-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4004|回复: 9

[未解决] MEGA2560 多串口干扰问题

[复制链接]
发表于 2019-6-5 16:54 | 显示全部楼层 |阅读模式
本人新手一枚,求助:

MEGA2560和USART串口屏通讯,TX3接串口屏的RX,RX2接串口屏的TX,使用Serial3发送传感器数据给屏幕,Serial2读取屏幕发过来的指令。
void loop()
{
    SendData();                             //使用Serial3发送数据
    if(Serial2.available() > 0)
    {
         ReadCommand();             //通过Serial2读取屏幕指令
    }
}
测试发现无法正常读取到屏幕指令,注释掉SendData()就能正常读取指令。

请各位大神帮忙分析下原因。

谢谢!
发表于 2019-6-5 18:02 | 显示全部楼层
确定你的硬件没问题吗? 比如共地之类的
发表于 2019-6-5 20:10 | 显示全部楼层
通常,只是你程序逻辑问题。。。。
发表于 2019-6-6 08:44 | 显示全部楼层
为啥不用同一组串口
 楼主| 发表于 2019-6-6 14:33 | 显示全部楼层
最开始是都用的Serial2,就是因为出现了这个干扰的问题才改成两个串口,结果还是一样。

也试过把读取屏幕指令(发送6个校准数据,存入EEPROM)的动作放到外部中断里进行,,结果只能读取到5个数据,第一个数据一直是0。注释掉SendData()之后就能正常读取6个数据。
 楼主| 发表于 2019-6-6 14:34 | 显示全部楼层
Zoologist 发表于 2019-6-5 18:02
确定你的硬件没问题吗? 比如共地之类的

换过一块板了还是一样
 楼主| 发表于 2019-6-6 14:42 | 显示全部楼层
奈何col 发表于 2019-6-5 20:10
通常,只是你程序逻辑问题。。。。

逻辑就是通过Serial3发送一遍传感器数据,然后判断Serial2有没有数据过来(屏幕指令)。没有就继续发一遍传感器数据,有就读取屏幕指令发过来的6个校准数据然后存入到EEPROM。   

加了一些测试代码,发现SendData()没有注释掉的时候,Serial2.available > 0一直是成立的,实际屏幕没有数据发过来。结果就是读出一堆乱码或者全部都是0.
发表于 2020-9-28 19:48 | 显示全部楼层
估计是没理解好 USART串口屏通讯,对位、对收发过程 理解不好,
发表于 2022-3-8 17:42 | 显示全部楼层
我也遇到此问题,有解决方案了么
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 13:51 , Processed in 0.108289 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表