OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6893|回复: 3

STM32F4 FMC NOE一直是低电平

[复制链接]

3

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2015-4-11
在线时间
3 小时
发表于 2015-4-14 21:15:49 | 显示全部楼层 |阅读模式
5金钱
最近在调STM32F4的FMC有个奇怪的现象,NOE管脚一致是低电平,好奇怪,是不是我FMC配置有误,大家帮忙看看:


void FMC_GPIO_Init(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;

        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_GPIOF|RCC_AHB1Periph_GPIOG, ENABLE);//????PD,PE,PF,PG?±??  
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;//PB15 ???ì????,????±???
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//???¨????????
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//???ì????
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//????
  GPIO_Init(GPIOB, &GPIO_InitStructure);//?????? //PB15 ???ì????,????±???
        
  GPIO_InitStructure.GPIO_Pin = (3<<0)|(3<<4)|(7<<8)|(3<<14);//PD0,1,4,5,8,9,10,14,15 AF OUT
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//????????
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//???ì????
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//????
  GPIO_Init(GPIOD, &GPIO_InitStructure);//??????  
        
  GPIO_InitStructure.GPIO_Pin = (0X1FF<<7);//PE7~15,AF OUT
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//????????
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//???ì????
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//????
  GPIO_Init(GPIOE, &GPIO_InitStructure);//??????  

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//PF12,FSMC_A6
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//????????
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//???ì????
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//????
  GPIO_Init(GPIOG, &GPIO_InitStructure);//??????  

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;//PG12,FSMC_NE4
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//????????
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//???ì????
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//????
  GPIO_Init(GPIOG, &GPIO_InitStructure);//?????? 

  GPIO_PinAFConfig(GPIOD,GPIO_PinSource0,GPIO_AF_FMC);//PD0,AF12
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource1,GPIO_AF_FMC);//PD1,AF12
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource4,GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource5,GPIO_AF_FMC); 
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource8,GPIO_AF_FMC); 
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource9,GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource10,GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource14,GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource15,GPIO_AF_FMC);//PD15,AF12

  GPIO_PinAFConfig(GPIOE,GPIO_PinSource7,GPIO_AF_FMC);//PE7,AF12
  GPIO_PinAFConfig(GPIOE,GPIO_PinSource8,GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE,GPIO_PinSource9,GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE,GPIO_PinSource10,GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE,GPIO_PinSource11,GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE,GPIO_PinSource12,GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE,GPIO_PinSource13,GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE,GPIO_PinSource14,GPIO_AF_FMC);
  GPIO_PinAFConfig(GPIOE,GPIO_PinSource15,GPIO_AF_FMC);

  GPIO_PinAFConfig(GPIOG,GPIO_PinSource0,GPIO_AF_FMC);//PF12,AG6
  GPIO_PinAFConfig(GPIOG,GPIO_PinSource12,GPIO_AF_FMC);        
}
void FMC_Init(void)
{
        
        FMC_NORSRAMInitTypeDef  FMC_NORSRAMInitStructure;
  FMC_NORSRAMTimingInitTypeDef  readWriteTiming; 
        FMC_NORSRAMTimingInitTypeDef  writeTiming;
        
        RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FMC,ENABLE);//????FSMC?±??  
        
        writeTiming.FMC_AddressSetupTime =9;              //???·?¨???±???¨ADDSET?©??9??HCLK =54ns 
  writeTiming.FMC_AddressHoldTime = 0x00;         //???·±????±???¨A                
  writeTiming.FMC_DataSetupTime = 8;                 //????±????±????6ns*9??HCLK=54ns
  writeTiming.FMC_BusTurnAroundDuration = 0x00;
  writeTiming.FMC_CLKDivision = 0x00;
  writeTiming.FMC_DataLatency = 0x00;
  writeTiming.FMC_AccessMode = FMC_AccessMode_A;         //????A 

        FMC_NORSRAMInitStructure.FMC_Bank = FMC_Bank1_NORSRAM4;//  ????????????NE4 ??????????BTCR[6],[7]??  
        FMC_NORSRAMInitStructure.FMC_DataAddressMux = FMC_DataAddressMux_Disable; // ?????????????·         
  FMC_NORSRAMInitStructure.FMC_MemoryType =FMC_MemoryType_NOR;// FSMCEnable_MemoryType_SRAM;  //SRAM        
  FMC_NORSRAMInitStructure.FMC_MemoryDataWidth = FMC_NORSRAM_MemoryDataWidth_16b;//?????÷?????í????16bit 
  FMC_NORSRAMInitStructure.FMC_BurstAccessMode =FMC_BurstAccessMode_Disable;// FSMC_BurstAccessMode_Disable; 
  FMC_NORSRAMInitStructure.FMC_WaitSignalPolarity = FMC_WaitSignalPolarity_Low; 
        FMC_NORSRAMInitStructure.FMC_AsynchronousWait=FMC_AsynchronousWait_Disable; 
  FMC_NORSRAMInitStructure.FMC_WrapMode = FMC_WrapMode_Disable;   
  FMC_NORSRAMInitStructure.FMC_WaitSignalActive = FMC_WaitSignalActive_BeforeWaitState;  
  FMC_NORSRAMInitStructure.FMC_WriteOperation = FMC_WriteOperation_Enable;        //  ?????÷??????
  FMC_NORSRAMInitStructure.FMC_WaitSignal = FMC_WaitSignal_Disable;   
  FMC_NORSRAMInitStructure.FMC_ExtendedMode = FMC_ExtendedMode_Enable; // ???????????????±?ò
        FMC_NORSRAMInitStructure.FMC_AsynchronousWait = FMC_AsynchronousWait_Disable;
  FMC_NORSRAMInitStructure.FMC_WriteBurst = FMC_WriteBurst_Disable;
  FMC_NORSRAMInitStructure.FMC_ContinousClock = FMC_CClock_SyncOnly;

  FMC_NORSRAMInitStructure.FMC_ReadWriteTimingStruct = &readWriteTiming; //?????±?ò
  FMC_NORSRAMInitStructure.FMC_WriteTimingStruct = &writeTiming;  //???±?ò

  FMC_NORSRAMInit(&FMC_NORSRAMInitStructure);  //??????FSMC????

  FMC_NORSRAMCmd(FMC_Bank1_NORSRAM4, ENABLE);  // ????BANK1 
}



这个是读操作:
第一个是写寄存器地址,第二个是读操作,但是整个过程NOE都是低电平!好不理解啊!

捕获.PNG
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2015-4-11
在线时间
3 小时
 楼主| 发表于 2015-4-14 21:23:04 | 显示全部楼层
typedef struct
{
u16 LCD_REG;
u16 LCD_RAM;
} LCD_TypeDef;
//我使用的是16Bit A10作为RS ,以下是配置    
#define LCD_BASE        ((u32)(0x6C000000 | 0x00000800))
#define LCD             ((LCD_TypeDef *) LCD_BASE)
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-4-14 22:32:48 | 显示全部楼层
NOE和你的RS没什么关系,检查FSMC的配置。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

18

主题

149

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-11-28
在线时间
208 小时
发表于 2016-3-31 13:15:04 | 显示全部楼层
不明白你为什么没有配置  readWriteTiming;
   而且你这个WR的这个不是有一个低电平时间吗?
   写的时候不是只有NWE才会动作的吗?NOE也就是WR不就一直是高电平吗?
writeTiming.FMC_DataSetupTime = 8;                 //????±????±????6ns*9??HCLK=54ns
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 18:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表