我的max485单片机程序如下,中断接收数据,主程序中判断收到4个字节数据就转发。
PC串口转485通过MAX485与单片机UART连接。调试助手发送单个字节,发送4次,能正确收到转发回来的数据。一次发送4个字节,则必须发送两次,才能收到转发回来的4个字节数据,不过该数据是两次发送的前2个字节。
用示波器观察MAX485的数据接收端RI,波形很好。无论发送单字节还是4字节,波形都正橘闷确!问题应该在程序。请各位帮助我分析一下程序拦滑,我可能陷入某个误区。
1B:反相接收器输入和反相驱动器者搭山输出2.VCC:正电源:4.75V≤VCC≤5.25V3.RO:接收器输出:如果A>Bby200mV,RO会高,如果AMAX485系列是用于RS-48通信的低功率收发器。每个部首中件包含一个驱动程序和一枝告个接收程序。MAX485系列的驱动转换速率是不受限制的,允许它们最多传输2.5Mbps。这些收发器在空载或满载禁用驱动器时,可吸收120μA到500μA之间的电源电流。驱动器的短路电流有限,并通过热关闭电路防止过多的功率耗散,使驱动器输出处于高阻抗状态。接收器输入具有故障安全功能,如果输入是开路,保证逻辑高输出。MAX485系列是为半双工应用设计的。
相信你的 RE 与 DE 是连接在一起的,如果不是,你的电路就成了另类.与 RE/DE 连接在一起的那条单片机I/O, 我命肆橘名为 CTRL_PIN ,至于是哪条,你才知道.
其实发送与接收与普通的 232 有 99.9% 的相似, 只是多了两行,看下面
发送程序时:
CTRL_PIN = 1// 输出高电平,允许MAX485输出差分信号.
UART232_SENDCHAR() // 普通232发送函数
CTRL_PIN = 0// 输出低电平,禁止发送,允许接收.
接收程序时: 只要裂卜团弊闷保证 CTRL_PIN = 0 就可以了,无论你是采用中断,还是沦询的方式接收字符,与普通串口用法一样
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)