專利名稱:一種外圍設(shè)備接口高層協(xié)議控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于串行通信總線外部設(shè)備接口的外圍設(shè)備接口高層協(xié)議控制方法。
背景技術(shù):
串行通信是主設(shè)備和外部設(shè)備之間非常重要的數(shù)據(jù)通信方式。與并行通信總線相比,只需要較少的數(shù)據(jù)線。串行外圍設(shè)備接口(Serial PeripheralInterface,SPI)是摩托羅拉(Motorola)公司提出的一種同步串行總線,用于主設(shè)備和外圍設(shè)備之間的數(shù)據(jù)交換。SPI總線是主從通信機(jī)制,主機(jī)是主設(shè)備,外圍設(shè)備是從設(shè)備。SPI總線由4根總線構(gòu)成,分別是串行時鐘線(SCK)、主設(shè)備輸入/從設(shè)備輸出數(shù)據(jù)線(MISO)、主設(shè)備輸出/從設(shè)備輸入數(shù)據(jù)線(MOSI)和從設(shè)備有效選擇線(SSN)。而SPI接口是一種簡單的8比特數(shù)據(jù)同步串行接口,該接口用于快速串行數(shù)據(jù)傳輸,發(fā)送數(shù)據(jù)和接收數(shù)據(jù)以相同的時鐘頻率進(jìn)行,當(dāng)相互獨(dú)立,從而使得全雙工通信成為可能。與其它總線協(xié)議相比,SPI總線協(xié)議簡單、信號線少、傳輸速率高和全雙工通信等優(yōu)點(diǎn)。但SPI總線是無尋址功能的物理層協(xié)議,只能在主設(shè)備和從設(shè)備之間進(jìn)行點(diǎn)到點(diǎn)比特流傳輸,而這對于有尋址要求的數(shù)據(jù)傳輸則顯然是不能滿足的。
目前,一些EEPROM生產(chǎn)廠提出了部分基于SPI總線的高層協(xié)議。這種高層協(xié)議的幀依次由命令、地址和數(shù)據(jù)構(gòu)成,SSN高電平到低電平時為一個幀的開始。這種高層協(xié)議的缺點(diǎn)是不支持全雙工傳輸。
發(fā)明內(nèi)容
本發(fā)明的目的是針對現(xiàn)有技術(shù)的不足,提供一種可實(shí)現(xiàn)串行通信總線外部設(shè)備接口的全雙工和半雙工傳輸,并可提供地址數(shù)據(jù),實(shí)現(xiàn)物理尋址功能的外圍設(shè)備接口高層協(xié)議控制方法。
為了解決上述技術(shù)問題,本發(fā)明所采取的技術(shù)方案是一種外圍設(shè)備接口高層協(xié)議控制方法,其控制流程為首先,接收由幀頭和凈荷所構(gòu)成的高層協(xié)議幀數(shù)據(jù);其次,進(jìn)行幀頭處理流程,以根據(jù)幀頭的數(shù)據(jù),獲取從設(shè)備端口地址、凈荷長度、本子幀頭屬性參數(shù)值,從而輸出從設(shè)備端口地址為讀地址或?qū)懙刂?,并獲得總幀長數(shù)據(jù)、讀幀長數(shù)據(jù)以及寫幀長數(shù)據(jù);最后,進(jìn)行凈荷處理流程,以進(jìn)行讀/寫凈荷數(shù)據(jù),完成主、從設(shè)備之間的全雙工或半雙工通信方式的數(shù)據(jù)通信。
其中,所述幀頭處理流程具體可以為1)獲取子幀頭中的從設(shè)備地址數(shù)據(jù);2)獲取子幀頭中的凈荷長度高8位有效標(biāo)志位數(shù)據(jù);3)獲取子幀頭中的子幀頭屬性參數(shù)值,從而判斷該子幀頭為讀子幀頭還是寫子幀頭;4)如果該子幀頭為讀子幀頭,則進(jìn)行讀操作,即輸出讀地址、讀使能信號,并獲得讀幀長數(shù)據(jù);5)如果該子幀頭為寫子幀頭,則進(jìn)行寫操作,即輸出寫地址并獲得寫幀長數(shù)據(jù);6)獲取子幀頭中的最后一個子幀頭的標(biāo)志位,判斷該子幀頭是否為最后一個子幀頭;如果是最后一個子幀頭,則根據(jù)讀幀長數(shù)據(jù)和寫幀長數(shù)據(jù)獲得總幀長數(shù)據(jù);如果不是最后一個子幀頭,則返回步驟1)。
所述凈荷處理流程具體可以為首先判斷是否有讀數(shù)據(jù)和寫數(shù)據(jù),如果有讀數(shù)據(jù),則進(jìn)行采用預(yù)取技術(shù)的讀凈荷數(shù)據(jù)操作;如果有寫數(shù)據(jù),則進(jìn)行寫凈荷數(shù)據(jù)操作;最后在讀數(shù)據(jù)或?qū)憯?shù)據(jù)操作完成后,判斷是否是總幀長的最后一個字節(jié),直到獲得最后一個字節(jié)后,整個凈荷處理流程完成。
在上述技術(shù)方案中,本發(fā)明可以通過幀頭處理流程,提供地址數(shù)據(jù)信號,實(shí)現(xiàn)物理尋址功能,并且可以通過凈荷處理流程,實(shí)現(xiàn)主、從設(shè)備之間的全雙工或半雙工通信方式的數(shù)據(jù)通信。從而解決了現(xiàn)有技術(shù)中SPI協(xié)議和一些高層協(xié)議所存在的缺陷,從而可以滿足各種設(shè)備數(shù)據(jù)傳輸?shù)男枰?。另外,本方法的讀操作采用預(yù)取技術(shù),實(shí)現(xiàn)了連續(xù)讀功能,從而提高了讀數(shù)據(jù)的效率。相對現(xiàn)有技術(shù),本方法具有流程簡單、通用性好、數(shù)據(jù)處理效率高等特點(diǎn)。
附圖1為本發(fā)明中所涉及的高層協(xié)議幀的幀結(jié)構(gòu)圖;附圖2為高層協(xié)議幀的幀頭結(jié)構(gòu)圖;附圖3為高層協(xié)議幀的子幀頭的結(jié)構(gòu)圖;附圖4為本發(fā)明中所涉及的串行通信總線外部設(shè)備接口的結(jié)構(gòu)原理方框圖;附圖5為本發(fā)明一種外圍設(shè)備接口高層協(xié)議控制方法的流程圖;附圖6為本發(fā)明的幀頭處理的流程圖;附圖7為本發(fā)明的凈荷處理的流程圖;附圖8為本發(fā)明的一種較佳實(shí)施例的幀頭處理的流程圖;附圖9為本發(fā)明的一種較佳實(shí)施例的凈荷處理的流程圖。
具體實(shí)施例方式
為了更加清楚的解釋本發(fā)明的技術(shù)方案,首先將詳細(xì)給出本發(fā)明所涉及的高層協(xié)議幀結(jié)構(gòu)及串行通信總線外部設(shè)備接口的結(jié)構(gòu)原理。
所述的高層協(xié)議是一種主從式全雙工或半雙工通信協(xié)議,所有的傳輸均由主機(jī)發(fā)起,主機(jī)可同時發(fā)送和接收數(shù)據(jù)。支持SPI中斷傳輸,在整個幀的傳輸過程中不要求SSN一直保持低電平。幀頭長度可變,在傳輸少量數(shù)據(jù)時采用短幀頭,提高傳輸效率。
高層協(xié)議幀由幀頭和凈荷兩部分構(gòu)成,如圖1所示。由于其承載數(shù)據(jù)量可變業(yè)務(wù),為了提高傳輸效率,采用長度可變的幀結(jié)構(gòu)。在本高層協(xié)議中,幀頭和凈荷均為可變長度,且由幀頭部定義。
幀頭結(jié)構(gòu)如圖2所示,由一個或多個子幀頭構(gòu)成。幀頭總是從主設(shè)備發(fā)送到從設(shè)備。
子幀頭結(jié)構(gòu)如圖3所示。其中AD是從設(shè)備端口地址。
PHF是凈荷長度高8位為有效標(biāo)志。當(dāng)該位是1時,表示凈荷長度高8位有效,等于PH,子幀頭長度為3個字節(jié);當(dāng)該位是0時,表示凈荷長度高8位為0,子幀頭長度是2個字節(jié)。
RW用于定義本子幀頭的屬性。在本高層協(xié)議中,有兩種子幀頭,寫子幀頭和讀子幀頭。寫子幀頭用于定義從主設(shè)備發(fā)送數(shù)據(jù)到從設(shè)備的傳輸格式,讀子幀頭用于定義從從設(shè)備發(fā)送數(shù)據(jù)到主設(shè)備的傳輸格式。當(dāng)該位為1時,表示該子幀頭為寫子幀頭;當(dāng)該位為0時,該子幀頭為讀子幀頭。
PL用于表示凈荷長度的低4位。
LSHF是最后一個子幀頭標(biāo)志位。當(dāng)該位為1時,表示本子幀頭是最后一個子幀頭;當(dāng)該位為0時,表示本子幀頭不是最后一個子幀頭。
PH用于表示凈荷長度的高8位。該8位是可選的,且由PHF確定。
Res.是保留位。
凈荷就是被傳輸?shù)臄?shù)據(jù),其長度是可變化。凈荷長度由對應(yīng)的子幀頭定義,寫子幀頭定義的凈荷長度就是從主設(shè)備發(fā)送到從設(shè)備的數(shù)據(jù)的字節(jié)數(shù),讀子幀頭定義的凈荷長度就是從從設(shè)備發(fā)送到主設(shè)備的數(shù)據(jù)的字節(jié)數(shù)。凈荷長度的變化范圍是從1到4093個字節(jié),當(dāng)凈荷長度不大于15個字節(jié),子幀頭的PHF位為0,凈荷長度等于PL,當(dāng)凈荷長度大于15個字節(jié)時,凈荷長度等于PH×16+PL。
本高層協(xié)議采用從設(shè)備自同步和主設(shè)備強(qiáng)迫同步的聯(lián)合同步方案。
從設(shè)備自同步就是從設(shè)備自動同步每一幀,其方法是當(dāng)從設(shè)備接受到上一幀的最后一個字節(jié)后,自動轉(zhuǎn)入下一幀的開始。這種同步方案優(yōu)點(diǎn)就是同步電路簡單,無需主設(shè)備參與;缺點(diǎn)是可靠性差,失步之后不能自動恢復(fù)。
主設(shè)備強(qiáng)迫同步就是主設(shè)備發(fā)送同步信號,其方法是主設(shè)備發(fā)利用信號FEN向從設(shè)備發(fā)送強(qiáng)迫同步信號。這種同步方案的優(yōu)點(diǎn)失是可靠性高;缺點(diǎn)是需主設(shè)備參與,增加主設(shè)備負(fù)擔(dān)。
為了發(fā)揮這兩種同步方案的優(yōu)點(diǎn),克服其缺點(diǎn),我們采用聯(lián)合同步方案。聯(lián)合同步方案就是主機(jī)每隔若干幀發(fā)出一強(qiáng)迫同步信號,強(qiáng)迫從設(shè)備同步。在主機(jī)不發(fā)送強(qiáng)迫同步信號時,從設(shè)備自動同步。
本發(fā)明所涉及的串行通信總線外部設(shè)備接口的基本設(shè)計思路就是將采用SPI協(xié)議作為底層協(xié)議,有機(jī)結(jié)合所述的高層協(xié)議,從而獲得一種最優(yōu)結(jié)構(gòu)的串行通信總線外部設(shè)備接口。因此,本發(fā)明所涉及的串行通信總線外部設(shè)備接口的結(jié)構(gòu)如圖4所示它由時鐘產(chǎn)生模塊、比特計數(shù)器、字節(jié)計數(shù)器、地址鎖存模塊、寫控制模塊、讀控制模塊、寫緩沖區(qū)和讀緩存區(qū)構(gòu)成。從協(xié)議分層的上看,時鐘產(chǎn)生模塊用于實(shí)現(xiàn)物理層協(xié)議功能,讀、寫緩沖區(qū)去是物理層協(xié)議和高層協(xié)議的接口,其它模塊用于實(shí)現(xiàn)高層協(xié)議的功能。它的與主機(jī)進(jìn)行通信的信號是串行時鐘信號SCK、主設(shè)備輸入/從設(shè)備輸出數(shù)據(jù)信號MISO、主設(shè)備輸出/從設(shè)備輸入數(shù)據(jù)信號MOSI、從設(shè)備有效選擇信號SSN和強(qiáng)迫同步信號FEN。模式選擇信號MSEL在數(shù)據(jù)傳輸中必須保持不變。與外部設(shè)備其它模塊進(jìn)行通信的信號是寫數(shù)據(jù)信號WDATA、寫地址信號WADDR、寫使能信號WRN、讀數(shù)據(jù)信號RDATA、讀地址信號RADDR和讀使能信號RDN。
所述時鐘產(chǎn)生模塊的主要功能是根據(jù)SCK信號和MSEL信號產(chǎn)生時鐘信號spi_clk及其反相信號spi_clkn。當(dāng)SPI模式為0和3時,時鐘信號spi_clk和SPI串行時鐘SCK同相,當(dāng)SPI模式為1和2時,時鐘信號spi_clk和SPI串行時鐘SCK是反相。spi_clkn始終與時鐘信號spi_clk反相。在spi_clk的上升沿寫緩沖區(qū)采集MOSI上的數(shù)據(jù),在spi_clkn的上升沿讀緩沖區(qū)發(fā)送數(shù)據(jù)到主設(shè)備輸入/從設(shè)備輸出數(shù)據(jù)線MISO上。
所述比特計數(shù)器的主要功能是記錄在當(dāng)前SPI總線上傳輸?shù)臄?shù)據(jù)是某一字節(jié)的第幾比特,并輸出比特數(shù)bit_count。該計數(shù)器是模8計數(shù)器,spi_clk是其時鐘信號。當(dāng)從設(shè)備有效選擇信號SSN或強(qiáng)迫同步信號FEN為高電平時,該計數(shù)器清零。
所述字節(jié)計數(shù)器采用以幀長為模的計數(shù)器,用于根據(jù)強(qiáng)迫同步信號FEN、時鐘信號spi_clk、幀長鎖存模塊輸出的總幀長信號TFL以及比特計數(shù)器輸出的比特數(shù)bit_count,記錄當(dāng)前SPI總線上傳輸?shù)臄?shù)據(jù)屬于高層幀中哪一個字節(jié),并輸出字節(jié)數(shù)byte_count。當(dāng)bit_count等于7時計數(shù)器加1。當(dāng)FEN為高電平時,字節(jié)計數(shù)器清零,實(shí)現(xiàn)了強(qiáng)迫同步方案。字節(jié)計數(shù)器以幀長為模進(jìn)行計數(shù),也就實(shí)現(xiàn)了自動同步功能。
所述幀長鎖存模塊輸入時鐘信號spi_clk、比特數(shù)bit_count以及字節(jié)數(shù)byte_count,其內(nèi)部設(shè)置有幀長暫存器、讀幀長寄存器和寫幀長寄存器,主要功能是根據(jù)幀頭的內(nèi)容來計算總幀長TFL、讀幀長RFL和寫幀長WFL。讀幀長就是讀操作幀的長度,其值等于幀頭長度加讀操作凈荷的長度。寫幀長就是寫操作幀的長度,其值等于幀頭長度加寫操作凈荷的長度??値L決定于讀幀長和寫幀長。當(dāng)讀幀長不大于寫幀長時,總幀長等于寫幀長加1;當(dāng)讀幀長小余寫幀長時,總幀長等于讀幀長。
所述地址鎖存模塊輸入時鐘信號spi_clk、比特數(shù)bit_count、字節(jié)數(shù)byte_count,其內(nèi)部包括地址暫存器、寫地址寄存器和讀地址暫存器,其主要功能是鎖存讀地址或?qū)懙刂贰J紫葘⒆訋^的第1個字節(jié)鎖存到地址暫存器,然后判斷當(dāng)前子幀頭的屬性。如果是寫子幀頭時,將地址暫存器的內(nèi)容覆蓋寫地址寄存器的內(nèi)容,并產(chǎn)生寫地址信號WADDR;如果是讀子幀頭時,將地址暫存器的內(nèi)容覆蓋讀地址寄存器的內(nèi)容,并產(chǎn)生讀地址信號RADDR。
所述寫控制模塊輸入時鐘信號spi_clk,并用于根據(jù)輸入的寫總幀長信號產(chǎn)生寫使能信號WRN。在寫操作時,當(dāng)寫緩沖區(qū)接收完一個字節(jié)的數(shù)據(jù)時,寫信號WRN立即產(chǎn)生一個寫有效信號。
所述讀控制模塊輸入時鐘信號spi_clk和spi_clkn,并用于根據(jù)輸入的讀總幀長信號預(yù)先產(chǎn)生讀使能信號RDN。在讀操作時,要預(yù)先給出有效信號,從RADDR指定的端口中讀出數(shù)據(jù)。
所述寫緩沖區(qū)用于按比特串行接收主設(shè)備輸出/從設(shè)備輸入數(shù)據(jù)信號線MOSI上的數(shù)據(jù),然后以8位的寫數(shù)據(jù)線WDATA并行輸出;為了減少延遲,采用雙緩沖區(qū)結(jié)構(gòu)。
所述讀緩沖區(qū)用于從8位的并行讀數(shù)據(jù)信號線RDATA讀入一個字節(jié),然后串行輸出。為了支持連續(xù)的讀操作,采用預(yù)取技術(shù),即預(yù)先將數(shù)據(jù)讀入到緩沖區(qū)。
基于上述高層協(xié)議幀的結(jié)構(gòu)以及串行通信總線外部設(shè)備接口的結(jié)構(gòu),本發(fā)明提供了一種外圍設(shè)備接口高層協(xié)議控制方法,如圖5所示,其控制流程為首先,接收由幀頭和凈荷所構(gòu)成的高層協(xié)議幀數(shù)據(jù);其次,進(jìn)行幀頭處理流程,以根據(jù)幀頭的數(shù)據(jù),獲取從設(shè)備端口地址、凈荷長度、本子幀頭屬性參數(shù)值,從而輸出從設(shè)備端口地址為讀地址或?qū)懙刂?,并獲得總幀長數(shù)據(jù)、讀幀長數(shù)據(jù)以及寫幀長數(shù)據(jù);最后,進(jìn)行凈荷處理流程,以進(jìn)行讀/寫凈荷數(shù)據(jù),完成主、從設(shè)備之間的全雙工或半雙工通信方式的數(shù)據(jù)通信。
參考圖6,所述幀頭處理流程具體為1)獲取子幀頭中的從設(shè)備地址數(shù)據(jù);2)獲取子幀頭中的凈荷長度高8位有效標(biāo)志位數(shù)據(jù);3)獲取子幀頭中的子幀頭屬性參數(shù)值,從而判斷該子幀頭為讀子幀頭還是寫子幀頭;4)如果該子幀頭為讀子幀頭,則進(jìn)行讀操作,即輸出讀地址、讀使能信號,并獲得讀幀長數(shù)據(jù);5)如果該子幀頭為寫子幀頭,則進(jìn)行寫操作,即輸出寫地址并獲得寫幀長數(shù)據(jù);
6)獲取子幀頭中的最后一個子幀頭的標(biāo)志位,判斷該子幀頭是否為最后一個子幀頭;7)如果是最后一個子幀頭,則根據(jù)讀幀長數(shù)據(jù)和寫幀長數(shù)據(jù)獲得總幀長數(shù)據(jù);如果不是最后一個子幀頭,則返回步驟1)。
參考附圖7,所述凈荷處理流程具體為首先判斷是否有讀數(shù)據(jù)和寫數(shù)據(jù),如果有讀數(shù)據(jù),則進(jìn)行采用預(yù)取技術(shù)的讀凈荷數(shù)據(jù)操作;如果有寫數(shù)據(jù),則進(jìn)行寫凈荷數(shù)據(jù)操作;最后在讀數(shù)據(jù)或?qū)憯?shù)據(jù)操作完成后,判斷是否是總幀長的最后一個字節(jié),直到獲得最后一個字節(jié)后,整個凈荷處理流程完成。
下面將結(jié)合說明書附圖及本發(fā)明的一種較佳實(shí)施例對本發(fā)明作進(jìn)一步詳細(xì)說明。
參考附圖8,本實(shí)施例的幀頭處理流程具體為S101為步驟1),即外圍接口設(shè)備接收子幀頭的第1個字節(jié)數(shù)據(jù),并將其鎖存到串行通信總線外部設(shè)備接口的地址暫存器。任何一幀第1個字節(jié)也是第1個子幀頭的第1個字節(jié)。
S102為所述步驟2),即采用串行通信總線外部設(shè)備接口接收子幀頭的第2個字節(jié)的第7位,即凈荷長度高8位有效標(biāo)志位(PHF),若該位等于1,則將串行通信總線外部設(shè)備接口的幀長暫存器設(shè)為16;若該位為0,則將幀長暫存器設(shè)為0。
S103、S104為所述步驟3),即接收子幀頭第2字節(jié)的第6位,即子幀頭屬性位(RW),若該位等于1,則表示該子幀頭是寫子幀頭,若該位等于0,則表示該子幀頭是讀子幀頭。
步驟5)為S1051是用地址暫存器的內(nèi)容覆蓋寫地址寄存器,并輸出到寫地址輸出信號線WADDR,并將幀長暫存器的內(nèi)容覆蓋到寫幀長寄存器。S1061是接收子幀頭第2字節(jié)第5位到第2位,即凈荷的低4位PL,并將其覆蓋寫幀長寄存器的低4位。S1071接收子幀頭第2個字節(jié)第1位,即最后一個子幀頭標(biāo)志位LSHF。S1081判斷PHF是否等于1。若等于1,表示本子幀頭長度為3個字節(jié),還需要接收1個字節(jié);若等于0,表示本子幀頭只有2個字節(jié),本子幀頭處理結(jié)束。S1091接收子幀頭的第3個字節(jié),并將該8為覆蓋寫幀長寄存器高8位。
步驟4)為S1052是用地址暫存器的內(nèi)容覆蓋讀地址寄存器,并輸出到讀地址輸出信號線RADDR,并將幀長暫存器的內(nèi)容覆蓋到讀幀長寄存器,同時給出讀有效信號。S1062是接收子幀頭第2字節(jié)第5位到第2位,即凈荷的低4位PL,并將其覆蓋讀幀長寄存器的低4位。S1072接收子幀頭第2個字節(jié)第1位,即最后一個子幀頭標(biāo)志位LSHF。S1082判斷PHF是否等于1。若等于1,表示本子幀頭長度為3個字節(jié),還需要接收1個字節(jié);若等于0,表示本子幀頭只有2個字節(jié),本子幀頭處理結(jié)束。S1092接收子幀頭的第3個字節(jié),并用該8位覆蓋讀幀長寄存器高8位。
步驟6)、7)分別為S110判斷本子幀頭是否是最后一個子幀頭。若是,則一步跳到S101;若不是,則下一步跳到S111。S111是比較讀寫幀長的大小,若讀幀長大于寫幀長,則下一步跳到S121;若讀幀長不大于寫幀長,則下一步跳到S122。S121是將讀幀長的值賦給總幀長。S122是將寫幀長的值加1賦給總幀長。
圖9是本較佳實(shí)施例的凈荷處理過程流程圖。其中S2011判斷是否有讀數(shù)據(jù),若是則下一步跳到S2021。若不是則下一步跳到S206。S2021判斷當(dāng)前的讀數(shù)據(jù)是否是讀凈荷的最后1個字節(jié),若是則下一步跳到S2031,若不是則下一步直接到S2041。S2031是給出讀有效信號,預(yù)取讀數(shù)據(jù)的下一個字節(jié)。S2041是將讀緩存區(qū)的數(shù)據(jù)以串行的方式發(fā)送MISO信號線上。S2051判斷讀操作是否結(jié)束,若結(jié)束則下一步跳到S206;如沒有結(jié)束則跳到S2012。
S2012判斷是否有寫數(shù)據(jù),若是則下一步跳到S2022。若不是則下一步跳到S206。S2022是寫緩沖區(qū)從從MOSI接收一個字節(jié)的數(shù)據(jù)。S2032是給出寫有效信號。S2042判斷當(dāng)前的寫數(shù)據(jù)是否是寫凈荷的最后一個字節(jié),若是則下一步跳到S206,如不是則跳到S2021。
S206判斷當(dāng)前是否是總幀長的最后一個字節(jié),若是結(jié)束本幀傳輸,如不是跳到S207。S207是空閑狀態(tài),延遲1個字節(jié)的后下一步無條件跳到S206。
權(quán)利要求
1.一種外圍設(shè)備接口高層協(xié)議控制方法,其控制流程為首先,接收由幀頭和凈荷所構(gòu)成的高層協(xié)議幀數(shù)據(jù);其次,進(jìn)行幀頭處理流程,以根據(jù)幀頭的數(shù)據(jù),獲取從設(shè)備端口地址、凈荷長度、本子幀頭屬性參數(shù)值,從而輸出從設(shè)備端口地址為讀地址或?qū)懙刂?,并獲得總幀長數(shù)據(jù)、讀幀長數(shù)據(jù)以及寫幀長數(shù)據(jù);最后,進(jìn)行凈荷處理流程,以進(jìn)行讀/寫凈荷數(shù)據(jù),完成主、從設(shè)備之間的全雙工或半雙工通信方式的數(shù)據(jù)通信。
2.如權(quán)利要求1所述外圍設(shè)備接口高層協(xié)議控制方法,其特征在于所述幀頭處理流程具體為1)獲取子幀頭中的從設(shè)備地址數(shù)據(jù);2)獲取子幀頭中的凈荷長度高8位有效標(biāo)志位數(shù)據(jù);3)獲取子幀頭中的子幀頭屬性參數(shù)值,從而判斷該子幀頭為讀子幀頭還是寫子幀頭;4)如果該子幀頭為讀子幀頭,則進(jìn)行讀操作,即輸出讀地址、讀使能信號,并獲得讀幀長數(shù)據(jù);5)如果該子幀頭為寫子幀頭,則進(jìn)行寫操作,即輸出寫地址并獲得寫幀長數(shù)據(jù);6)獲取子幀頭中的最后一個子幀頭的標(biāo)志位,判斷該子幀頭是否為最后一個子幀頭;7)如果是最后一個子幀頭,則根據(jù)讀幀長數(shù)據(jù)和寫幀長數(shù)據(jù)獲得總幀長數(shù)據(jù);如果不是最后一個子幀頭,則返回步驟1)。
3.如權(quán)利要求2所述外圍設(shè)備接口高層協(xié)議控制方法,其特征在于所述步驟1)具體為采用串行通信總線外部設(shè)備接口接收子幀頭的第1個字節(jié)數(shù)據(jù),并將其鎖存到串行通信總線外部設(shè)備接口的地址暫存器。
4.如權(quán)利要求2或3所述外圍設(shè)備接口高層協(xié)議控制方法,其特征在于所述步驟2)具體為采用串行通信總線外部設(shè)備接口接收子幀頭的第2個字節(jié)的第7位,即凈荷長度高8位有效標(biāo)志位(PHF),若該位等于1,則將串行通信總線外部設(shè)備接口的幀長暫存器設(shè)為16;若該位為0,則將幀長暫存器設(shè)為0。
5.如權(quán)利要求4所述外圍設(shè)備接口高層協(xié)議控制方法,其特征在于所述步驟3)具體為接收子幀頭第2字節(jié)的第6位,即子幀頭屬性位(RW),若該位等于1,則表示該子幀頭是寫子幀頭,若該位等于0,則表示該子幀頭是讀子幀頭。
6.如權(quán)利要求5所述外圍設(shè)備接口高層協(xié)議控制方法,其特征在于所述步驟4)具體為當(dāng)該子幀頭為讀子幀頭,則S1052)將所述串行通信總線外部設(shè)備接口的地址暫存器的內(nèi)容覆蓋其讀地址寄存器,并輸出到讀地址輸出信號線(RADDR),并將所述幀長暫存器的內(nèi)容覆蓋到讀幀長寄存器,同時給出讀有效信號(RDN);S1062)獲取子幀頭第2字節(jié)第5位到第2位,即凈荷的低4位(PL),并將其覆蓋所述串行通信總線外部設(shè)備接口的讀幀長寄存器的低4位;S1072)獲取子幀頭第2個字節(jié)第1位,即最后一個子幀頭標(biāo)志位(LSHF);S1082)判斷凈荷長度高8位有效標(biāo)志位(PHF)是否等于1。若等于1,表示本子幀頭長度為3個字節(jié),還需要接收1個字節(jié),進(jìn)入S1092);若等于0,表示本子幀頭只有2個字節(jié),本子幀頭處理結(jié)束;S1092)接收子幀頭的第3個字節(jié),并用該8位覆蓋讀幀長寄存器高8位。
7.如權(quán)利要求6所述外圍設(shè)備接口高層協(xié)議控制方法,其特征在于所述步驟5)具體為當(dāng)該子幀頭為寫子幀頭,則S1051)、將所述串行通信總線外部設(shè)備接口的地址暫存器的內(nèi)容覆蓋寫地址寄存器,并輸出到寫地址輸出信號線(WADDR),并將幀長暫存器的內(nèi)容覆蓋到寫幀長寄存器;S1061)、獲取子幀頭第2字節(jié)第5位到第2位,即凈荷的低4位(PL),并將其覆蓋寫幀長寄存器的低4位;S1071)、獲取子幀頭第2個字節(jié)第1位,即最后一個子幀頭標(biāo)志位(LSHF);S1081)、判斷凈荷長度高8位有效標(biāo)志位(PHF)是否等于1。若等于1,表示本子幀頭長度為3個字節(jié),還需要接收1個字節(jié),則進(jìn)入S1091);若等于0,表示本子幀頭只有2個字節(jié),本子幀頭處理結(jié)束;S1091)接收子幀頭的第3個字節(jié),并將該8為覆蓋寫幀長寄存器高8位;
8.如權(quán)利要求7所述外圍設(shè)備接口高層協(xié)議控制方法,其特征在于所述步驟7)具體為首先,比較讀寫幀長的大小,若讀幀長大于寫幀長,則將讀幀長的值賦給總幀長;若讀幀長不大于寫幀長,則將寫幀長的值加1賦給總幀長。
9.如權(quán)利要求1或2所述外圍設(shè)備接口高層協(xié)議控制方法,其特征在于所述凈荷處理流程具體為首先判斷是否有讀數(shù)據(jù)和寫數(shù)據(jù),如果有讀數(shù)據(jù),則進(jìn)行采用預(yù)取技術(shù)的讀凈荷數(shù)據(jù)操作;如果有寫數(shù)據(jù),則進(jìn)行寫凈荷數(shù)據(jù)操作;最后在讀數(shù)據(jù)或?qū)憯?shù)據(jù)操作完成后,判斷是否是總幀長的最后一個字節(jié),直到獲得最后一個字節(jié)后,整個凈荷處理流程完成。
10.如權(quán)利要求9所述外圍設(shè)備接口高層協(xié)議控制方法,其特征在于所述采用預(yù)取技術(shù)的讀凈荷數(shù)據(jù)操作具體為S2021)判斷當(dāng)前的讀數(shù)據(jù)是否是讀凈荷的最后1個字節(jié)。若是則下一步跳到S2031),若不是則下一步直接到S2041);S2031)給出讀有效信號,預(yù)取讀數(shù)據(jù)的下一個字節(jié);S2041)將讀緩存區(qū)的數(shù)據(jù)以串行的方式發(fā)送主設(shè)備輸入/從設(shè)備輸出數(shù)據(jù)線(MISO)上;S2051)判斷讀操作是否結(jié)束,如沒有結(jié)束則跳到S2021)。
11.如權(quán)利要求9所述外圍設(shè)備接口高層協(xié)議控制方法,其特征在于所述寫凈荷數(shù)據(jù)操作具體為S2022)寫緩沖區(qū)從主設(shè)備輸出/從設(shè)備輸入數(shù)據(jù)線(MOSI)接收一個字節(jié)的數(shù)據(jù);S2032)給出寫有效信號;S2042)判斷當(dāng)前的寫數(shù)據(jù)是否是寫凈荷的最后一個字節(jié),如不是則跳到S2022)。
全文摘要
本發(fā)明提供了一種外圍設(shè)備接口高層協(xié)議控制方法,其控制流程為首先,接收由幀頭和凈荷所構(gòu)成的高層協(xié)議幀數(shù)據(jù);其次,進(jìn)行幀頭處理流程,以根據(jù)幀頭的數(shù)據(jù),獲取從設(shè)備端口地址、凈荷長度、本子幀頭屬性參數(shù)值,從而輸出從設(shè)備端口地址為讀地址或?qū)懙刂?,并獲得總幀長數(shù)據(jù)、讀幀長數(shù)據(jù)以及寫幀長數(shù)據(jù);最后,進(jìn)行凈荷處理流程,以進(jìn)行讀/寫凈荷數(shù)據(jù),完成主、從設(shè)備之間的全雙工或半雙工通信方式的數(shù)據(jù)通信。由于本發(fā)明可以滿足各種設(shè)備數(shù)據(jù)傳輸?shù)娜?半雙工通訊、物理尋址等需要,且所采用的讀操作預(yù)取技術(shù),實(shí)現(xiàn)了連續(xù)讀功能,從而提高了讀數(shù)據(jù)的效率。因此相對現(xiàn)有技術(shù),本發(fā)明具有流程簡單、通用性好、數(shù)據(jù)處理效率高等特點(diǎn)。
文檔編號G06F13/42GK1749982SQ200410074439
公開日2006年3月22日 申請日期2004年9月15日 優(yōu)先權(quán)日2004年9月15日
發(fā)明者王軍, 金傳恩, 董欣 申請人:北京中星微電子有限公司