在空閑線多處理器協議中(addr/idle mode位為0),數據塊被各數據塊間的空閑時間分開,該空閑時間比塊中數據幀之間的空閑時間要長。一幀后的空閑時間(1o個或更多個高電平位)表明新塊的開始,每位的時間可直接由波特率的值(bit/s)計算,空閑線多處理器通信格式如圖1所示。
圖1 空閑線多處理器通信格式 (1)空閑線模式操作步驟 ?、俳邮盏綁K起始信號后,sci被喚醒?! 、谔幚砥髯R別下一個sci中斷。 ?、壑袛喾兆映绦驅⒔邮盏降牡刂放c接收節(jié)點的地址進行比較。 ?、苋绻鹀pu的地址與接收到的地址相符,則中斷服務子程序清除sleep位,并接收塊中剩余的數據?! 、萑绻鹀pu的地址與接收到的地址不符,則sleep位仍保持在置位狀態(tài),直到檢測到下一個數據塊的開始,否則cpu都不會被sci端口中斷,繼續(xù)執(zhí)行主程序?! 。?)塊起始信號 有兩種方法發(fā)送塊的開始信號?! 》椒?:特意在前后兩個數據塊之間增加lo位或更多位的空閑時間?! 》椒?:在寫scitxbuf寄存器之前,sci口首先將txwake位(scictl1,位3)置1。這樣就會自動發(fā)送11位的空閑時間。在這種模式中,除非必要,否則串行通信線不會空閑。在設置txwake后發(fā)送地址數據前,要向scitxbuf寫入一個無關的數據,以保障能夠發(fā)送空閑時間。 ?。?)喚醒暫時(wut)標志 與txwake位相關的是喚醒暫時(wut)標志位,這是一個內部標志,與txwake構成雙緩沖。當txshf從scitxbuf裝載時,wuf從txwake裝入,txwake清0。如圖2所示。
圖2 雙緩沖的wut和txsiif (4)塊的發(fā)送開始信號 在塊傳送過程中需要采用下列步驟發(fā)送塊開始信號: ?、賹?到txwake位?! 、跒榘l(fā)送一個塊開始信號,寫一個數據字(內容不重要)到scitxbuf寄存器。當塊開始信號被發(fā)送時,寫入的數據字被禁止,且在塊開始信號發(fā)送后被忽略。當txshf(發(fā)送移位寄存器)再次空閑后,scitxbuf寄存器的內容被移位到txshf寄存器,txwake的值被移位到wut中,然后txwake被清除。由于txwake置1,在前一幀發(fā)送完停止位后,起始位、數據位和奇偶校驗位被發(fā)送的11位空閑位取代?! 、蹖懸粋€新的地址值到scitxbuf寄存器?! ≡趥魉烷_始信號時,必須先將一個無關數據寫入scitxbuf寄存器,從而使txwake位的值能被移位到wut中。由于txshf和wut都是雙級緩沖,在無關數據字被移位到tx-shf寄存器后,才能再次將數據寫入scitxbuf。 ?。?)接收器操作 接收器的操作和sleep位無關,然而在檢測到一個地址幀之前,接收器并不對rxrdy位和錯誤狀態(tài)位置位,也不申請接收中斷。
歡迎轉載,信息來源維庫電子市場網()