你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

FSMC访问SRAM的问题

[复制链接]
萧星-96138 发布时间:2008-12-24 16:58
我使用的MCU为STM32F103VC,在使用FSMC访问外部的SRAM的时候,功能脚上没有输出信号?
在使用中为数据线和地址线复用的形式,所以外部加锁存器进行地址锁存,用NADV信号来控制锁存器的lock脚。
信号连接:
    NADV---->PB7
    NOE----->PD4
    NWE----->PD5
    NE1----->PD7
    NBL0---->PE0
    NBL1---->PE1
我使用的为IAR5.0,使用STM32的库函数

我的初始化如下:
/* DMA1 and DMA2, FSMCclock enable */
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1 | RCC_AHBPeriph_DMA2|RCC_AHBPeriph_SRAM|RCC_AHBPeriph_FSMC, ENABLE);

void FSMC_SRAM_Init(void)
{
  FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
  FSMC_NORSRAMTimingInitTypeDef  p;
  GPIO_InitTypeDef GPIO_InitStructure;
  
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE , ENABLE);
  
/*-- GPIO Configuration ------------------------------------------------------*/
  /* Set PD.00(D2), PD.01(D3), PD.08(D13), PD.09(D14),
     PD.10(D15),PD.11(A16), PD.14(D0), PD.15(D1) as alternate
     function push pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 |
                         GPIO_Pin_10 |GPIO_Pin_11 | GPIO_Pin_14 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
                                GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |GPIO_Pin_15;
  GPIO_Init(GPIOE, &GPIO_InitStructure);
   
  /* PD.04(NOE), PD.05(NWE), PD.07(NE1) configuration */  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 |GPIO_Pin_5|GPIO_Pin_7;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  
  /* NBL0, NBL1 configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
  GPIO_Init(GPIOE, &GPIO_InitStructure);

  /*NADV configuration */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  
/*-- FSMC Configuration ------------------------------------------------------*/
  p.FSMC_AddressSetupTime = 2;
  p.FSMC_AddressHoldTime = 2;
  p.FSMC_DataSetupTime = 3;
  p.FSMC_BusTurnAroundDuration = 2;
  p.FSMC_CLKDivision = 2;
  p.FSMC_DataLatency = 3;
  p.FSMC_AccessMode = FSMC_AccessMode_B;

  FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
  
  FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Enable;
  FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;
  FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
  FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
  FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
  FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
  FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
  FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_AsyncWait = FSMC_AsyncWait_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
  
  FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
  FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;

  FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);

  /* Enable FSMC Bank1_SRAM Bank */
  FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);  
}
然后我调用FSMC_SRAM_WriteBuffer(),进行写操作。在FSMC章节中,对复用形式下,采用了模式B。

疑问:
1、在使用中定义IO口为AF,但是手册中D0,D1为默认值,也需要定义为AF吗?
2、我的初始化是否出了问题,我现在用示波器观察IO口发现没有波形输出?

FSMC 地址和数据复用

请看STM32技术参考手册(第5版)的392页最下面

Bit 1 MUXEN: Address/data multiplexing enable bit.
   When this bit is set, the address and data values are multiplexed on the databus, valid only with NOR Flash memory:
   0: Address/Data nonmultiplexed
   1: Address/Data multiplexed on databus (default after reset)
接法都对  原理图的问题 此为转帖  以便大家学习
收藏 评论1 发布时间:2008-12-24 16:58

举报

1个回答
jsongyan 回答时间:2011-3-13 20:16:05

RE:FSMC访问SRAM的问题

谢谢版主的经验。

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版