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