max485自动收发只能发送一次

max485自动收发只能发送一次,第1张

不支持连续收发

我的max485单片机程序如下,中断接收数据,主程序中判断收到4个字节数据就转发。

PC串口转485通过MAX485与单片机UART连接。调试助手发送单个字节,发送4次,能正确收到转发回来的数据。一次发送4个字节,则必须发送两次,才能收到转发回来的4个字节数据,不过该数据是两次发送的前2个字节。

用示波器观察MAX485的数据接收端RI,波形很好。无论发送单字节还是4字节,波形都正确!问题应该在程序。请各位帮助我分析一下程序,我可能陷入某个误区。

相信你的 RE 与 DE 是连接在一起的,如果不是,你的电路就成了另类.

与 RE/DE 连接在一起的那条单片机I/O, 我命名为 CTRL_PIN ,至于是哪条,你才知道.

其实发送与接收与普通的 232 有 99.9% 的相似, 只是多了两行,看下面

发送程序时:

CTRL_PIN = 1// 输出高电平,允许MAX485输出差分信号.

UART232_SENDCHAR() // 普通232发送函数

CTRL_PIN = 0// 输出低电平,禁止发送,允许接收.

接收程序时: 只要保证 CTRL_PIN = 0 就可以了,无论你是采用中断,还是沦询的方式接收字符,与普通串口用法一样

首先,MAX485是单5V供电的,所以你应当改用MAX3485或其它的3.3V的485收发器。

其次,C1、C2两个电容不应该是同一个值,一般一个224和一个222之类,相差两个数量级。

再次,端口的防护一般使用TVS管。普通稳压管的响应速度太慢,两个稳压管反接起不到好的保护效果。

“这个PA0我应该怎么写程序”

PA0拉高电平时,收发器处于发送状态;PA0拉低电平时,收发器处于接收状态。你需要根据自己的通信协议,规划好节点接管总线的时序,平时处于接收状态,拿到令牌或分配到自己的时间片以后就切换到发送状态发送数据包。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7831584.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存