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