打印
[STM32]

stm32f103vet6外接铁电FM28V020发现的问题

[复制链接]
589|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
foer|  楼主 | 2019-1-24 18:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 foer 于 2019-1-24 18:21 编辑

以前用单片机做的,正常工作很长时间,现在想转到stm32,采用fsmc,外接32K铁电FM28V020,一直不正常,现象是只能读出0x100-0x1FF的内容(正确),0x0-0xff也是0x100-0x1ff的内容,然后所有的地址内容不停循环0x100-0x1ff,NADV已经反向给74HC573,初始化程序在后面,

  最后,直接用一个F103VET6实验板,什么都不接,只是下载这个程序,用示波器观察,发现如下问题

1. PE11(DA8),信号幅值明显与其他DA0-DA15的幅值低很多 (这个是2V档)
  

2.PE13的信号(1V档)
  

FMSC初始化后,所有DA0-DA15,理论上引脚信号幅值应该是一样的,为什么PF11就不一样?,最后只有在PE11上上拉一个2K电阻,信号幅值就上去了,如果对PE11采用IO模式,Out_PP输出,信号幅值很正常
PCB原理图
  
ALE已经反向输出到573的
现在是用的什么都不挂接的实验板,信号还是一样,说明是F103VE自身的问题,这个怎么解释,如果FSMC初始化不正确,为什么0x100-0x1FF的内容写入和读出都是正确的?只是所有地址数据都是在0X100-0X1FF循环

FMSC程序
//初始化外部SRAM
void        FSMC_SRAM_Init(void)
{        
        GPIO_InitTypeDef  GPIO_InitStructure;
        FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
        FSMC_NORSRAMTimingInitTypeDef  p;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO, ENABLE);
        /* Enable FSMC, GPIOD, GPIOE, GPIOF, GPIOG and AFIO clocks */
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;      
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);

        /* Set PD.00(D2), PD.01(D3), PD.04(NOE), PD.05(NWE), PD.07(NE1) PD.08(D13), PD.09(D14),
         PD.10(D15), PD.14(D0), PD.15(D1) as alternate function push pull */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7 | GPIO_Pin_11 |
                                    GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10  | GPIO_Pin_14 | GPIO_Pin_15 ;

        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOD, &GPIO_InitStructure);

        /* Set PE.07(D4), PE.08(D5), PE.09(D6), PE.10(D7), PE.11(D8), PE.12(D9), PE.13(D10),
         PE.14(D11), PE.15(D12) as alternate function push pull */

        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_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_Init(GPIOE, &GPIO_InitStructure);

        p.FSMC_AddressSetupTime = 5;
        p.FSMC_AddressHoldTime = 5;
        p.FSMC_DataSetupTime = 15;
        p.FSMC_BusTurnAroundDuration = 5;
        p.FSMC_CLKDivision = 0;
        p.FSMC_DataLatency = 0;
        p.FSMC_AccessMode = FSMC_AccessMode_B;(改过D,一样现象)
        
        FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
        FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Enable;
        FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;  (改过PSRAM,一样现象)
        FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;
        FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
        FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_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_WriteBurst = FSMC_WriteBurst_Disable;
        FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
        FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
        

        FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
        /* Enable FSMC Bank4_SRAM Bank */
        FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);  
                                                                                
}
是库函数初始化有问题吗?

相关帖子

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

本版积分规则

1

主题

1

帖子

0

粉丝