打印
[STM32F1]

【已解决】VCT6 FSMC NADV无信号输出,源码已贴,求指点。。

[复制链接]
1692|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
JK_alvin|  楼主 | 2014-12-30 18:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 JK_alvin 于 2015-1-4 11:27 编辑

STM32F103VCT6,打算用FSMC与cpld通信,现在利用A0~A23以及NWE、NOE、NE、NADV来连接,现象是:
①STM32f101VC的低16位地址是和数据线复用的,目前NADV信号一直维持高电平不变;
②数据地址线波形感觉异常不是方波,电平拉高以后,下降沿是斜坡220us左右变低(有点像接了电容);



#define GPIO_PinD_Data (GPIO_Pin_14| GPIO_Pin_15| GPIO_Pin_0 | GPIO_Pin_1 |\
                        GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10)
                          
#define GPIO_PinE_Data (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)

#define GPIO_PinD_Addr (GPIO_Pin_11| GPIO_Pin_12| GPIO_Pin_13)

#define GPIO_PinE_Addr (GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_6)

#define GPIO_PinB_NADV  GPIO_Pin_7
#define GPIO_PinD_NWE   GPIO_Pin_5
#define GPIO_PinD_NOE   GPIO_Pin_4
#define GPIO_PinD_NE1   GPIO_Pin_7

/* GPIOD FSMC数据/地址线初始化 */
   GPIO_InitStructure.GPIO_Pin   = GPIO_PinD_Data | GPIO_PinD_Addr | GPIO_PinD_NWE |GPIO_PinD_NOE | GPIO_PinD_NE1;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP; //复用推挽输出
   GPIO_Init(GPIOD, &GPIO_InitStructure);
   
   /* GPIOE FSMC数据/地址线初始化 */
   GPIO_InitStructure.GPIO_Pin   = GPIO_PinE_Data | GPIO_PinE_Addr;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP; //复用推挽输出
   GPIO_Init(GPIOE, &GPIO_InitStructure);
   
   /* GPIOB FSMC 锁存线初始化 */
   GPIO_InitStructure.GPIO_Pin   = GPIO_PinB_NADV;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP; //复用推挽输出
   GPIO_Init(GPIOB, &GPIO_InitStructure);


void FSMC_Configuration()
{
   FSMC_NORSRAMInitTypeDef        FSMC_NORSRAMInitStructure;
   FSMC_NORSRAMTimingInitTypeDef  FSMC_ReadWriteTimingStruct;
   //-- FSMC 时序配置 ------------------------------------------------------
   FSMC_ReadWriteTimingStruct.FSMC_AddressSetupTime      = 0x0a;
   FSMC_ReadWriteTimingStruct.FSMC_AddressHoldTime       = 0x0a;
   FSMC_ReadWriteTimingStruct.FSMC_DataSetupTime         = 0x0a;
   FSMC_ReadWriteTimingStruct.FSMC_BusTurnAroundDuration = 0x02;
   FSMC_ReadWriteTimingStruct.FSMC_CLKDivision           = 0x00;
   FSMC_ReadWriteTimingStruct.FSMC_DataLatency           = 0x00;
   FSMC_ReadWriteTimingStruct.FSMC_AccessMode            = FSMC_AccessMode_D;
  
   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 = &FSMC_ReadWriteTimingStruct;
   FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct     = &FSMC_ReadWriteTimingStruct;
  
   FSMC_NORSRAMInit (&FSMC_NORSRAMInitStructure);
  
   // Enable FSMC Bank1_SRAM Bank
   FSMC_NORSRAMCmd (FSMC_Bank1_NORSRAM1, ENABLE);
}


谢谢。。。。




【1】FSMC_WrapMode_Disable,在设置了非对齐模式下,扩展后的地址必须考虑(MCU地址会向右一位);
【2】我打开了systick,这会影响到脉冲的波形,具体原因还在检查;

谢谢 @mmuuss586 提供的资料!!!
沙发
JK_alvin|  楼主 | 2014-12-30 18:25 | 只看该作者
@香水城   香主,能给指点下吗?

使用特权

评论回复
板凳
zh113214| | 2014-12-30 18:25 | 只看该作者
不知道楼主是干嘛用的,硬件部分有什么器件啊

使用特权

评论回复
地板
JK_alvin|  楼主 | 2014-12-30 18:31 | 只看该作者
zh113214 发表于 2014-12-30 18:25
不知道楼主是干嘛用的,硬件部分有什么器件啊

硬件是MCU与CPLD直接连接的,CPLD实现的就是一个IO扩展、附带一些逻辑处理

使用特权

评论回复
5
JK_alvin|  楼主 | 2014-12-30 20:03 | 只看该作者
有没有遇到同样问题的呢?

使用特权

评论回复
6
mmuuss586| | 2014-12-30 22:33 | 只看该作者
发现FSMC资料你看看;
FSMC.rar (3.21 MB)

使用特权

评论回复
7
JK_alvin|  楼主 | 2014-12-31 10:47 | 只看该作者
mmuuss586 发表于 2014-12-30 22:33
发现FSMC资料你看看;

谢谢,早上又调试了下,NE、NOE、NWE、NADV的波形都正常了,只剩下数据线\地址的波形异常,IO初始化我STEP观察了GPIOx_CRH和GPIOx_CRL寄存器,设置是没问题的。很疑惑。。。

使用特权

评论回复
8
mmuuss586| | 2015-1-4 18:24 | 只看该作者
JK_alvin 发表于 2014-12-31 10:47
谢谢,早上又调试了下,NE、NOE、NWE、NADV的波形都正常了,只剩下数据线\地址的波形异常,IO初始化我STE ...

呵呵,这么多问题啊;
我以前用407的FSMC和外部芯片通讯还是比较顺利的;

使用特权

评论回复
9
JK_alvin|  楼主 | 2015-1-4 21:25 | 只看该作者
mmuuss586 发表于 2015-1-4 18:24
呵呵,这么多问题啊;
我以前用407的FSMC和外部芯片通讯还是比较顺利的; ...

问题都已找到,呵呵。静下心来,仔细分析问题就都解决了。谢谢你提供的资料。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:真正的设计应该是友好的,给人带来温暖和希望的。

8

主题

62

帖子

3

粉丝