FSMC-地址建立時間、地址保持時間、數據建立時間如何確定

我們知道FSMC包括同步和異步兩種工作時序。對於異步突發訪問方式, FSMC 主要設置 3 個時間參數:地址建立時間(ADDSET)、數據建立時間(DATAST)和地址保持時間(ADDHLD)。這三個參數是怎麼來的呢?是因爲SRAM/ ROM、 PSRAM 和 NOR Flash 產品的信號時序有這三個參數,FSMC 綜合了 SRAM/ ROM、 PSRAM 和 NOR Flash 產品的信號特點,定義了 4 種不同的異步時序模型。選用不同的時序模型時,需要設置不同的時間參數,如下表所示:

那麼究竟地址建立時間(ADDSET)、數據建立時間(DATAST)和地址保持時間(ADDHLD)是什麼呢?我們需要看SRAM/ ROM、 PSRAM 和 NOR Flash等芯片的時序圖。這3個參數是存儲芯片的數據手冊中給出的,或者是通過存儲芯片的數據手冊其他參數計算出來的。所以想要知道這3個參數的具體值,一定要看具體存儲芯片的數據手冊!

我使用STM32F407作爲主控芯片,選用IS62WV51216作爲片外SRAM。IS62WV51216讀寫時序及讀寫參數如下圖所示:

IS62WV51216讀時序關鍵特性
IS62WV51216讀時序
IS62WV51216寫時序關鍵特性
IS62WV51216寫時序

 

使用模式A,讀寫共用時序(共用時序時,以寫時序爲準),配置代碼如下:

 //系統頻率爲168MHz,即一個HCLK週期爲1/168M=6ns
 readWriteTiming.FSMC_AddressSetupTime = 0x00;   //地址建立時間爲0HCLK     即0ns
 readWriteTiming.FSMC_AddressHoldTime = 0x00;    //地址保持時間 模式A未用到
 readWriteTiming.FSMC_DataSetupTime = 0x08;      //數據建立時間 爲9HCLK    6*9=54ns

爲什麼地址建立時間是0ns呢?因爲從IS62WV51216寫時序關鍵特性中可以看到,Address Setup Time爲0,所以配置時,地址建立時間要等於0。

地址保持時間模式A未用到,所以配置爲0.

數據建立時間爲什麼是54ns呢?因爲從IS62WV51216寫時序關鍵特性中可以看到,Dataup to Write End最小值爲30ns,所以配置時,數據保持時間要大於30ns。至於選擇的54ns並不是嚴格按照手冊時間來的,這需要實際調試才能確定具體值。

那爲什麼數據建立時間配置爲8,但卻是9個HCLK週期時間呢?從STM32中文參考手冊的時序圖中可以看到,模式A寫入時序的數據建立時間爲: 數據建立時間=HCLK週期+1,初始化程序時,如果設置DATAST=0,則實際數據建立週期爲1,即實際數據建立週期比DATAST值多1個HCLK週期。

STM32中文參考手冊模式A寫時序

 

參數確定大體就是這樣的思路,其他模式及不同的芯片確定參數的思路是一樣的。希望能幫到大家。

最後是在帖子中看到的關於時序的講解,挺有趣,一併放在文章中。

先搞清邏輯關係。 

這是CPU讀存儲器的時序。CPU索取,存儲器付出。 

我有很多單元,你要讀我,至少要把那個單元的門牌號告訴我吧?——這就是地址線,由CPU填寫(輸出); 
地址線上非1即0,你放不放地址都這樣的,所以,你要告訴我什麼時候是“地址”,什麼時候是“垃圾”吧?——這就是OE線下降沿的作用,也要CPU填寫。 
(一般來說,要在地址穩定以後,OE才發出下降沿。上面圖沒有給出這個差別。) 

好了,CPU該辦的手續已經完了,球到了存儲器一邊。 

我要去這個單元找東西,總需要點時間吧?——這就是OE下降沿以後,RAM發出數據的時間間隔。 
艾瑪,累死我了,你要的東西找到了,我放上去了! 

按說,數據放到總線上了,可是CPU如何才能知道數據來了呢?因爲不論是數據還是垃圾,那電線上面總有1、0這些東西。 
這時出現不同解決方法了。 
一種方法,由存儲器給CPU發出一個通知信號:好了,快來拿!這個信號通常叫做 Data Available,數據可得,簡寫 DAV,可能有人見過。CPU接到這個信號,自然會做。
另一種方法,有老大強勢規定:OE下降沿之後,你丫必須在1秒鐘之內把東西交出來!我只管時間到就來拿!這是多數存儲器遵守的規定。 
這兩種方法,由於是不同的公司提出的,經常以公司名字來命名。Motorola總線,intel總線,聽說過吧? 

OK,明白這些意思,稍微想一想,應當就可以理解各種時序的時間了。以後再不用問人了。 

另外,手冊裏經常可以看到,這些時間一般會有最大值、最小值,有些只給出一項。 
比如上面提到,從OE下降沿到存儲器交出數據的時間,在存儲器手冊裏面,這個時間只會給出最大值。 
因爲用戶必須按“最長時間”操作,不能有僥倖心理。給出最小值沒有實際意義。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章