新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 關于RS485接收發(fā)送數(shù)據(jù)的時序討論

關于RS485接收發(fā)送數(shù)據(jù)的時序討論

作者: 時間:2016-12-14 來源:網(wǎng)絡 收藏
學習485總線時,遇到延時問題,困擾很久。通過學習知道了485半雙工收發(fā)時必須延時,以保證系統(tǒng)的穩(wěn)定性、可靠性。好多資料都介紹了485 防靜電、抗干擾電路。惟獨沒提 每一幀收發(fā)停止位(或第9位)的延時和 半雙工總線收發(fā)切換延時 問題。
我覺得在半雙工狀態(tài)下 485 幀的收發(fā)和總線的收發(fā)狀態(tài)切換延時問題 對485總線長期穩(wěn)定的工作有很大影響。徹底搞懂這個問題對了解誤碼產(chǎn)生、數(shù)據(jù)丟失、總線的穩(wěn)定性、可靠性都有重要意義。

以下來源laoguo 21ic的文章 整理后:

1、每一幀收發(fā)停止位(或第9位)的延時問題
在RS-485半雙工通訊中,一般以單片機的TI,RI信號作收發(fā)切換控制信號,發(fā)送時,檢測TI是否建立起來,當TI為高電平后關閉發(fā)送功能轉(zhuǎn)為接收功能,接收時,檢測RI是否建立起來,當RI為高電平后,接收完畢,又可以轉(zhuǎn)為發(fā)送。因此,必須控制端RE*,DE的信號的有效脈寬應該大于發(fā)送或接收一幀信號的寬度。

1

從上面的時序圖可知:單片機在串行口發(fā)送數(shù)據(jù)時,只要將8位數(shù)據(jù)位傳送完畢,TI標志即建立,但此時應發(fā)送的第九位數(shù)據(jù)位(若發(fā)送地址幀時)和停止位尚未發(fā)出。如果在這時關閉發(fā)送控制,勢必造成發(fā)送幀數(shù)據(jù)不完整。
接收數(shù)據(jù)時也同樣如此,單片機在接收完8個數(shù)據(jù)位后就建立起RI信號,但此時還未接收到第九位數(shù)據(jù)位(若接收地址幀時)和停止位。所以,接收端必須延時大于2位數(shù)據(jù)位的時間(1位數(shù)據(jù)位時間=1/波特率),再作應答,否則會發(fā)生總線沖突。
總之,發(fā)送和接收控制信號應該足夠?qū)?以保證完整地接收一幀數(shù)據(jù),任意兩個單機的發(fā)送控制信號在時間上完全分開,避免總線爭端。

注:延時T秒的取值
(1) 傳送地址幀時,T>2X(1/波特率),可以選取T=2.5X(1/波特率)。
(2) 傳送數(shù)據(jù)幀時,T>1X(1/波特率),可以選取T=1.5X(1/波特率)。

實際的軟件流程:
1

問題:(【5樓】以解決)
可看到軟件流程并沒有在每一幀收發(fā)停止位(或第9位)后實現(xiàn)延時,而是在(數(shù)據(jù)包的)最后一個字節(jié)(幀)上延時。這樣能保障數(shù)據(jù)幀的正確(完整性)和穩(wěn)定性嗎?

2、半雙工總線收發(fā)切換延時問題
為了可靠的工作,在485總線狀態(tài)切換時需要做適當延時,再進行數(shù)據(jù)的收發(fā)。具體的做法是在數(shù)據(jù)發(fā)送狀態(tài)下,先將控制端置“1”,延時1ms左右的時間,再發(fā)送有效的數(shù)據(jù),一包數(shù)據(jù)發(fā)送結束后再延時1ms后,將控制端置“0”。這樣的處理會使總線在狀態(tài)切換時,有一個穩(wěn)定的工作過程。

問題:
這里的 1ms是如何計算的? 485總線收、發(fā)狀態(tài)切換時需要做適當延時,是指 485芯片的收發(fā)切換需要延時還是 485總線電纜固有的特性?


評論


技術專區(qū)

關閉