蔣金元
一、RS-485方式構(gòu)成的多機(jī)通信原理
用MAX1487構(gòu)成的多機(jī)通信原理框圖如圖1所示。
總線末端接匹配電阻,吸收總線上的反射信號(hào),保證信號(hào)傳輸無毛刺。匹配電阻的取值應(yīng)與總線的電阻特性相當(dāng)。當(dāng)總線上沒有信號(hào)傳輸時(shí),總線處于懸浮狀態(tài),易受干擾信號(hào)影響。在總線上差分信號(hào)的正端A+和+5V電源間接一個(gè)10kΩ的電阻,正端A+和負(fù)端B-間接一個(gè)10kΩ的電阻,負(fù)端B-和地間接一個(gè)10kΩ的電阻,形成網(wǎng)絡(luò)??偩€上沒有信號(hào)傳輸時(shí),正端A+的電平大約為3.2V,負(fù)端B-的電平大約為1.6V。即使有干擾信號(hào),也很難產(chǎn)生串行通信的起始信號(hào)0,從而增加了總線抗干擾的能力。
在半雙工通信情況下,發(fā)送和接收共用一個(gè)物理通道,任意時(shí)刻只允許一臺(tái)單機(jī)處于發(fā)送狀態(tài)。因此,要求應(yīng)答單機(jī)必須在偵聽到總線上呼叫信號(hào)已經(jīng)發(fā)送完畢,且沒有其他單機(jī)發(fā)出應(yīng)答信號(hào)的情況下才能應(yīng)答。如果在時(shí)序上配合不好,就會(huì)發(fā)生總線沖突,使整個(gè)系統(tǒng)通信癱瘓,無法正常工作。要避免這一點(diǎn),必須遵守以下幾項(xiàng)原則:
1.復(fù)位時(shí),主從機(jī)都處在接收狀態(tài)
MAX1487的發(fā)送和接收功能轉(zhuǎn)換是由/RE,DE端控制的。RE=1,DE=1時(shí),MAX1487處于發(fā)送狀態(tài):/RE=0,DE=0時(shí),處于接收狀態(tài)。使用單片機(jī)的一根口線連接/RE,DE端。在上電復(fù)位時(shí),硬件電路穩(wěn)定需要一定時(shí)間,且單片機(jī)各端口復(fù)位后處于高電平狀態(tài),會(huì)使總線上各個(gè)分機(jī)處于發(fā)送狀態(tài),加上上電時(shí)各電路不穩(wěn)定,可能向總線發(fā)送信息。因此,用一根口線作發(fā)送和接收控制信號(hào),應(yīng)該將口線反向后接入MAX1487的控制端,使上電時(shí)MAX1487處于接收狀態(tài)。
2.控制端,RE、DE的信號(hào)的有效寬度應(yīng)大于發(fā)送或接收一幀信號(hào)的寬度
MAX1487的發(fā)送和接收都由同一器件完成,且使用同一物理通道,必須對(duì)控制信號(hào)進(jìn)行切換。控制信號(hào)何時(shí)為高電平、何時(shí)為低電平,以單片機(jī)的標(biāo)志位作為參考。AVR的標(biāo)志位為TXC和RXC。
二、Atmega8515和MAX1487的連接
在多機(jī)通信過程中,所有設(shè)備的RS-485接口是并在通信線上的,只能有一個(gè)設(shè)備為主機(jī),其他為從機(jī)。通信由主機(jī)發(fā)起。數(shù)據(jù)幀一般采用1位起始位、9位數(shù)據(jù)位,其中第9位(RXB8)被用作表征該幀是地址幀還是數(shù)據(jù)幀。當(dāng)幀類型表征位為“1”時(shí),表示該幀數(shù)據(jù)為一個(gè)地址幀;當(dāng)幀類型表征位為“0”時(shí),表示這個(gè)幀為一個(gè)數(shù)據(jù)幀。主機(jī)MCU可以設(shè)置使用9位數(shù)據(jù)幀結(jié)構(gòu)(UCSZ=7)。當(dāng)發(fā)送地址幀時(shí),置第9位為“1”;發(fā)送數(shù)據(jù)幀時(shí),置第9位為“0”。這種情況下,從機(jī)必須設(shè)置成接收9位數(shù)據(jù)幀結(jié)構(gòu)。
多機(jī)通信模式允許多個(gè)從機(jī)并在通信線路上,接收一個(gè)主機(jī)發(fā)出的數(shù)據(jù)。通過對(duì)接收到的地址幀中的地址進(jìn)行解碼,確定哪個(gè)從機(jī)被主機(jī)尋址。如果某個(gè)從機(jī)被主機(jī)尋址,它將接收接下來主機(jī)發(fā)出的數(shù)據(jù)幀,而其它的從機(jī)將忽略數(shù)據(jù)幀,直到再次接收到一個(gè)地址幀(從機(jī)地址是由各個(gè)從機(jī)本身的軟件決定的)。