| 
 
| 本帖最后由 evilchips 于 2013-9-10 16:39 编辑 
 
 | 平台:STM32F4-Discovery(LQFP100,FSMC地址和数据线复用)+FPGA(被当做SRAM方式由MCU访问) FSMC配置参数:地址和数据线16根复用,BANK1,NE1,PSRAM方式,使用异步访问,用到FSMC_NL(FSMC_NADV),
 模式A,数据带宽16b,Timing 如下:
 FSMC_NORSRAMTimingInitStructure.FSMC_AddressSetupTime                 = 10;//1;                           /* 地址建立时间  */
 FSMC_NORSRAMTimingInitStructure.FSMC_AddressHoldTime                 = 0;
 FSMC_NORSRAMTimingInitStructure.FSMC_DataSetupTime                 = 10;//1;                                   /* 数据建立时间  */
 FSMC_NORSRAMTimingInitStructure.FSMC_BusTurnAroundDuration         = 0;
 FSMC_NORSRAMTimingInitStructure.FSMC_CLKDivision                         = 0;
 FSMC_NORSRAMTimingInitStructure.FSMC_DataLatency                         = 0;
 FSMC_NORSRAMTimingInitStructure.FSMC_AccessMode                         = FSMC_AccessMode_A;        /* FSMC 访问模式 */
 SignalTapII捕捉到FSMC时序各信号图:
 
   图上可以看出:
 0x8001是我要写的地址,0xFFFF是我要写的数据,但是这地址和数据之间好乱,
 还有FSMC_NEx,FSMC_WEn信号都非常乱,并且我只写了一个16bit的数据写一次,
 FSMC_OEn为什么也变有效了,同样是乱。
 
 地址定义如下:
 #define        ACCESS_REGS                                        (2<<14)                        /*        0x8000        */
 #define     CMD_START                              (*((volatile unsigned short *) (BANK1_BASE+((ACCESS_REGS+1)<<1)))) /* CMD->START         0x60008001*/
 写数据:
 CMD_START = 0xFFFF;
 
 请赐教!Thanks a lot.
 | 
 
 | 
 |