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