簡介
在地址位多處理器協定中(ADDR/IDLE MODE位為1),最後一個數據位後有一個附加位,稱之為地址位。數據塊的第一個幀的地址位設定為1,其他幀的地址位設定為0。地址位多處理器模式的數據傳輸與 數據塊之間的空閒周期無關(參看圖在SCICCR暫存器中的位3——ADDR/IDLE MODE位)。一根地址線只能表示1和0。
傳輸原理
TXWAKE位的值被放置到地址位,在傳送期間,當SCITXBUF暫存器和TXWAKE分別裝載到TXSHF暫存器和WUT中時,TXWAKE清0,且WUT的值為當前幀的地址位的值.因此,傳送一個地址需要完成下列操作:
1、TXWAKE位置1,寫適當的地址值到SCITXBUF暫存器。當地址值被送到TXSHF暫存器又被移出時,地址位的值被作為1傳送。這樣串列匯流排上其他處理器就讀取這個地址。
2、TXSHF和WUT載入後,向SCITXBUF和TXWAKE寫入值(由於TXSHF和WUT是雙緩衝的,它們能被立即寫入)。
3、TXWAKE位保持0,傳送塊中無地址的數據幀。
一般情況下,地址位格式套用於11個或更少位元組的數據幀傳輸。這種格式在所有傳送的數據位元組中增加了一位(1代表地址幀,0代表數據幀);通常12個或更多位元組的數據幀傳輸使用空閒線格式。
(1)地址位元組
傳送節點(Talker)傳送信息的第一個位元組是一個地址位元組,所有接收節點(Listener)都讀取該地址位元組。只有接收數據的地址位元組同接收節點的地址位元組相符時,才能中斷接收節點。如果接收節點的地址和接收數據的地址不符,接收節點將不會被中斷,等待接收下一個地址位元組。
(2)Sleep位
連線到串列匯流排上的所有處理器都將SCI SLEEP位置1(SCICTL1的第二位),這樣只有檢測到地址位元組後才會被中斷。當處理器讀到的數據塊地址與用戶套用軟體設定的處理器地址相符時,用戶程式必須清除SLEEP位,使SCI能夠在接收到每個數據位元組時產生一個中斷。
儘管當SLEEP位置1時接收器仍然工作,但它並不能將RXRDY、RXINT或任何接收器錯誤狀態位置1,只有在檢測到地址位且接收的幀地址位是1時才能將這些位置1。SCI本身並不能改變SLEEP位,必須由用戶軟體改變。
(3)識別地址位
處理器根據所使用的多處理器模式(空閒線模式或地址位模式),採用不同的方式識別地址位元組,例如:
●空閒線模式在地址位元組前預留一個靜態空間,該模式沒有額外的地址/數據位。它在處理包含lO個以上位元組的數據塊傳輸方面比地址位模式效率高。空閒線模式一般用於非 多處理器的SCI通信。
●地址位模式在每個位元組中加入一個附加位(也就是地址位)。由於這種模式數據塊之間不需要等待,因此在處理小塊數據時比空閒線模式效率更高。
(4)控制SCI TX和RX的特性
用戶可以使用軟仵通過ADDR/IDLE MODE位(SCICCR,位3)選擇多處理器模式,兩種模式都使用TXWAKE(SCICTL1,位3)、RXWAKE(SCIRXST,位1)和SLEEP標誌位(SCICTL1,位2)控制SCI的傳送器和接收器的特性。
(5)接收步驟
在兩種多處理器模式中,接收步驟如下:
①在接收地址塊時,SCI連線埠喚醒並申請中斷(必須使能SCICTL2的RX/BK INT ENA位申請中斷),讀取地址塊的第一幀,該幀包含目的處理器的地址。
②通過中斷檢查接收的地址啟動軟體例程,然後比較記憶體中存放的器件地址和接收到數據的地址位元組。
③如果上述地址相吻合表明地址塊與DSP的地址相符,則CPU清除SLEEP位並讀取塊中剩餘的數據;否則,退出軟體子程式並保持SLEEP置位,直到下一個地址塊的開始才接收中斷。