MAX1487是用于RS-485與RS-422通信的低功耗收發器,每個器件中都具有一個驅動器和一個接收器。MAX1487的驅動器擺率不受限制,可以實現最高2.5Mbps的傳輸速率。
MAX1487收發器在驅動器禁用的空載或滿載狀態下,吸取的電源電流在120μA至500μA之間。所有器件都工作在5V單電源下。
驅動器具有短路電流限制,并可以通過熱關斷電路將驅動器輸出置為高阻狀態,防止過度的功率損耗。接收器輸入具有失效保護特性,當輸入開路時,可以確保邏輯高電平輸出。
具有1/4單位負載的接收器輸入阻抗,使得總線上最多可以有128個MAX1487收發器。MAX1487為半雙工應用設計,其組成的差分平衡系統抗干擾能力強,接收器可檢測低達200mv的信號,是一種高速,低功耗,控制方便的異步通訊接口芯片。
MAX1487引腳配置和典型工作電路
圖表
MAX1487的管腳及內部結構框圖如上圖所示。
腳1 RO:接收器輸出(A―B≥+0.2V,RO=“1”:A―B≤―0.2V ,RO=“1”);
腳2 RE:接收器使能;
腳3 DE:驅動器使能;
腳4 DI:驅動器輸入;
腳5 GND:地;
腳6 A:接收器非反相輸入
或驅動器非反相輸出;
腳7 B:接收器反相輸入
或驅動器反相輸出;
腳8 VCC:電源
1. 供電電壓 4.75V≤VCC≤5.25V
2. 供電電流 120μA—500μA,靜態電流 230μA
3. 共模輸入電壓范圍 ―7V——+12V
4. 通訊傳輸線最多可掛128個收發器
5. 傳輸速率 2.5MB/S
6. 傳輸延時 30ns
7. 跳變坡度 5 ns
8. 工作溫度 0°C——+70°C
MAX1487的輸入腳DI可直接與單片機CPU的TXD腳相連,輸出腳RO與單片機CPU的RXD腳相連。MAX1487內部的驅動器與接收器是三態的,通過DE(驅動器輸出高電平使能)和RE(接收器低電平使能)進行發送與接收,發送與接收的兩種控制信號是反相的。可將二者接同一控制信號(如圖2中P3.5),即“1”電平控制發送,“0”電平控制接收。A、B端實現多機聯網。
MAX1487特性說明
關鍵特性
容錯應用
MAX3430:±80V故障保護、失效保護、1/4單位負載、+3.3V、RS-485收發器
MAX3440E–MAX3444E:±15kV ESD保護、±60V故障保護、10Mbps、失效保護、RS-485/J1708收發器
對于空間受限應用
MAX3460–MAX3464:+5V、失效保護、20Mbps、PROFIBUS RS-485/RS-422收發器
MAX3362:+3.3V、高速、RS-485/RS-422收發器,采用SOT23封裝
MAX3280E–MAX3284E:±15kV ESD保護、52Mbps、+3V至+5.5V、SOT23、RS-485/RS-422、真失效保護接收器
MAX3293/MAX3294/MAX3295:20Mbps、+3.3V、SOT23、RS-485/RS-422發送器
對于多通道收發器應用
MAX3030E–MAX3033E:±15kV ESD保護、+3.3V、四路RS-422發送器
對于失效保護應用
MAX3080–MAX3089:失效保護、高速(10Mbps)、限擺率RS-485/RS-422收發器
對于低電壓應用
MAX3483E/MAX3485E/MAX3486E/MAX3488E/MAX3490E/MAX3491E:+3.3V供電、±15kV ESD保護、12Mbps、限擺率、真正的RS-485/RS-422收發器
MAX1487芯片應用舉例
一、基于MAX1487芯片的遠程多機通訊應用
1.應用電路
在多機通信中,一般PC機作為上位機只有RS232標準的通訊接口,要實現RS485標準接口通信,須通過RS232/RS485轉換接口電路,完成由EIA電平到TTL電平的轉換。可用專門的帶隔離RS232/485轉換器來實現。
MAX1487的RE與DE連接同一控制信號,如下實際電路(下圖)中8031的P3.5,可嚴格保證收發信號在時間上錯開。
2.通訊協議
MCS51中串行控制寄存器SCON設有多機通訊控制位SM2(SCON.5),在編程前,定義各從機的地址編號,如分別為00H,01H,02H等等。從機系統在初始化程序中將串行口編程為約定的接收方式,且置位SM2,允許串行口中斷。在主機和某一從機通訊之前,先向所有從機發出所選從機的地址,以設置第9位TB8為1表示為地址幀,這時SM2作為地址監聽位,所有從機當接收到的第9位RB8為1則置位中斷標志RI,中斷后判斷主機送來的地址與本從機是否相同,若為本地址,則清SM2為0,準備接收主機送來的數據幀;其他從機保持SM2為1狀態。接著主機發送數據幀(TB8=0表示),各串行口同時接收到了數據幀,而只有已選中的從機(SM2=0)才能產生中斷并接收該數據,其余從機收到(SM2=1,RB8=0)不產生中斷響應,將數據丟掉。這樣就實現了多機一對一通訊。
一般的程序設計是中斷一次接收一個字節數據,這里我們將使一次中斷接收一個完整的數據包。數據包由五部分組成:從機地址(1Byte);命令字節(1Byte);數據字節數(1Byte);傳送數據(0-256Byte);校驗和(2Byte)。主機向下先發送從機地址,從機進入中斷接收程序,如地址相符,再以查詢方式接收命令字節、數據字節數、數據、校驗和。從機根據接收到的校驗和判斷接收正確與否,這時從機由接收狀態置成發送狀態,若接收正確則向主機回發“A5H”信號及其它回應信息,否則發“5AH”信號,中斷返回前從機再置成接收狀態。在主從機收發程序中做了超時處理,若經過一段時間收不到信息,則此次通訊失敗。
3 軟件設計
1.單片機部分
工作方式:定時器1為工作方式2,串行口為工作方式3;
傳送方式:中斷接收與發送響應信息;
數據格式:一個起始位,八個數據位,一個TB8或RB8,一個停止位;
波特率:9600bps
從機中斷子程序流程圖略。
下面給出單片機通訊程序采用Franklin/Keil C51語言編制。
main()
{ //初始化
TMOD=0x20;
TL1=0xFD; //設定波特率為9600bit
TH1=0xFD;
PCON=0x80;
TCON=0x00;
SMOD=0x00;
SCON=0xF0;
TR1=1;
REN=1;
ES=1;
EA=1;
P35=1; //處于接收狀態
}
//串行口中斷程序
void serial() interrupt 4 using 1 {
unsigned char address;
RI=0; //關中斷
address=SBUF;
//判斷是否符合本機地址,如1號機
if (address= =0x01)
{ P35=0;
SM2=0; //清SM2位,準備接收數據
……
//接收數據及相應處理
(發送功能可在此部分完成)
……
SM2=1;
}
else SM2=1; //不是發給本機數據,
置位SM2,退出
}
2.PC機部分
傳送方式:查詢方式接收和發送數據;
數據格式:一個起始位,八個數據位,一個可編程位(類似TB8或RB8),一個停止位;
波特率:9600bps
上位PC機通信程序的開發環境采用Borland C++ Builder5.0可視化編程工具,它是基于C++語言的快速應用程序開發(RAD)工具,是最先進的開發應用程序組件思想和面向對象的C++語言融合的產物,C++ Builder5.0內置了近200個完全封裝了Windows 9x公用特性且具有擴展性的可重用控件,這就使得利用C++ Builder開發應用程序非常方便、快捷。
在Windows98/95環境中,編寫串行通信應用程序,一般采用如下兩種方法:其一是通過調用Win32 API提供的串行通信函數,這種方法實現相當繁瑣;另一種方法則是利用專門處理串行通信的控件來編程,用戶只需在自己的應用程序中嵌入這一類控件,編寫少量代碼便可輕松高效地完成任務。在本系統中,我們選擇一個名為Comm的第三方控件來實現串口的通信管理。
表1 Comm控件的重要屬性和事件列表
屬性(事件)名稱 用 途
BaudRate 設置串行通信波特率
Databits 設置有效數據位長度
DeviceAddress 設置串行口地址
DeviceName 選擇串行口
Parity 奇偶校驗位設置
OnBreak 通信中斷時激活
OnError 數據傳輸有誤時激活
Comm控件的一些重要屬性(Property)和事件(Event)如表1所示。串行端口的選擇、波特率的設定以及數據格式的定義等都可通過設置相應的屬性來完成。在由計算機和多個單片機應用系統構成的多機環境中,一般把通信數據分為“地址幀”和 “數據幀”來傳送,PC機的串行通信本身并不具備多機通信功能,也不能產生TB8或者RB8,但可以通過靈活設置Comm控件中的“Parity”屬性來形成正確的地址/數據標志位,從而使PC機與單片機之間實現多機通信。
PC機與某一下位機通信,在對話框中選擇下位機的地址號、設定通信命令,在“連接”按鈕(Button)的OnClick事件處理函數中編寫代碼實現與下位機的數據通信。另外在通信被中斷或數據傳輸有誤時,分別激活Comm控件的OnBreak事件和OnError事件。在OnBreak或者OnError的事件處理函數中加入代碼用來完成是否重發或取消本次通信等操作。
二、MAX1487/485芯片DE控制端的設計方案解析
1 問題的提出
在分布系統的設計中,RS-485半雙工異步通信總線是被各個廠家廣泛采用的數據通信總線。在售飯管理系統的設計中也不例外,它往往應用在主控機房與各個食堂的分機之間。系統拓撲結構如圖1所示。
由于實際工程中,分機數量較多,分布較遠,所處的環境較惡劣,現場的各種干擾也較大,所以,往往通信的可靠性及質量不高,再加上軟硬件設計得不完善,使得實際工程應用中485總線的通信質量總是不盡人意。
在使用RS-485總線時,如果簡單地按常規方式設計電路,在實際應用中可能會出現以下兩個問題:一是數據傳輸的可靠性問題;二是在多機通信方式下,一個節點發生故障往往會導致整個系統的通信陷入癱瘓,而且故障點的定位也非常不容易,給系統維護帶來困難。
針對上述問題,我們對485總線的軟件和硬件分別采取了一些必要的改進措施。
2 硬件電路的設計現以8031單片機、單片機監控芯片MAX691A,外接485總線通訊芯片MAX1487為例。電路原理圖如圖2所示。在電路設計中注意了上述兩個問題。
2.1 MAX1487 485芯片DE控制端的設計由于在售飯系統中,主控機房與各個食堂相隔較遠,而分機系統上電復位又常常不是在同一個時刻完成。8031在復位期間,I/O口輸出高電平,此時該分機的MAX1487的DE端電位為“1”,那么它將會處于發送狀態,也就是占用了通信總線,這樣,就影響其它分機與主機進行通信。因此,在電路設計時,應保證系統上電復位時不占用總線。圖2電路的接法可以有效地解決復位期間分機“拉死”總線的問題。
另外,當某個分機出現異常情況(如死機)時,若此時MAX1487的DE端電位恰好為“1”,則該分機將一直占用通信總線,造成整個系統通信的崩潰。因此,在電路中應考慮監控MAX1487的DE端的電平,如該端持續為“1”時,應使分機復位以解除異常情況。圖2電路可有效地解決這種情況。此外,該電路還能咻 下不工作的窗口機(分機)能自行脫離通訊網絡。
2.2 485總線輸出電路部分的設計輸出電路的設計要充分考慮到線路上的各種干擾及線路特性阻抗的匹配。由于工程環境比較復雜,現場常有各種形式的干擾源,所以,485總線的傳輸端一定要加有保護措施。在電路設計中采用穩壓管Z1、Z2組成的吸收回路,也可以選用能夠抗浪涌的TVS瞬態雜波抑制器件,或者直接選用能抗雷擊的485芯片(如MAX1487E等),以消除線路浪涌干擾。
考慮到線路的特殊情況(如某一臺分機的485芯片被擊穿短路),為防止總線中其它分機的通信受到影響,必須在其A、B輸出端與485總線之間進行隔離。一種簡單可行的方法是:在MAX1487的信號輸出端串聯兩個10~30Ω的電阻R1、R2,這樣一來,一方面,本機的硬件故障就不會使整個總線的通信受到影響;另一方面,與Z1、Z2配合,進一步保護了485總線通訊芯片。
在售飯系統產品的現場施工中,一般采用雙絞線來連接,它的特性阻抗為120Ω左右,所以,線路設計時,在整個485網絡傳輸線兩端應各接1只120Ω的匹配電阻(如圖2中R7),以減少線路上傳輸信號的反射。
由RS-485芯片的特性可知,接收器的檢測靈敏度為±200mV,即差分輸入端的電位差的絕對值大或等于200mV時,輸出狀態不確定。如果總線上所有發送器被禁止時,總線處于空閑狀態,接收器的輸出狀態是不定的。如處于邏輯“0”,這會被誤認為是通信幀的起始位而引起工作不正常。解決這個問題的辦法是人為地使A端電位高于B端電位,這樣接收端的電平在485總線不發送期間(總線空閑時(呈現唯一的高電平,8031單片機就不會被誤中斷而收到亂字符。通過在485電路的A、B輸出端加接上拉、下拉電阻R5、R6,即可很好地解決這個問題。需要注意的是,在整個網絡中只需在一處接入這兩只電阻,通常在主機中接入。
有些資料中提到,在施工中不能將主機安裝在網絡的中間形成T型分布,而應將主機放在總線的一端。由485總線規范指出,最大通訊距離可達1.2km,筆者在現場施工中,為了增加通訊距離,將主機設置在網絡的中央,由于分機間無需進行通訊,兩臺分機之間的最大距離可達到2.4km。實際應用中可達到2km而保證通訊正常。
3 軟件的編程RS-485通常應用于一對多點的主從應答式通信系統中,相對于RS-232等全雙工總線,效率低了許多,因此選用合適的通信協議及控制方式就顯得非常重要。
3.1 總線穩態控制大多數使用者選擇在數據發送前1ms將收發控制端DE置成高電平,使總線進入穩定的發送狀態后才發送數據,數據發送完畢再延遲1ms后置TC端成低電平,使數據可靠發送完畢后才轉入接收狀態。如按這樣的要求來做,系統的通訊效率將大大降低。據筆者使用的經驗,DE端有10個機器周期的延時已滿足要求。
3.2 通訊協議制定由于485總線是半雙工異步通信總線,在某一個時刻,總線只可能呈現一種狀態,所以,這種方式一般適用于主機對分機的查詢方式通信,總線上必然有一臺始終處于主機地位的設備在巡檢其它的分機,所以需要制定一套合理的通信協議來協調總線的分時共用。這里采用的是數據包通信方式。為保證數據傳輸質量,對每個字節進行校驗的同時,應盡量減少特征字和校驗字。慣用的數據包括格式由引導碼、長度碼、地址碼、命令碼、數據、校驗碼、尾碼組成,每個數據包長度達20~30字節。在RS-485系統中這樣的協議不太簡練,筆者采用了如下協議:上位機數據包格式由地址碼、長度碼、命令(或數據)碼、CRC校驗碼組成;下位機應答幀由長度碼、狀態碼、數據碼和CRC校驗碼組成。實際使用效果良好。
4 結束語經過上述的軟硬件共同處理,485總線在售飯系統應用中的可靠性大大提高,在食堂比較惡劣的環境條件下,系統的通信始終處于正常狀態,整機性能滿足了現場工程的需要。
評論
查看更多