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