本發(fā)明涉及一種串行總線系統(tǒng),尤其是涉及串行外設(shè)接口spi總線電路系統(tǒng),適用于單片機系統(tǒng)中非中斷設(shè)備總線控制,屬于電子電路技術(shù)領(lǐng)域。
背景技術(shù):
在一般單片機系統(tǒng)中,主處理器需要實現(xiàn)數(shù)據(jù)計算、信號采集、數(shù)據(jù)存儲等功能,但是在多數(shù)系統(tǒng)中,單片機的片內(nèi)資源并不能滿足系統(tǒng)需求,需要進行一定程度的擴展,例如需要連接ram(隨機存取存儲器)、eeprom(帶電可擦可編程只讀存儲器)、flashrom(快速擦寫只讀編程器)、a/d轉(zhuǎn)換器(模數(shù)轉(zhuǎn)換器)、d/a轉(zhuǎn)換器(數(shù)模轉(zhuǎn)換器)等、led/led顯示驅(qū)動器、i/o接口芯片、實時時鐘、uart收發(fā)器等進行擴展。
通常情況下,外部模塊采用總線方式進行模塊擴展,總線分為串行總線和并行總線兩大類,串行總線相對于并行總線來說,數(shù)據(jù)帶寬較低,但是優(yōu)點在于總線線纜數(shù)量較少,易于設(shè)計。目前串行總線系統(tǒng)已經(jīng)被大量應(yīng)用于各種數(shù)據(jù)存儲、數(shù)據(jù)采集和運動控制等領(lǐng)域。
其中,spi(串行外設(shè)接口)總線被廣泛應(yīng)用于板級設(shè)備通訊設(shè)計。目前,各半導(dǎo)體公司推出了大量的帶有spi接口的具有各種功能的芯片,為用戶的外圍擴展提供了極其靈活且經(jīng)濟的選擇。在單片機系統(tǒng)擴展過程中,每個從片的spi接口僅僅需要從主片的i/o接口引出四根線,這四根線分別為時鐘線(clk)、下行數(shù)據(jù)線(mosi)、上行數(shù)據(jù)線(miso)、片選控制線(cs)。其中clk線、mosi線、miso線是公用線,也就是說所有的從片與主片之間通訊的這三根線是一樣的;而cs線則是私用線,也就是說每個從片與主片通訊時都需要單獨配備一根cs線。綜上,采用spi總線系統(tǒng)可以簡化電路設(shè)計,節(jié)省很多常規(guī)電路中的接口器和i/o口線,提高設(shè)計的可靠性。
但是,從上文的描述中也能總結(jié)出標(biāo)準spi總線系統(tǒng)的弊端。由于cs線是私用線,每個從片與主片之間都需要單獨配備一根cs線,這就會使得spi總線系統(tǒng)在擴展時受到主片i/o接口數(shù)量的限制,最終導(dǎo)致主片無法連接更多的從片進行擴展,嚴重限制了系統(tǒng)的發(fā)展性能。
為了解決以上標(biāo)準的spi總線在掛載多個從片時,對于主片的i/o接口的需求量過大,從而導(dǎo)致系統(tǒng)不足的問題,本發(fā)明提出一種新型的spi總線系統(tǒng)及其通訊方法。采用本發(fā)明的新型spi總線系統(tǒng)及通訊方法,可以簡化標(biāo)準spi總線系統(tǒng)的電路設(shè)計,大大減少從片對主片的i/o接口的需求量,同時能夠?qū)崿F(xiàn)無限量從片數(shù)量的動態(tài)擴展。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于解決以上現(xiàn)有技術(shù)上存在的缺陷,即因為主片的i/o端口數(shù)量有限,而導(dǎo)致的標(biāo)準spi系統(tǒng)無法動態(tài)擴展從片的問題。有鑒于此,本發(fā)明提供一種新型的spi總線系統(tǒng)及其通訊方法。
一種新型的spi總線系統(tǒng),其包括:一個主控制器、至少一個節(jié)點選擇邏輯模塊、至少一個從設(shè)備和包含5根線纜的串行總線(時鐘線clk、下行數(shù)據(jù)線mosi、上行數(shù)據(jù)線miso、片選控制線cs、地址選擇線csa)。所述的主控制器通過接口連接在5根線纜的一端,所述的節(jié)點選擇邏輯模塊采用t型方式接入cs線、csa線、clk線、mosi線,所述的從設(shè)備采用t型方式接入clk線、miso線纜,與主控制器相連的mosi線采用菊花鏈拓撲連接方式,mosi線經(jīng)過本級節(jié)點選擇邏輯模塊連接到下一級節(jié)點選擇邏輯模塊和本級從設(shè)備,所述的從設(shè)備通過cs線連接到本級的節(jié)點選擇邏輯模塊,所述的從設(shè)備采用t型方式接入到本級節(jié)點選擇邏輯模塊和下級節(jié)點選擇邏輯模塊之間的miso線纜。
進一步的,所述的主處理器spi模塊中包括時鐘發(fā)生器、8位或16位發(fā)送寄存器、8位或16位移位寄存器、8位或16位接收寄存器、主模式控制器、io口控制器、接口(mosi、miso、clk、cs、csa)。接收寄存器與發(fā)送寄存器連接主處理器內(nèi)部的系統(tǒng)總線,時鐘發(fā)生器連接clk線輸出總線時鐘信號,mosi線連接至移位寄存器位輸出端,miso線連接到移位寄存的位輸入端,cs線連接至主模式控制器,csa線連接至io口控制器。當(dāng)主處理器需要發(fā)送數(shù)據(jù)時,首先將總線上的數(shù)據(jù)復(fù)制到發(fā)送寄存器,發(fā)送寄存器將其中的數(shù)據(jù)復(fù)制到移位寄存器,時鐘發(fā)生器控制移位寄存器將高位的數(shù)據(jù)位移至mosi信號線,同時mosi線上信號輸入到移位寄存器的低位,時鐘發(fā)生器同時將時鐘信號傳遞到clk口上,當(dāng)移位寄存器滿后數(shù)據(jù)復(fù)制到接受寄存器,使主處理器通過系統(tǒng)總線訪問,主模式控制器控制cs管腳的輸出。進一步的,所述的每個節(jié)點選擇邏輯模塊包括觸發(fā)器單元、判決單元、通道選擇單元、接口(mosi、miso、clk、cs)。如上所述的節(jié)點選擇邏輯模塊在mosi線上連接的順序決定了節(jié)點選擇邏輯模塊訪問的地址,離主控制器最近的模塊地址為1,下一級為2,以此類推,第n個節(jié)點選擇邏輯模塊地址為n。
如上所述的觸發(fā)器單元包含兩位發(fā)送寄存器、兩位移位寄存器、兩位接收寄存器,其中兩位移位寄存器中的高位數(shù)據(jù)用于輸出給下一個級別的節(jié)點選擇邏輯模塊的觸發(fā)器單元,低位數(shù)據(jù)用于在同一個時鐘周期向前進位升為高位數(shù)據(jù)。兩位接收寄存器與兩位發(fā)送寄存器連接處理器內(nèi)部的系統(tǒng)總線,clk線連接到移位寄存器移位控制信號,mosi線連接至移位寄存器位輸入端,mosi_out連接到移位寄存器的為輸出端,cs連接至判決單元,與csa經(jīng)過或門接入觸發(fā)器單元復(fù)位信號。
如上所述的通道選擇單元,由兩個與門,一個非門和一個或門組成。其作用通過控制輸入實現(xiàn)對于數(shù)據(jù)輸入1和數(shù)據(jù)輸入2的輸出通道選擇,當(dāng)控制輸入為1時,數(shù)據(jù)輸出腳隨數(shù)據(jù)輸入1腳電平變化而變化,當(dāng)控制輸入為0時,數(shù)據(jù)輸出腳隨數(shù)據(jù)輸入2腳電平變化而變化。
如上所述的判決單元主要是依據(jù)判決表來實現(xiàn)是否選中同級設(shè)備的。具體的,每個節(jié)點選擇邏輯模塊的觸發(fā)器單元寄存器的兩位數(shù)包含四種狀態(tài),分別為“00”、“10”、“01”、“11”,對應(yīng)的pcs_in在選擇過程中狀態(tài)為“1”,當(dāng)選中后,pcs_in的狀態(tài)為“0”,也就是說pcs_in存在“0”和“1”兩種狀態(tài),故寄存器和pcs_in組合后包含8種狀態(tài)。在狀態(tài)選擇過程中,只有當(dāng)寄存器狀態(tài)為“10”時,才能表示選中該級別的從設(shè)備。選中后,pcs_out的輸出狀態(tài)為“0”。
進一步的,所述的從設(shè)備含有一開關(guān),在節(jié)點選擇邏輯模塊選中同級別的從設(shè)備后,從會自動進入工作模式。
進一步的,所述的主控制器的接口包含但不限定于時鐘數(shù)據(jù)端口pclk、下行數(shù)據(jù)輸出端口pmosi_out、上行數(shù)據(jù)輸入端口pmisoin、片選控制線輸出端口pcs_out、地址控制線端口pcsa。其中,時鐘數(shù)據(jù)端口pclk連接clk線纜,下行數(shù)據(jù)輸出端口pmosi_out連接mosi線纜,上行數(shù)據(jù)輸入端口pmiso_in連接miso線纜,片選控制線輸出端口pcs_out連接cs線纜,地址控制線端口pcsa連接csa線纜。更進一步的,如上所述的主控制器的接口包括至少一個標(biāo)準spi接口和至少一個i/o端口,所述的標(biāo)準spi接口用來連接cs線纜、clk線纜、miso線纜、mosi線纜,所述的i/o端口用來連接csa線纜;或者如上所述的主控制器的接口包括至少一個非標(biāo)準spi接口和至少兩個i/o端口,所述的非標(biāo)準spi接口用來連接clk線纜、miso線纜、mosi線纜,所述的i/o端口用來連接cs線纜和csa線纜;或者如上所述的主控制器的接口包括至少5個i/o端口,所述的i/o端口用來連接cs線纜、clk線纜、miso線纜、mosi線纜、csa線纜。
進一步的,所述的節(jié)點選擇邏輯模塊的接口包含至少6個管腳,所述的管腳包含但不限定于時鐘數(shù)據(jù)端口pclk、下行數(shù)據(jù)輸入端口pmosi_in、下行數(shù)據(jù)輸出端口pmosi_out、片選控制線輸入端口pcs_in,地址控制線端口pcsa、片選控制線輸出端口pcs_out。其中,時鐘數(shù)據(jù)端口pclk連接clk線纜,下行數(shù)據(jù)輸入端口pmosi_in連接上一級的節(jié)點選擇邏輯模塊,片選控制線輸入端口pcs_in連接cs線纜,地址控制線端口pcsa連接csa線纜,下行數(shù)據(jù)輸出端口pmosi_out連接下一級節(jié)點選擇邏輯模塊,片選控制線輸出端口pcs_out連接從設(shè)備的片選端口。
進一步的,所述的從設(shè)備的接口包含至少4個管腳,所述的管腳包含但不限定于片選控制線輸入端口pcs_in、上行數(shù)據(jù)輸出端口pmiso_out、下行數(shù)據(jù)輸入端口pmosi_in、時鐘數(shù)據(jù)端口pclk。其中,片選控制線輸入端口pcs_in連接本級的節(jié)點選擇邏輯模塊的片選控制線輸出端口pcs_out,上行數(shù)據(jù)輸出端口pmiso_out連接miso線纜,下行數(shù)據(jù)輸入端口pmosi_in連接本級節(jié)點選擇邏輯模塊與下級節(jié)點選擇邏輯模塊之間的mosi線纜,時鐘數(shù)據(jù)端口pclk連接到clk線纜。
采用本發(fā)明的新型的spi總線,可以兼容標(biāo)準的spi總線,兼容市場上多數(shù)的主控制器的spi模塊。采用本發(fā)明的新型的spi總線,可以解決標(biāo)準的spi總線在掛載多個從片時,對于主片的i/o接口的需求量過大,從而導(dǎo)致系統(tǒng)不足的問題
一種基于如上所述的新型的spi總線系統(tǒng),其通訊過程的特征如下:
a.初始化總線:
a1.主處理器初始化spi模塊的各項配置參數(shù),時鐘設(shè)置為高電平有效,相位設(shè)置為下降沿采用,通訊數(shù)據(jù)位一般選擇8bit,高位先出模式。
a2.主控制器將csa線纜設(shè)置為低電平,cs線纜設(shè)置為低電平,迫使掛接在此總線上的所有節(jié)點選擇邏輯復(fù)位模塊。
b.選擇從設(shè)備地址:
b1.主控制器將cs設(shè)置為高電平;
b2.編碼器和解碼器將需要訪問的節(jié)點選擇邏輯模塊的地址分別進行編碼和解碼,最終將需要訪問的節(jié)點選擇邏輯模塊的地址轉(zhuǎn)換成二進制數(shù)據(jù),該二進制數(shù)據(jù)通過主控制器的寄存器通過mosi線依次傳送給下一級的節(jié)點選擇邏輯模塊的觸發(fā)器。
b3.節(jié)點選擇邏輯模塊中觸發(fā)器包含兩位寄存器,在每一個時鐘周期過程中,在時鐘的下降沿,上一級觸發(fā)器的兩位寄存器的高位數(shù)傳送給下一級觸發(fā)器,同時每一個觸發(fā)器的寄存器中的低位數(shù)向前移動一位,變?yōu)楦呶粩?shù)。以此類推,一直到將主控制器的寄存器中的數(shù)據(jù)完全輸出為止;
b4.在每一個時鐘周期過程中,在時鐘的下降沿,觸發(fā)器中的寄存器用來記錄上一次時鐘周期過程中和本次時鐘周期過程中上一級的觸發(fā)器輸入的數(shù)據(jù),且上一次時鐘周期過程中上一級觸發(fā)器的寄存器輸入的數(shù)據(jù)為高位數(shù)據(jù),本次時鐘周期過程中上一級觸發(fā)器的寄存器輸入的數(shù)據(jù)為低位數(shù)據(jù),在時鐘的下一個下降沿,觸發(fā)器的寄存器中的兩位數(shù)據(jù)輸出到判決單元;
b5.由判決單元依據(jù)判決表對最后一個時鐘周期過程中觸發(fā)器的寄存器輸出的兩位數(shù)據(jù)進行判斷,若在時鐘周期結(jié)束時,寄存器輸出的兩位數(shù)為“10”,則表示主控制器選中該地址;
b6.將csa設(shè)置為高電平。
c.訪問從設(shè)備:cs_out拉低,同級設(shè)備被選中,從設(shè)備進入spi通訊狀態(tài)
附圖說明:
圖1為本發(fā)明的新型的spi總線系統(tǒng)的拓撲結(jié)構(gòu)。
圖2為本發(fā)明的主控制器的結(jié)構(gòu)。
圖3為本發(fā)明的節(jié)點選擇邏輯模塊的結(jié)構(gòu)。
圖4為本發(fā)明的通道選擇單元的結(jié)構(gòu)。
圖5為本發(fā)明的時序圖。
圖6為含有4個從設(shè)備的新型的spi總線系統(tǒng)的拓撲結(jié)構(gòu)。
圖7為含有2個從設(shè)備的新型的spi總線系統(tǒng)的拓撲結(jié)構(gòu)。
圖8為含有100個從設(shè)備的新型的spi總線系統(tǒng)的拓撲結(jié)構(gòu)。
圖9為判決表格
圖10為實施案例1的觸發(fā)器所有時鐘周期中單元狀態(tài)-選擇第三個從設(shè)備
圖11為實施案例1的觸發(fā)器所有時鐘周期中單元狀態(tài)-選擇第四個從設(shè)備
圖12為實施案例2的觸發(fā)器所有時鐘周期中單元狀態(tài)-選擇第一個從設(shè)備
圖13為實施案例3的觸發(fā)器最后一個時鐘周期觸發(fā)器68的pmosi輸入口狀態(tài),和bus輸出狀態(tài)。
如下具體實施方式將結(jié)合上述附圖進一步說明本發(fā)明。
具體實施案例1:
一種新型的spi總線系統(tǒng),其包括:一個主控制器、4個節(jié)點選擇邏輯模塊、4個從設(shè)備和包含5根線纜的串行總線(時鐘線clk、下行數(shù)據(jù)線mosi、上行數(shù)據(jù)線miso、片選控制線cs、地址選擇線csa)。所述的主控制器通過接口連接在5根線纜的一端,所述的節(jié)點選擇邏輯模塊采用t型方式接入cs線、cas線、clk線、mosi線,所述的從設(shè)備采用t型方式接入clk線、miso線纜,與主控制器相連的mosi線采用菊花鏈拓撲連接方式,mosi線經(jīng)過本級節(jié)點選擇邏輯模塊連接到下一級節(jié)點選擇邏輯模塊和本級從設(shè)備,所述的從設(shè)備通過cs線連接到本級的節(jié)點選擇邏輯模塊,所述的從設(shè)備采用t型方式接入到本級節(jié)點選擇邏輯模塊和下級節(jié)點選擇邏輯模塊之間的miso線纜。
所述的主處理器中包括時鐘發(fā)生器、發(fā)送寄存器、移位寄存器、接收寄存器、主模式控制器、io口控制器、接口(mosi、miso、clk、cs、csa)。
所述的每個節(jié)點選擇邏輯模塊包括觸發(fā)器單元、判決單元、通道選擇單元、接口(mosi、miso、clk、cs)。
離主控制器最近的節(jié)點選擇邏輯模塊地址為1,下一級為2,再下一級為3,最后一級為4。
實施案例1選擇地址3的通訊過程如下:
a.初始化總線:
a1.主處理器初始化spi模塊的各項配置參數(shù),時鐘設(shè)置為高電平有效,相位設(shè)置為下降沿采用,通訊數(shù)據(jù)位選擇8bit,高位先出模式。
a2.主控制器將csa線纜設(shè)置為低電平,cs線纜設(shè)置為低電平,迫使掛接在此總線上的所有節(jié)點選擇邏輯復(fù)位模塊。
b.選擇從設(shè)備地址3:
b1.主控制器將cs設(shè)置為高電平;
b2.每個節(jié)點選擇邏輯模塊中模塊級聯(lián)為2個,假定需要訪問的從設(shè)備的地址為a,另c=(2<<((a-1)*2))+(0xffffffff>>(32-(a-1)*2))。目前需要訪問的地址為3,則主控制器的寄存器通過mosi線發(fā)送給節(jié)點選擇邏輯模塊的觸發(fā)器的數(shù)據(jù)為“00101111”。
b3.節(jié)點選擇邏輯模塊中觸發(fā)器包含兩位寄存器,在每一個時鐘周期過程中,在時鐘的下降沿,上一級觸發(fā)器的兩位寄存器的高位數(shù)傳送給下一級觸發(fā)器,同時每一個觸發(fā)器的寄存器中的低位數(shù)向前移動一位,變?yōu)楦呶粩?shù)。以此類推,一直到將主控制器的寄存器中的數(shù)據(jù)完全輸出為止。具體的,每一個時鐘周期過程中觸發(fā)器單元pmosi輸入口的狀態(tài)和觸發(fā)器單元寄存器輸出狀態(tài)參考圖10。
b4.在每一個時鐘周期過程中,在時鐘的下降沿,觸發(fā)器中的寄存器用來記錄上一次時鐘周期過程中和本次時鐘周期過程中上一級的觸發(fā)器輸入的數(shù)據(jù),且上一次時鐘周期過程中上一級觸發(fā)器的寄存器輸入的數(shù)據(jù)為高位數(shù)據(jù),本次時鐘周期過程中上一級觸發(fā)器的寄存器輸入的數(shù)據(jù)為低位數(shù)據(jù),在時鐘的下一個下降沿,觸發(fā)器的寄存器中的兩位數(shù)據(jù)輸出到判決單元;
b5.由判決單元依據(jù)判決表對最后一個時鐘周期過程中觸發(fā)器的寄存器輸出的兩位數(shù)據(jù)進行判斷,在時鐘周期結(jié)束時,寄存器輸出的兩位數(shù)為“10”,則表示主控制器選中該地址;
b6.將csa設(shè)置為高電平。
c.訪問從設(shè)備3:cs_out拉低,同級設(shè)備被選中,從設(shè)備進入spi通訊狀態(tài)
實施案例1選擇地址4的通訊過程如下:
a.初始化總線:
a1.主處理器初始化spi模塊的各項配置參數(shù),時鐘設(shè)置為高電平有效,相位設(shè)置為下降沿采用,通訊數(shù)據(jù)位選擇8bit,高位先出模式。
a2.主控制器將csa線纜設(shè)置為低電平,cs線纜設(shè)置為低電平,迫使掛接在此總線上的所有節(jié)點選擇邏輯復(fù)位模塊。
b.選擇從設(shè)備地址4:
b1.主控制器將cs設(shè)置為高電平;
b2.每個節(jié)點選擇邏輯模塊中模塊級聯(lián)為2個,假定需要訪問的從設(shè)備的地址為a,另c=(2<<((a-1)*2))+(0xffffffff>>(32-(a-1)*2))。目前需要訪問的地址為4,c=[0xbf]則主控制器的寄存器通過mosi線發(fā)送給節(jié)點選擇邏輯模塊的觸發(fā)器的數(shù)據(jù)為“10111111”,高位先出。
b3.節(jié)點選擇邏輯模塊中觸發(fā)器包含兩位寄存器,在每一個時鐘周期過程中,在時鐘的下降沿,上一級觸發(fā)器的兩位寄存器的高位數(shù)傳送給下一級觸發(fā)器,同時每一個觸發(fā)器的寄存器中的低位數(shù)向前移動一位,變?yōu)楦呶粩?shù)。以此類推,一直到將主控制器的寄存器中的數(shù)據(jù)完全輸出為止。具體的,每一個時鐘周期過程中觸發(fā)器單元pmosi輸入口的狀態(tài)和觸發(fā)器單元寄存器輸出狀態(tài)參考圖11。
b4.在每一個時鐘周期過程中,在時鐘的下降沿,觸發(fā)器中的寄存器用來記錄上一次時鐘周期過程中和本次時鐘周期過程中上一級的觸發(fā)器輸入的數(shù)據(jù),且上一次時鐘周期過程中上一級觸發(fā)器的寄存器輸入的數(shù)據(jù)為高位數(shù)據(jù),本次時鐘周期過程中上一級觸發(fā)器的寄存器輸入的數(shù)據(jù)為低位數(shù)據(jù),在時鐘的下一個下降沿,觸發(fā)器的寄存器中的兩位數(shù)據(jù)輸出到判決單元;
b5.由判決單元依據(jù)判決表對最后一個時鐘周期過程中觸發(fā)器的寄存器輸出的兩位數(shù)據(jù)進行判斷,在時鐘周期結(jié)束時,寄存器輸出的兩位數(shù)為“10”,則表示主控制器選中該地址;
b6.將csa設(shè)置為高電平。
c.訪問從設(shè)備4:cs_out拉低,同級設(shè)備被選中,從設(shè)備進入spi通訊狀態(tài)。
具體實施案例2:
一種新型的spi總線系統(tǒng),其包括:一個主控制器、2個節(jié)點選擇邏輯模塊、2個從設(shè)備和包含5根線纜的串行總線(時鐘線clk、下行數(shù)據(jù)線mosi、上行數(shù)據(jù)線miso、片選控制線cs、地址選擇線csa)。所述的主控制器通過接口連接在5根線纜的一端,所述的節(jié)點選擇邏輯模塊采用t型方式接入cs線、cas線、clk線、mosi線,所述的從設(shè)備采用t型方式接入clk線、miso線纜,與主控制器相連的mosi線采用菊花鏈拓撲連接方式,mosi線經(jīng)過本級節(jié)點選擇邏輯模塊連接到下一級節(jié)點選擇邏輯模塊和本級從設(shè)備,所述的從設(shè)備通過cs線連接到本級的節(jié)點選擇邏輯模塊,所述的從設(shè)備采用t型方式接入到本級節(jié)點選擇邏輯模塊和下級節(jié)點選擇邏輯模塊之間的miso線纜。
所述的主處理器中包括時鐘發(fā)生器、發(fā)送寄存器、移位寄存器、接收寄存器、主模式控制器、io口控制器、i/o端口(mosi、miso、clk、cs、csa)。
所述的每個節(jié)點選擇邏輯模塊包括觸發(fā)器單元、判決單元、通道選擇單元、接口(mosi、miso、clk、cs)。
離主控制器最近的節(jié)點選擇邏輯模塊地址為1,下一級為2。
實施案例2選擇地址1的通訊過程如下:
a.初始化總線:
a1.主處理器初始化spi模塊的各項配置參數(shù),時鐘設(shè)置為高電平有效,相位設(shè)置為下降沿采用,通訊數(shù)據(jù)位選擇8bit,高位先出模式。
a2.主控制器將csa線纜設(shè)置為低電平,cs線纜設(shè)置為低電平,迫使掛接在此總線上的所有節(jié)點選擇邏輯復(fù)位模塊。
b.選擇從設(shè)備地址:
b1.主控制器將cs設(shè)置為高電平;
b2.每個節(jié)點選擇邏輯模塊中模塊級聯(lián)為2個,假定需要訪問的從設(shè)備的地址為a,另c=(2<<((a-1)*2))+(0xffffffff>>(32-(a-1)*2))。目前需要訪問的地址為4,c=[0x2]則主控制器的寄存器通過mosi線發(fā)送給節(jié)點選擇邏輯模塊的觸發(fā)器的數(shù)據(jù)為“00000010”,高位先出。
b3.節(jié)點選擇邏輯模塊中觸發(fā)器包含兩位寄存器,在每一個時鐘周期過程中,在時鐘的下降沿,上一級觸發(fā)器的兩位寄存器的高位數(shù)傳送給下一級觸發(fā)器,同時每一個觸發(fā)器的寄存器中的低位數(shù)向前移動一位,變?yōu)楦呶粩?shù)。以此類推,一直到將主控制器的寄存器中的數(shù)據(jù)完全輸出為止。
b4.在每一個時鐘周期過程中,在時鐘的下降沿,觸發(fā)器中的寄存器用來記錄上一次時鐘周期過程中和本次時鐘周期過程中上一級的觸發(fā)器輸入的數(shù)據(jù),且上一次時鐘周期過程中上一級觸發(fā)器的寄存器輸入的數(shù)據(jù)為高位數(shù)據(jù),本次時鐘周期過程中上一級觸發(fā)器的寄存器輸入的數(shù)據(jù)為低位數(shù)據(jù),在時鐘的下一個下降沿或上升沿,觸發(fā)器的寄存器中的兩位數(shù)據(jù)輸出到判決單元;
b5.由判決單元依據(jù)判決表對最后一個時鐘周期過程中觸發(fā)器的寄存器輸出的兩位數(shù)據(jù)進行判斷,在時鐘周期結(jié)束時,寄存器輸出的兩位數(shù)為“10”,則表示主控制器選中該地址;
b6.將csa設(shè)置為高電平。
c.訪問從設(shè)備1:cs_out拉低,同級設(shè)備被選中,從設(shè)備進入spi通訊狀態(tài)。
具體實施案例3:
一種新型的spi總線系統(tǒng),其包括:一個主控制器、100個節(jié)點選擇邏輯模塊、100個從設(shè)備和包含5根線纜的串行總線(時鐘線clk、下行數(shù)據(jù)線mosi、上行數(shù)據(jù)線miso、片選控制線cs、地址選擇線csa)。所述的主控制器通過接口連接在5根線纜的一端,所述的節(jié)點選擇邏輯模塊采用t型方式接入cs線、cas線、clk線、mosi線,所述的從設(shè)備采用t型方式接入clk線、miso線纜,與主控制器相連的mosi線采用菊花鏈拓撲連接方式,mosi線經(jīng)過本級節(jié)點選擇邏輯模塊連接到下一級節(jié)點選擇邏輯模塊和本級從設(shè)備,所述的從設(shè)備通過cs線連接到本級的節(jié)點選擇邏輯模塊,所述的從設(shè)備采用t型方式接入到本級節(jié)點選擇邏輯模塊和下級節(jié)點選擇邏輯模塊之間的miso線纜。
所述的主處理器中包括時鐘發(fā)生器、發(fā)送寄存器、移位寄存器、接收寄存器、主模式控制器、io口控制器、i/o端口(mosi、miso、clk、cs、csa)。
所述的每個節(jié)點選擇邏輯模塊包括觸發(fā)器單元、判決單元、通道選擇單元、接口(mosi、miso、clk、cs)。
離主控制器最近的節(jié)點選擇邏輯模塊模塊地址為1,下一級為2,以此類推,一直到最后一個節(jié)點選擇邏輯模塊的地址為100。
實施案例3選擇地址68的通訊過程如下:
a初始化總線:
a1.主處理器初始化spi模塊的各項配置參數(shù),時鐘設(shè)置為高電平有效,相位設(shè)置為下降沿采用,通訊數(shù)據(jù)位選擇8bit,高位先出模式。
a2.主控制器將csa線纜設(shè)置為低電平,cs線纜設(shè)置為低電平,迫使掛接在此總線上的所有節(jié)點選擇邏輯復(fù)位模塊。
b.選擇從設(shè)備地址:
b1.主控制器將cs設(shè)置為高電平;
b2.每個節(jié)點選擇邏輯模塊中模塊級聯(lián)為2個,假定需要訪問的從設(shè)備的地址為a,另如果a<=16則c1=(2<<((a-1)*2))+(0xffffffff>>(32-(a-1)*2)),c2=0,c3=0,c4=0,c5=0,c6=0,c7=0否則如果a<=32則c1=0xffffffff,c2=(2<<((a-17)*2))+(0xffffffff>>(32-(a-17)*2)),c3=0,c4=0c5=0,c6=0,c7=0否則如果a<=48則c1=0xffffffff,c2=0xffffffff,c3=(2<<((a-33)*2))+(0xffffffff>>(32-(a-33)*2)),c4=0,c5=0,c6=0,c7=0否則如果a<=64則c1=0xffffffff,c2=0xffffffff,c3=0xffffffff,c4=(2<<((a-49)*2))+(0xffffffff>>(32-(a-49)*2)),c5=0,c6=0,c7=0,否則如果a<=80則c1=0xffffffff,c2=0xffffffff,c3=0xffffffff,c4=0xffffffff,c5=(2<<((a-65)*2))+(0xffffffff>>(32-(a-65)*2)),c6=0,c7=0,否則如果a<=96則c1=0xffffffff,c2=0xffffffff,c3=0xffffffff,c4=0xffffffff,c5=0xffffffff,c6=(2<<((a-81)*2))+(0xffffffff>>(32-(a-81)*2)),c7=0,否則c1=0xffffffff,c2=0xffffffff,c3=0xffffffff,c4=0xffffffff,c5=0xffffffff,c6=0xffffffff,c7=(2<<((a-97)*2))+(0xffffffff>>(32-(a-97)*2))。目前需要訪問的地址為68,c1=0xffffffff,c2=0xffffffff,c3=0xffffffff,c4=0xffffffff,c5=0xbf,c6=0,c7=0則主控制器的寄存器通過mosi線發(fā)送給節(jié)點選擇邏輯模塊的觸發(fā)器的數(shù)據(jù)為“1011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111”。
b3.節(jié)點選擇邏輯模塊中觸發(fā)器包含兩位寄存器,在每一個時鐘周期過程中,在時鐘的下降沿,上一級觸發(fā)器的兩位寄存器的高位數(shù)傳送給下一級觸發(fā)器,同時每一個觸發(fā)器的寄存器中的低位數(shù)向前移動一位,變?yōu)楦呶粩?shù)。以此類推,一直到將主控制器的寄存器中的數(shù)據(jù)完全輸出為止。
b4.在每一個時鐘周期過程中,在時鐘的下降沿,觸發(fā)器中的寄存器用來記錄上一次時鐘周期過程中和本次時鐘周期過程中上一級的觸發(fā)器輸入的數(shù)據(jù),且上一次時鐘周期過程中上一級觸發(fā)器的寄存器輸入的數(shù)據(jù)為高位數(shù)據(jù),本次時鐘周期過程中上一級觸發(fā)器的寄存器輸入的數(shù)據(jù)為低位數(shù)據(jù),在時鐘的下一個下降沿或上升沿,觸發(fā)器的寄存器中的兩位數(shù)據(jù)輸出到判決單元;
b5.由判決單元依據(jù)判決表對最后一個時鐘周期過程中觸發(fā)器的寄存器輸出的兩位數(shù)據(jù)進行判斷,在時鐘周期結(jié)束時,寄存器輸出的兩位數(shù)為“10”,則表示主控制器選中該地址;
b6.將csa設(shè)置為高電平。
c.訪問從設(shè)備68:cs_out拉低,同級設(shè)備被選中,從設(shè)備進入spi通訊狀態(tài)。
從以上三個實施案例中,可以看出采用本發(fā)明的新型的spi總線,可以兼容標(biāo)準的spi總線,兼容市場上多數(shù)的主控制器的spi模塊。采用本發(fā)明的新型的spi總線,可以解決標(biāo)準的spi總線在掛載多個從片時,對于主片的i/o接口的需求量過大,從而導(dǎo)致系統(tǒng)不足的問題。
以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應(yīng)以所附權(quán)利要求為準。