新型恩智浦ARM Cortex-M3微控制器首次采用的SPI閃存接口技術(SPIFI,已申請專利)可以幫助32位嵌入式系統設計人員以小尺寸,、低成本的串行閃存替代大尺寸,、高成本的并行閃存。利用SPIFI (讀音與spiffy諧音,,意為“出色,、整潔、漂亮”等——譯注),,外部串行閃存可以映射到微控制器內存中,,達到片上內存讀取效果。新技術可以解決傳統嵌入式系統外部閃存選型難題,,為設計人員在保持系統性能的同時縮小尺寸及降低成本提供了一條新途徑,。
目前恩智浦開發(fā)出一種新型外設接口技術,該技術在基于ARM Cortex-M3內核的最新LPC1800微控制器上已得到成功應用,。嵌入式系統設計人員利用該技術可將串行閃存取代并行閃存,,縮小封裝尺寸,降低系統成本,。這種稱為SPI閃存接口(SPIFI)的技術目前已申請專利,,通過該技術可將外部串行閃存映射到微控制器內存,實現片上內存讀取效果,。SPIFI為設計人員提供了一種創(chuàng)新解決方案,,在保持系統性能的同時達到簡化配置、縮小封裝體積,、減少板載空間占用和節(jié)約系統成本的目的,。
外部閃存的作用
采用32位微控制器(MCU)的嵌入式應用目前越來越復雜,需要完成多媒體,、照片和其他各種數據密集型內容的管理任務,。特別是人機接口系統,用戶現在都希望有圖形顯示,,通過窗口,、圖片、動畫,、聲音和其他多媒體方式實現人機對話,。此外,隨著市場的國際化,,產品需要滿足多國語言要求,,支持各種字母和字符,。所有這些都對系統存儲資源提出了更高要求。
大部分32位微控制器都配有片上閃存,,用于支持各種數據密集型功能,,但是這種內存容量有限,通常無法滿足整體應用要求,。片上閃存通常不足1Mb,,雖然能夠解決主要應用代碼存儲,卻無法滿足其他應用資料的保存要求,,比如:查找表單,、圖像、照片,、聲音文件,、多國語言等。為此,,設計人員通常要使用外部閃存。
與片上閃存相比,,外部閃存成本要低很多,,而且通常都有8Mb以上的現貨。使用外部閃存可以增加系統靈活性,,系統運行時能夠更新升級軟件,。
并行閃存與串行閃存的艱難選擇
對于外部閃存選型(串行和并行),設計人員通常要綜合評估,,折衷考慮,。并行閃存的速度通常比串行閃存快,但需要使用更多管腳,、PCB布線和板載空間,。
圖1給出了串行和并行閃存典型的數據傳輸速率。對于并行閃存,,圖中假定無緩沖,,固定存取時間為90ns?;谏鲜鰲l件,,16位并行閃存的最大傳輸速率22Mb/s。對于串行閃存,,最大時鐘頻率80MHz的每位傳輸速率為80Mb/s,,四通道串行閃存最大傳輸速率為40Mb/s。雖然該計算忽略了控制位,,但四通道SPI閃存支持burst位,,而SPIFI接口支持該功能,因此SPIFI接口可以達到上述傳輸速率。
圖1:串行和并行閃存的典型傳輸速率,。
嵌入式閃存選型困擾(電子工程專輯)" height="231" src="http://files.chinaaet.com/images/20101220/58c130ee-91c5-40c3-9fe5-c2fb208c2f6a.jpg" width="446" />
如圖1所示,,典型的16位并行閃存每秒傳輸速率為20Mb。對于使用32位微控制器和32位外部閃存通信總線的系統(如恩智浦產品),,設計人員可以選擇使用兩個16位并行閃存達到40Mb/s的傳輸速率,。但是,增加速度的同時也會增加成本,。這種配置使用兩個獨立的并行閃存,,每個閃存有數十個封裝管腳,無論是封裝尺寸,、管腳數量,,還是PCB空間占用,都會遠遠超出設計人員的承受范圍,。
串行閃存通常使用簡單的四針串行外設接口(SPI),從空間占用,、功耗和成本等因素考慮是并行閃存的理想替代產品,但是傳輸速率非常低,。通過圖1我們可以看到典型SPI閃存50MHz的傳輸速率僅為5Mb/s,,而采用兩個16位并行閃存配置系統的傳輸速率是其8倍。另一個問題就是大多數微控制器SPI接口都與MCU外設矩陣連接,,處理器訪問數據前必須先由驅動器代碼接收到內容并保存在板載RAM中,。由于每次讀取串行閃存都要通過SPI軟件層,因此速度無法提高,。對于采用標準SPI接口的外部閃存應用,,速度可能無法滿足要求。
新型四通道SPI閃存采用改進的6針SPI配置,,數據傳輸速率遠高于傳統的SPI接口,。如圖1所示,四通道SPI每秒最大傳輸速率可達40Mb,,與兩個16位并行閃存速度相當,。由于減少了管腳數量和封裝尺寸,與并行方案相比,,四通道SPI串行閃存可有效降低成本,。雖然四通道SPI閃存完全可替代嵌入式系統中的并行閃存,但目前32位微控制器設計并不支持四通道SPI閃存的最大傳輸速率,。這主要是因為四通道SPI接口與傳統的SPI接口連接方式相同,,直接連接了微控制器外設矩陣。
解決外部閃存選型難題
恩智浦新開發(fā)的SPI閃存接口(SPIFI)可以徹底解決并行/串行閃存的選型困擾,。已申請專利的SPIFI外設可以將低成本SPI和新型四通道SPI閃存映像到ARM Cortex-M3內存中,。與外部并行閃存方案相比,,使用SPI外部閃存的MCU性能損失非常小。由于外部SPI閃存完整的內存空間可以映像到MCU內存中,,微控制器對外部閃存直接訪問,,無需使用軟件API或庫。
例如,,使用四通道SPI閃存,,SPIFI外設傳輸速率可達40Mb/s。設計人員可以選擇更便宜的SPI閃存器件,,在保證性能的基礎上縮小腳位尺寸,,簡化配置。由于系統無需針對外部并行閃存使用龐大的接口設計,,設計人員還可以選擇體積更小,、成本更低的微控制器。嵌入式系統采用SPIFI外設可以提高內存資源利用率,,縮小尺寸,,提高效率,降低系統總成本,。
SPIFI外設是恩智浦LPC1800系列ARM Cortex-M3微控制器率先采用的一種專用技術,。此外,即將面市的新產品還包括低成本Cortex-M0系列和Cortex M4數字符串行控制器(DSC),。
SPIFI支持目前市場上大部分串行閃存器件(含四通道讀/寫產品),,配置編程非常簡便,,采用4/6引腳設計(取決于串行閃存類型),,支持小型寄存器組,優(yōu)化內存事務,,其軟件指令可降低CPU開銷,,提高內存數據交換效率。
SPIFI工作原理
圖2給出了SPIFI外設的功能框圖,。SPIFI功能塊與微控制器應用的高速總線(AHB)矩陣連接,,后者主要用于處理器內核和片上內存。SPIFI將外部SPI閃存內容映射到微控制器內存中,。當片上ROM啟動代碼激活SPIFI接口后,,外部SPI內存與核心處理單元上的片上內存功能完全相似。
圖2:SPIFI外設功能框圖,。
初始化序列
SPFI接口的所有驅動程序全部保存在ROM中,。對于讀取操作,只需一個例程調用指令即可啟動SPIFI外設,。初始化序列結束后,,整個SPI閃存可以象正常內存一樣由處理器和/或DMA通道按字節(jié),、半字、整字訪問,。擦除和編程通過簡單的API指令訪問ROM命令調用即可,,因此,使用外部SPI閃存與片上內存幾乎沒有差別,。
從SPIFI啟動
對于需要微控制器從外部串行閃存啟動的系統,,恩智浦LPC1800微控制器已配置了SPIFI啟動功能。啟動源的選擇有兩種方法:第一種是使用微控制器引腳確定啟動源的接口;第二種由用戶在非易失性內存中編程選擇啟動接口,。使用非易失性內存編程可保留引腳的雙重功能,。
物理接口
圖3給出了SPIFI外設的物理接口。本示例對于傳統SPI閃存采用了標準的4引腳配置,,如果是四信道SPI閃存,,還需要增加兩個引腳以支持四信道功能。
圖3:SPIFI外設物理接口,。
不同的串行閃存廠商和產品需要不同的命令和命令格式,。SPIFI外設為此提供了足夠的支持,可兼容大部分SPI閃存及衍生產品,,確保今后產品的兼容性,。
小寄存器組
SPIFI外設小寄存器組既保證了接口的功能又簡化了操作,通過8個寄存器控制SPIFI功能,,連接外部SPI閃存,,保存和檢索數據以及監(jiān)控操作。由于設置,、編程,、擦除等工作均由集成的ROM API處理,因此外部SPI內存操作只需要幾個簡單的調用命令,??傮w來看,SPIFI外設配置簡單,,應用方便,。
軟件命令
當軟件讀取內存映射的串行閃存內容時,外部閃存可以識別并接受微控制器軟件發(fā)送的和SPIFI外設自動發(fā)送的命令,。這些命令可分為操作代碼,、地址、中間和數據等字段,,其中,。地址、中間和數據字段為可選字段,,這主要取決于操作代碼,。部分閃存支持“讀”命令解釋操作代碼模式,,以提高系統性能。根據操作代碼不同,,數據字段可進一步分為輸入和輸出數據字段,。所有發(fā)送到外部SPI閃存的命令都可以通過調用ROM API指令進行處理。SPIFI ROM API驅動器允許通過簡單的加載命令訪問外部SPI閃存內容,,保證應用操作代碼延續(xù)其緊湊和易寫的特點,。
獨立于CPU的運行
SPIFI軟件可讀取外部閃存數據,并將其寫入RAM或外設,,無需CPU支持,。比如,對于集成LCD控制器的微控制器,,此功能可以提高系統性能,,節(jié)約功耗。外部閃存可以保存圖像并通過LCD控制器讀取,。由于LCD控制器大多數按地址順序讀取數據,,SPIFI外設可根據需要預先獲取地址,無需等待,。整個操作無需CPU參與,,也不用將圖像加載到片上RAM,而由LCD控制器直接獲取,。因此,,系統對微控制器片上RAM的容量要求不高,或者可將現有RAM釋放出來用于完成其他任務,。由于LCD控制器直接獲取圖像,,LCD顯示屏圖像刷新速度更快,簡單的開關窗口等操作顯得更加平滑流暢,。另外,,為降低功耗,,系統還可以使用低時鐘速率運行,,不會對顯示性能有太大影響。
直接執(zhí)行代碼
從軟件的角度看,,微控制器可以直接執(zhí)行外部SPI閃存中的代碼,。直接執(zhí)行代碼有利于在線升級或者更新片上閃存的出廠功能。外部閃存可以存放通過驗證的升級代碼,。例如,,如果系統功能地址保存在片上閃存的表單中,通過外部閃存的例程地址即可對該表單重新編程,?;蛘?,如果包含原始例程起始信息的內存頁保存在片上閃存中,通過外部分支長跳轉到外部閃存的新例程即可更新內存頁,。對于上述兩例,,由于SPIFI外設可以實現外部閃存代碼直接執(zhí)行,因此新代碼無需加載到片上RAM,。
通過外部閃存執(zhí)行代碼的速度遠不及片上內存,。SPIFI外設設計并非針對需要峰值性能的實時運行功能,但是對于執(zhí)行非關鍵代碼序列,,SPIFI具有很大的吸引力,。
寫/執(zhí)行并行操作功能
SPIFI支持寫功能和執(zhí)行功能同時進行,換句話說,,即使處理器正在執(zhí)行片上閃存代碼,,也可以快速方便地對外部閃存進行編程和擦除。由于SPIFI外設可以獨立運行,,不受CPU影響,,因此在外部串行閃存編程的同時,系統可以繼續(xù)執(zhí)行相關任務,。
由于系統在執(zhí)行關鍵應用代碼的同時可以對外部閃存進行寫操作,,因此該功能可用于在線軟件更新。例如,,智能電表即使在更新軟件時也需要不間斷工作,。利用SPIFI,公用工程公司可以配置系統,,向外部閃存寫入任何代碼,,無需中斷智能電表的計量工作,最后再將新代碼集成到系統中,。同樣,,對于使用USB端口的系統,新代碼可以先保存在便攜式USB驅動器中,,再傳輸到外部閃存,,無需中斷重要操作。
本文小結
恩智浦LPC1800 ARM Cortex-M3微控制器首次采用的SPI閃存接口技術可以將外部閃存映射到微控制器內存中,,實現片上內存功能,。此項技術為設計人員帶來更多的外置閃存選擇機會,同時降低系統成本,,縮小封裝尺寸,。
SPIFI外設為設計人員提供了一種新的解決方案,可以利用低成本串行閃存替代昂貴的并行閃存,,在縮小尺寸的同時仍能保證系統性能,。串行閃存的低成本,、小尺寸和簡化配置等眾多優(yōu)勢從此得以應用,而對系統性能的影響非常小,。利用SPIFI,,設計人員還可以選擇無并行接口的微控制器,以小型低成本設計實現所需性能,。
恩智浦計劃將SPIFI技術推廣到其他Cortex-M產品上,,包括低端Cortex-M0和即將上市的Cortex-M4數字信號控制器(DSC)。