DSA通讯协议
1.DSA-接口規范
DSA總線是一個異步,雙向的,內部設計用于在一組兩個微處理器之間的通信總線。
它有三個雙向線:
● DATA -啟動同步和數據傳輸
● STB -數據選通(當STB為低電平時數據是有效的)
● ACK -啟動同步,數據傳輸,確認及通信應答?
?
2.通訊說明
每個數據通信包括三個階段:
● 開始同步 同步發射器和接收器數據傳輸
● 數據傳輸 通過數據選通和應答信號傳輸所有的數據位。
● 通信應答 接收器可以讓發射機知道通信是否異常,如果通信沒有出現錯誤,有 可能重復它,直到它是確定
?
處理器被稱為發射器,當它想傳輸數據。它從一個同步階段開始,傳輸數據,并要求收到最后的通信應答。
其他處理器自動成為接收器。
?
2.1同步啟動?
發射器拉低數據線,讓對方知道它要發送一些數據。然后它開始等待,直到ACK線被拉低接收到一個來自接收方確認信號,確認接受傳輸請求和準備好接受數據。
然后發送方拉高DATA信號,等待ACK線被拉高,如果ACK被拉高則表示同步結束,發送方和接收方都準備好了數據傳輸。
?
有可能兩個處理器要在同時傳輸他們的數據,同時拉低DATA線然后等待ACK線上的應答信號。因此,有必要在同步開始的時候在軟件中添加超時發送。超過超時時間時,伺服處理器,伺服處理器拉高DATA線,然后檢測用戶處理器是否有發起同步信號。如果是,他先接受數據,然后伺服處理器可以再拉低數據線再次傳輸數據。
伺服處理器不能通過同步階段當它已經有新數據要發送的時候,舊的數據將被覆蓋。
?
2.2數據傳輸
在這部分的通信的所有數據位都從發射機傳送到接收機,根據位變發射機設置數據線被發送。當數據線變穩定后,發射機拉低STB線來告訴接收機在數據線上的信息是有效的。當STB線的低電平狀態被是識別后,接收器開始讀DATA先的信息。然后接收機拉低ACK線來告訴發送機數據已經被讀好了。當發送方檢測到ACK變低后,將STB腳拉高,當接收方檢測到STB變高后,將ACK拉高,完整的1bit的數據就結束了。
如果伺服處理器不能在(TTRF)傳輸16位數據,它拉高DATA線和STB線,并拉低ACK線進入通信階段。
?
2.3通信應答?
總線上的尖峰可能會導致發射器和接收器出來的同步。此時接收器應該已經收到指定的位計數準確,如果接收方的位計數器不等于這個指定的計數時,接收器清除數據線,否則此線保持高,在此之后,接收器清除STB線。這意味著對于發射機,該比較結果是在DATA線上有效。發射器讀取數據線,然后設置ACK線高。這意味著為接收器的數據線是由發送器讀取。當接收器識別到的ACK線為高時,它設置兩者的DATA和STB線高?,F在,所有的通信都完成,在DSA-總線再次空閑。如果通信沒有發生錯誤,變送器應重復(僅一次)進行最后一次通信開始同步階段
如果接收方不在范圍內TCOM通信應答階段作出適當的反應,伺服處理器(=變送器)將此解釋為一個通信錯誤,并設置高的所有行。
?
在使用該通訊協議的時候,需要注意一下幾點:?
1.在總線空閑的時候,用戶處理器和伺服處理器都處于讀數據的狀態。當某一方需要發送數據的時候,再把它設置為寫狀態。2.在同步或是數據傳輸的階段,如果超時沒有接到相應的應答,發送方應將狀態轉為讀狀態。主要是為了處理雙方同時需要傳輸數據
3.DSA總線是一個異步,雙向的,內部設計用于在一組兩個微處理器之間的通信總線。 4.每傳輸一個比特位都需要再同步。且每次只能傳輸一個比特位。?
?
轉載于:https://www.cnblogs.com/WenLee/p/4019495.html
總結
- 上一篇: php组装json数据包,php封装js
- 下一篇: VS2008 调试windows服务项目