STM32 FSMC學習筆記
當要讀數據時,地址由0x60020000改為了0x60000000,這個時候A16就為0了。--------------------------------------------------------------------------------------------------
下來就是關于 FSCM時序問題,大家都有討論:
一.當FSMC選擇NOR和PSRAM模塊時:
分為兩種:1.異步事務2.同步突發事務
異步事務分為普通模式(mode 1,mode 2)和模式1與模式2的4種擴展模式(mode A,B,C,D);
二.General timing rules(通用時序規則):
(所有輸出控制信號在內部時鐘(HCLK)的上升沿改變)
2.In synchronous read and write mode, the output data changes on the falling edge of the
memory clock (FSMC_CLK).
(在同步讀和寫模式下,輸出信號在存儲器CLK的下降沿改變)
三.采樣規則
The FSMC always samples the data before de-asserting the chip select signal NE. This
guarantees that the memory data-hold timing constraint is met (chip enable high to
data transition, usually 0 ns min.)
(FSMC總是在撤銷片選信號NE前采樣數據,這保證了了儲存器數據保持時間的約束能夠滿足。)
四:時序計算
設定值都是以Hclk為基本單位的
公式:




現在沒有完全弄明白的是,因為是異步模式,數據通過延遲一個HCLK通知給了對端,地址線上的信號怎么通知對端有效呢?
--------------------------------------------------------------------------------------------------
下面是一些資料上的數據,可以估算時間是否大概滿足應用的要求:


--------------------------------------------------------------------------------------------------
一些常見問題的FAQ:
1.STM32F103 FSMC是不是所有型號都有?
ANS:VC,VD,VE,ZC,ZD,ZE只有這幾個型號有。
---------------------------------------------------------------------------------------------------------------------------------
2.復用和非復用?
STM32的FSMC支持數據與地址線復用或非復用兩種模式
非復用模式:16位數據線及26位地址線分開始用。推薦在144腳及以上的STM32產品上使用該模式。
復用模式:低16位數據/地址線復用。在該模式下,推薦使用地址鎖存器以區分數據與地址。
若不使用鎖存器:當NADV為低時,ADx(x=0…15)上出現地址信號Ax,當NADV變高時,ADx上出現數據信號Dx。
若使用鎖存器:可同時在ADx上得到Ax和Dx。
FSMC中未使用的數據線或地址線可配置為GPIO
對于16位寬度的外部存儲器,FSMC將在內部使用HADDR[25:1]產生外部存儲器的地址FSMC_A[24:0]。因此,實際的訪問地址為右移一位之后的地址。
---------------------------------------------------------------------------------------------------------------------------------
3.時序圖(擴展模式)
普通模式和擴展模式的不同主要用途我覺得,就是把讀、寫設置成不盡相同的時序。所謂的模式A、B、C、D,其實沒多大區別。
引用手冊原文:
The differences with mode1 are the toggling of NADV and the independent read and write timings when extended mode is set。
---------------------------------------------------------------------------------------------------------------------------------
4.FSMC_NWAIT和FSMC_NE1/FSMC_NCE2.不明白這兩個怎么用?
ANS:NBL0,NBL1,在STM32F103的數據手冊里面有規定IO的,不能隨便換.(PSRAM時使用)
NWAIT應該是FLASH操作才用的.NE1,NCE2就是一些片選信號.STM32的FSMC支持同時掛多個器件,每個器件都必須有一個CS(也就是NEx,NCEx).
NADV(NL)在復用時時所存信號。在非復用模式控制PSRAM輸出有效。
看了1天的英文資料和論壇,這是我總結出來的一些雜亂的信息,由于剛到嵌入式開發行列,底子太弱,所以先把這些保存下來,供以后使用。
下周一實驗板就來了,估計花些時間調一下FSMC,再加上DMA的功能,希望能改善產品。
PS:糾結了 快一個禮拜。。終于搞定了


評論