本發(fā)明涉及智能交通技術(shù)領(lǐng)域,具體而言,涉及一種串行外設(shè)接口spi的傳輸控制方法、裝置及系統(tǒng)。
背景技術(shù):
串行外設(shè)接口(serialperipheralinterfacemaster,簡稱為spi)flash因其使用方便,易于連接,管腳較少等特點,在嵌入式系統(tǒng)中應(yīng)用比較多。但是因為其使用串行傳輸數(shù)據(jù),受限于可工作的時鐘的頻率范圍,傳輸較慢。并且單片flash的擦除和寫入速度也會成為系統(tǒng)瓶頸。
針對相關(guān)技術(shù)中需要多個spi控制器控制多片spiflash的問題,還未提出有效的解決方案。
技術(shù)實現(xiàn)要素:
本發(fā)明提供了一種spi的傳輸控制方法及裝置,以至少解決相關(guān)技術(shù)中需要多個spi控制器控制多片spiflash的問題。
根據(jù)本發(fā)明的一個方面,提供了一種spi的傳輸控制方法,包括:為單個spi控制器配置可編程器件;通過配置的所述可編程器件對多片spiflash的傳輸進(jìn)行控制。
進(jìn)一步地,通過配置的所述可編程器件對所述多片spiflash的傳輸進(jìn)行控制包括:通過所述可編程器件將所述spi控制器的輸出時鐘clk進(jìn)行分頻,產(chǎn)生多個相位不同的時鐘分別傳入所述多片spiflash訪問所述多片spiflash。
進(jìn)一步地,通過配置的所述可編程器件對所述多片spiflash的傳輸進(jìn)行控制包括:通過配置的所述可編程器件對所述多片spiflash的寫操作和讀操作進(jìn)行控制;其中,所述寫操作為,通過將待寫入數(shù)據(jù)依次輸出到所述spi控制器的輸出mosi,分別連接到所述多片spiflash的輸出mosi,其中,所述多片spiflash在各自分頻后的時鐘clk的驅(qū)動下采樣mosi上的信號,作為所述多片spiflash的輸入數(shù)據(jù);所述讀操作為,將所述多片spiflash返回的數(shù)據(jù)還原為能夠解析的數(shù)據(jù)。
進(jìn)一步地,將所述多片spiflash返回的數(shù)據(jù)還原為能夠解析的數(shù)據(jù)包括:在數(shù)據(jù)傳輸階段,通過所述可編程器件將所述多片spiflash的輸出合成為一路所述spi控制器的輸入miso,其中,所述可編程器件在所述spi控制器的輸出時鐘clk的上升沿分別對所述多片spiflash的輸出依次采樣,所述多片spiflash的輸出為所述多片spiflash 根據(jù)配置模式的不同,在分頻后的clk的上升沿或下降沿發(fā)送的數(shù)據(jù)。
進(jìn)一步地,所述可編程器件為邏輯可編程器件(complexprogrammablelogicdevice,簡稱為cpld)和現(xiàn)場可編程門陣列(field-programmablegatearray,簡稱為fpga)。
根據(jù)本發(fā)明的另一方面,提供了一種串行外設(shè)接口spi的傳輸控制裝置,包括:配置模塊,用于為單個spi控制器配置可編程器件;控制模塊,用于通過配置的所述可編程器件對多片spiflash的傳輸進(jìn)行控制。
進(jìn)一步地,所述控制模塊包括:訪問單元,用于通過所述可編程器件將所述spi控制器的輸出時鐘clk進(jìn)行分頻,產(chǎn)生多個相位不同的時鐘分別傳入所述多片spiflash訪問所述多片spiflash。
根據(jù)本發(fā)明的另一方面,還提供了一種串行外設(shè)接口spi的傳輸控制系統(tǒng),包括:一個spi控制器、可編程器件和多片spiflash,其中,所述spi控制器與所述可編程器件連接;所述可編程器件分別與所述多片spiflash連接,用于通過所述可編程器件對所述多片spiflash的數(shù)據(jù)傳輸進(jìn)行控制。
進(jìn)一步地,所述spi控制器的時鐘信號clk,輸入miso,輸出的片選ss經(jīng)所述可編程器件處理后,分別與所述多片spiflash連接;所述spi控制器的輸出mosi直接輸出到所述多片spiflash。
進(jìn)一步地,所述可編程器件為邏輯可編程器件cpld和現(xiàn)場可編程門陣列fpga。
通過本發(fā)明,采用為單個spi控制器配置可編程器件;通過配置的所述可編程器件對多片spiflash的傳輸進(jìn)行控制,解決了相關(guān)技術(shù)中需要多個spi控制器控制多片spiflash的問題,節(jié)省了cpu的占用,提高了訪問速度。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本發(fā)明實施例的串行外設(shè)接口spi的傳輸控制方法的流程圖;
圖2是根據(jù)本發(fā)明實施例的串行外設(shè)接口spi的傳輸控制裝置的框圖;
圖3是根據(jù)本發(fā)明優(yōu)選實施例的串行外設(shè)接口spi的傳輸控制裝置的框圖一;
圖4是根據(jù)本發(fā)明實施例的spi訪問控制系統(tǒng)連接的框圖;
圖5是根據(jù)本發(fā)明實施例的spi訪問控制方法的流程圖;
圖6是根據(jù)本發(fā)明實施例的單片spi連接兩片spiflash的時序示意圖;
圖7是根據(jù)本發(fā)明實施例的單片spi連接四片spiflash的時序示意圖。
具體實施方式
下文中將參考附圖并結(jié)合實施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
本發(fā)明實施例提供了一種串行外設(shè)接口spi的傳輸控制方法,圖1是根據(jù)本發(fā)明實施例的串行外設(shè)接口spi的傳輸控制方法的流程圖,如圖1所示,包括:
步驟s102,為單個spi控制器配置可編程器件;
步驟s104,通過配置的該可編程器件對多片spiflash的傳輸進(jìn)行控制。
通過上述步驟,為單個spi控制器配置可編程器件;通過配置的該可編程器件對多片spiflash的傳輸進(jìn)行控制,解決了相關(guān)技術(shù)中需要多個spi控制器控制多片spiflash的問題,節(jié)省了cpu的占用,提高了訪問速度。
在一個可選的實施例中,通過配置的該可編程器件對該多片spiflash的傳輸進(jìn)行控制可以包括:通過該可編程器件將該spi控制器的輸出時鐘clk進(jìn)行分頻,產(chǎn)生多個相位不同的時鐘分別傳入該多片spiflash訪問該多片spiflash。
在另一個可選的實施例中,通過配置的該可編程器件對該多片spiflash的傳輸進(jìn)行控制可以包括:通過配置的該可編程器件對該多片spiflash的寫操作和讀操作進(jìn)行控制;其中,該寫操作為,通過將待寫入數(shù)據(jù)依次輸出到該spi控制器的輸出mosi,分別連接到該多片spiflash的輸出mosi,其中,該多片spiflash在各自分頻后的時鐘clk的驅(qū)動下采樣mosi上的信號,作為該多片spiflash的輸入數(shù)據(jù);該讀操作為,將該多片spiflash返回的數(shù)據(jù)還原為能夠解析的數(shù)據(jù)。
進(jìn)一步地,將該多片spiflash返回的數(shù)據(jù)還原為能夠解析的數(shù)據(jù)可以包括:在數(shù)據(jù)傳輸階段,通過該可編程器件將該多片spiflash的輸出合成為一路該spi控制器的輸入miso,其中,該可編程器件在該spi控制器的輸出時鐘clk的上升沿分別對該多片spiflash的輸出依次采樣,該多片spiflash的輸出為該多片spiflash根據(jù)配置模式的不同,在分頻后的clk的上升沿或下降沿發(fā)送的數(shù)據(jù)。
進(jìn)一步地,該可編程器件可以為邏輯可編程器件cpld和現(xiàn)場可編程門陣列fpga。
本發(fā)明實施例提供了一種串行外設(shè)接口spi的傳輸控制裝置,圖2是根據(jù)本發(fā)明實施例的串行外設(shè)接口spi的傳輸控制裝置的框圖,如圖2所示,包括:
配置模塊22,用于為單個spi控制器配置可編程器件;
控制模塊24,用于通過配置的該可編程器件對多片spiflash的傳輸進(jìn)行控制。
圖3是根據(jù)本發(fā)明優(yōu)選實施例的串行外設(shè)接口spi的傳輸控制裝置的框圖一,如圖3所示,控制模塊24包括:
訪問單元32,用于通過該可編程器件將該spi控制器的輸出時鐘clk進(jìn)行分頻,產(chǎn)生多個相位不同的時鐘分別傳入該多片spiflash訪問該多片spiflash。
本發(fā)明實施例還提供了一種串行外設(shè)接口spi的傳輸控制系統(tǒng),包括:一個spi控制器、可編程器件和多片spiflash,其中,
該spi控制器與該可編程器件連接;
該可編程器件分別與該多片spiflash連接,用于通過該可編程器件對該多片spiflash的數(shù)據(jù)傳輸進(jìn)行控制。
進(jìn)一步地,該spi控制器的時鐘信號clk,輸入miso,輸出的片選ss經(jīng)該可編程器件處理后,分別與該多片spiflash連接;該spi控制器的輸出mosi直接輸出到該多片spiflash。
進(jìn)一步地,該可編程器件為邏輯可編程器件cpld和現(xiàn)場可編程門陣列fpga。
下面以cpld為例,結(jié)合具體實施例對本發(fā)明實施例進(jìn)行進(jìn)一步說明。
本發(fā)明實施例提供了一種單spi控制器實現(xiàn)多片spiflash的訪問方法,在不改變spi和flash通信協(xié)議的情況下,可以成倍地提高spiflash的讀寫傳輸和擦寫速度。其具體步驟如下:
圖4是根據(jù)本發(fā)明實施例的spi訪問控制系統(tǒng)連接的框圖,如圖4所示,spi控制器端有四個信號,分別是時鐘信號clk(clock),spi控制器的輸出mosi(masteroutputslaveinput),spi控制器的輸入miso(maserinputslaveoutput),以及spi控制器輸出的片選ss(slaveslect)。其中,mosi信號直接輸出到spiflash,其它三個信號都要經(jīng)過可編程邏輯器件處理后,再分別與spiflash連接;
可編程邏輯器件將clk信號n分頻,輸出多路相位相差1個clk周期的時鐘,分別輸出連接至多片spiflash的時鐘輸入中,其中,n應(yīng)為2的整數(shù)倍,能夠連接的最大flash數(shù)為n片;
傳輸流程與基本spi傳輸基本保持一致,分為三個階段,分別為命令字(command)傳輸階段,地址(address)傳輸階段和數(shù)據(jù)(data)傳輸階段。命令字和地址傳輸?shù)絪piflash端,根據(jù)工作模式的不同,在分頻后的clkn的上升沿或下降沿進(jìn)行采樣和發(fā)送。
對于一個典型的寫操作,cpu將需要寫入的數(shù)據(jù)依次輸出到mosi,直接連接到每片spiflash的mosi0到mosi(n-1)。在該階段,spiflash芯片在各自分頻后的時鐘clkn的驅(qū)動下采樣mosi上的信號,作為自己的輸入數(shù)據(jù)。寫操作只需關(guān)注spiflash可正確采樣數(shù)據(jù),但對于一個讀操作,還需要將spiflash返回的數(shù)據(jù)還原為cpu可以 解析的數(shù)據(jù)。讀操作的數(shù)據(jù)(data)傳輸階段,spiflash端根據(jù)配置的模式的不同,在分頻后的clkn的上升沿或下降沿發(fā)送數(shù)據(jù),可編程邏輯器件在數(shù)據(jù)傳輸階段,在每個cpu輸出的時鐘clk的上升沿分別對多路輸出依次采樣,并保持一個周期時間,將多路輸出合成為一路miso輸入到cpu端解析。
本發(fā)明實施例提出的單spi控制器實現(xiàn)多片spiflash提速訪問的方法,僅使用單個spi控制器,不需要額外占用cpu的spi控制器,能夠解決spi傳輸受限于可工作的時鐘的頻率范圍和擦寫速度慢的局限,具有非常好的實用價值。
在一個讀spi操作實例中,系統(tǒng)主要由spi控制器和兩片spiflash組成,spi控制器端時鐘信號clk,miso,ss經(jīng)cpld處理后,分別與兩片spiflash連接;mosi直接輸出到spiflash。
傳輸階段分為三個階段,第一階段spi控制器(spimaster)輸出命令字信號,第二階段spi控制器(spimaster)輸出訪問地址信號,第三階段spiflash輸出回讀數(shù)據(jù)。
圖5是根據(jù)本發(fā)明實施例的spi訪問控制方法的流程圖,如圖5所示,具體傳輸?shù)臄?shù)據(jù)如下:
通過單spi控制器實現(xiàn)多片spiflash提速訪問的方法具體包括如下步驟:
步驟s1,配置spi控制器的工作模式,以配置spi控制器工作在模式1為例,在上升沿發(fā)送數(shù)據(jù),下降沿采樣數(shù)據(jù)。
步驟s2,圖6是根據(jù)本發(fā)明實施例的單片spi連接兩片spiflash的時序示意圖,如圖6所示,在傳輸?shù)谝浑A段,首先將片選ss拉低。spi控制器在上升沿依次發(fā)送命令字信號,命令字字長8比特,因為連接有兩片spiflash,所以讀命令字需發(fā)送兩遍。其中,兩片spiflash分別稱為a,b,發(fā)送方式為:依次發(fā)送兩片spiflash命令字的第7(0-base)比特的內(nèi)容,依次類推,直至發(fā)送完兩片spiflash第0(0-base)比特的內(nèi)容,具體步驟如下。在第一個上升沿,發(fā)送給a命令字的第7個比特(0-base),第二個上升沿,發(fā)送給b命令字的第7個比特(0-base);依次類推,在奇數(shù)上升沿發(fā)送給a的命令字比特,在偶數(shù)上升沿發(fā)送給b的命令字比特,發(fā)送順序由高比特發(fā)送至低比特,即由第7比特發(fā)送至第0比特??偣舶l(fā)送16比特字長的命令字信號。
具體傳輸?shù)臄?shù)據(jù)如下:
第一階段傳輸數(shù)據(jù):
步驟s3,在傳輸?shù)诙A段,spi控制器在上升沿依次發(fā)送訪問地址信號,訪問地址字長24比特,發(fā)送方式與第一階段(s2)方法相同,地址也需要發(fā)送兩遍,按奇偶上升沿依次發(fā)送,從高比特位開始發(fā)送,總共發(fā)送48比特字長的地址信號,具體方法與步驟s2相同。
步驟s4,判斷是讀操作還是寫操作,在判斷結(jié)果為寫操作的情況下,執(zhí)行步驟s5,在判斷結(jié)果為讀操作的情況下,執(zhí)行步驟s6;
步驟s5,在傳輸?shù)谌A段,cpu將需要寫入的數(shù)據(jù)依次輸出到mosi,直接連接到每片spiflash的mosi0到mosi(n-1)。在該階段,spiflash芯片在各自分頻后的時鐘clkn的驅(qū)動下采樣mosi上的信號,作為自己的輸入數(shù)據(jù)。
步驟s6,在傳輸?shù)谌A段,n片spiflash依次輸出n路回讀數(shù)據(jù)miso0到miso(n-1)。在該階段,cpld由spi控制器輸出時鐘clk觸發(fā),依次采集miso0到miso(n-1)的8比特數(shù)據(jù),然后保持一個clk周期,從高比特到低比特得到總的8*n比特字長的輸出miso,輸入到spi控制器。
步驟s7,在完成傳輸?shù)谌A段,將片選拉高,結(jié)束一次完整傳輸。
在傳輸?shù)谌A段,spiflash在clkn下降沿輸出回讀數(shù)據(jù),a輸出數(shù)據(jù)miso0,b輸出數(shù)據(jù)miso1。因為經(jīng)過偶數(shù)倍頻,分頻后的下降沿可與clk的上升沿一一對應(yīng),在該階段,cpld由spi控制器輸出時鐘clk的上升沿觸發(fā),依次采集a,b的mison的8比特數(shù)據(jù),并保持一個clk周期,得到總的16比特字長的輸出miso,直接輸入到spi控制器。此時完成了一個完整的傳輸過程。
單片spi連接四片spiflash的情況與上述的單片spi連接兩片spiflash類似,圖7是根據(jù)本發(fā)明實施例的單片spi連接四片spiflash的時序示意圖,如圖7所示,在此不再贅述。
上述的本發(fā)明實施例,僅利用單個spi控制器,實現(xiàn)了對多片spiflash傳輸?shù)目刂疲恍枰~外占用cpu的spi控制器,并通過將cpu時鐘分頻并錯開相位的方法,使用分頻后的低頻時鐘訪問單個spiflash芯片,不僅可以使組合之后的spiflash傳輸頻率倍增,并且多塊芯片組合之后擦寫速度也相應(yīng)的倍增,適合在嵌入式系統(tǒng)中使用。
顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們 存儲在存儲裝置中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。