單片機(jī)RS-485多機(jī)通訊的實現(xiàn) 尹 紅 唐 煜 摘 要 本文介紹一種能利用RS-485電氣特性和簡單的結(jié)構(gòu)方式,采用自定義串行通信協(xié)議,實現(xiàn)單片機(jī)RS-485多機(jī)通訊的方法和技巧。 |
圖1 SN75176芯片及其邏輯關(guān)系
3 RS-485方式構(gòu)成的多機(jī)通信原理 |
圖2 采用RS-485構(gòu)成的多機(jī)通訊原理框圖 在總線末端接一個匹配電阻,吸收總線上的反射信號,保證正常傳輸信號干凈、無毛刺。匹配電阻的取值應(yīng)該與總線的特性阻抗相當(dāng)。 |
圖3 串行口模式3時序圖 單片機(jī)在串行口發(fā)送數(shù)據(jù)時,只要將8位數(shù)據(jù)位傳送完畢,TI標(biāo)志即建立,但此時應(yīng)發(fā)送的第九位數(shù)據(jù)位(若發(fā)送地址幀時)和停止位尚未發(fā)出。如果在這是關(guān)閉發(fā)送控制,勢必造成發(fā)送幀數(shù)據(jù)不完整。如果單片機(jī)多機(jī)通訊采用較高的波特率,幾條操作指令的延時就可能超過2位(或1位)數(shù)據(jù)的發(fā)送時間,問題或許不會出現(xiàn)。但是如果采用較低波特率,如9600,發(fā)送一位數(shù)據(jù)需100μs左右,單靠幾條操作指令的延時遠(yuǎn)遠(yuǎn)不夠,問題就明顯地暴露出來。接收數(shù)據(jù)時也同樣如此,單片機(jī)在接收完8個數(shù)據(jù)位后就建立起RI信號,但此時還未接收到第九位數(shù)據(jù)位(若接收地址幀時)和停止位。所以,接收端必須延時大于2位數(shù)據(jù)位的時間(1位數(shù)據(jù)位時間=1/波特率),再作應(yīng)答,否則會發(fā)生總線沖突。 |
圖4 程序流程圖 注:延時T秒的取值 作者簡介:尹 紅 工程師。主要從事計算機(jī)應(yīng)用和數(shù)控產(chǎn)品的研究和開發(fā)工作 作者單位:中國科學(xué)院成都計算機(jī)應(yīng)用研究所 四川。成都(610041)
|