权中正 发表于 2017-5-17 11:35:10

MAX485通信问题


电路如图
问题:接口连的是AVR M88V,EN端发送时高电平,接收时底电平。现在的问题是:当发送完成转为接收后,再转为发送时数据发送的数据有误,即不是我想要发的数据,请大侠指点。我已经花了快一个星期了。找不出是什么原因。


谢谢各位。

ccstc 发表于 2017-5-17 11:37:19

电路本身没什么问题,去检查程序吧,用示波器或者逻辑分析仪配合看一下波形就能找到问题了

cu_ice 发表于 2017-5-17 11:39:54

跳过485IC,直接232试试
是不是EA脚时序问题?

权中正 发表于 2017-5-17 11:41:51

cu_ice 发表于 2017-5-17 11:39
跳过485IC,直接232试试
是不是EA脚时序问题?

直接是没有问题的,MAX485我换过了

权中正 发表于 2017-5-17 11:42:53

ccstc 发表于 2017-5-17 11:37
电路本身没什么问题,去检查程序吧,用示波器或者逻辑分析仪配合看一下波形就能找到问题了 ...

我120欧的实际上没接,我的线不长。

ccstc 发表于 2017-5-17 11:55:42

线不长,没有120欧电阻不影响
如果第一次发送和接受都没有问题,那硬件肯定没问题了
还是看软件吧

权中正 发表于 2017-5-17 14:56:31

ccstc 发表于 2017-5-17 11:55
线不长,没有120欧电阻不影响
如果第一次发送和接受都没有问题,那硬件肯定没问题了
还是看软件吧


如果是一直处于发送状态是没问题,或都一直接收

Chuda 发表于 2017-5-17 16:08:12

会不会是你的使能端翻转时没有给延时,导致吃掉了第一个位的数据。

权中正 发表于 2017-5-17 17:25:09

Chuda 发表于 2017-5-17 16:08
会不会是你的使能端翻转时没有给延时,导致吃掉了第一个位的数据。

给了1MS还是一样。苦恼中……

权中正 发表于 2017-5-17 17:26:44

#define MAX845_Send() (PORTD |=_BV(PD2))
#define MAX845_Read() (PORTD &= ~(_BV(PD2)))

//发送命令
void USART_Send_Command(unsigned char addre,unsigned char comma)
{
        MAX845_Send();
//        _delay_ms(1);
        USART_Send_Addr(addre);//发送从机地址
        USART_Send_Data(comma);//发送控制命令
        MAX845_Read();
}

程序是这样的。

阿豪博士 发表于 2017-5-17 17:27:11

给楼主说一招:

直接将EA接RX 还是TX来着!

这样即可!

不必特意去专用IO口控制!

我的产品上 陆陆续续几千套了 都是这样接的 用得freemodbus

ccstc 发表于 2017-5-17 17:28:58

楼主是怎么debug的呢?
示波器,或者逻辑分析仪这些工具呢
再不济用万用表加断点也能找到问题

Chuda 发表于 2017-5-17 17:49:47

阿豪博士 发表于 2017-5-17 17:27
给楼主说一招:

直接将EA接RX 还是TX来着!


好像是将使能端反相后接TX

权中正 发表于 2017-5-17 18:21:18

阿豪博士 发表于 2017-5-17 17:27
给楼主说一招:

直接将EA接RX 还是TX来着!


牛人,一接就行了,接到RXD。能说一下原因吗?

权中正 发表于 2017-5-17 18:28:46

ccstc 发表于 2017-5-17 17:28
楼主是怎么debug的呢?
示波器,或者逻辑分析仪这些工具呢
再不济用万用表加断点也能找到问题 ...

只有指针万用表

snail_dongbin 发表于 2017-5-17 21:01:48

这种是由于延时问题,延时地方加错了
在发送完成转接受的地方加至少500us以上的延时,否则最后一位发送不成功
当然接rx可以,意思是一只处于发送状态,有数据过来时转为接收。

dfood 发表于 2017-5-19 15:17:20

RE和DE接一起就可以。
近距离,不用这么复杂。

权中正 发表于 2017-5-20 00:10:11

dfood 发表于 2017-5-19 15:17
RE和DE接一起就可以。
近距离,不用这么复杂。

线总长度一米多一点吧,不用这个了,直接单片机出来经过一个220电阻连起来用也可以.
页: [1]
查看完整版本: MAX485通信问题