首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

stm32f103vct6 通过FSMC连接DM9000a,读取厂商id错了

stm32f103vct6 通过FSMC连接DM9000a,读取厂商id错了

我的连接方式:16跟数据线连接到stm32f103vct6fsmc的数据线上,FSMC_NOEFSMC_NWE分别连接到dm9000aIORIOWFSMC_A18FSMC_A16分别连接到dm9000acscmd上,dm9000arst连接到一个单独的GPIO上,DM9000A连接到stm32f103的外部中断,
遇到的问题:读取厂商ID是错误的:
下面是我的初始化配置文件:
static void DM9K_FSMCConfig(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
       FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
       FSMC_NORSRAMTimingInitTypeDef  FSMC_NORSRAMTimingInitStructure;

        /* FSMC GPIO configure */
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE);

       RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD |RCC_APB2Periph_GPIOE
                                                  |RCC_APB2Periph_AFIO, ENABLE);
   
        /* PD14 FSMC_D0   PD15FSMC_D1   PD10  FSMC_D15  PD8  FSMC_D13  PD9  FSMC_D14  PD2  FSMC_D2  PD1  FSMC_D3*/        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0| GPIO_Pin_1 |GPIO_Pin_4 | GPIO_Pin_5| GPIO_Pin_8 | GPIO_Pin_9|  GPIO_Pin_10
                                    | GPIO_Pin_14 | GPIO_Pin_15|GPIO_Pin_11 /*|GPIO_Pin_12*/|GPIO_Pin_13;
        GPIO_InitStructure.GPIO_Mode  =GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
        GPIO_Init(GPIOD,&GPIO_InitStructure);
      
    /* PE7 ~ PE15  FSMC_D4 ~ FSMC_D12 */  
    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);
                                                                                          

        /* FSMC set read time */
       FSMC_NORSRAMTimingInitStructure.FSMC_AddressSetupTime =4;             /*
地址建立时间  */
       FSMC_NORSRAMTimingInitStructure.FSMC_AddressHoldTime =4;           
        FSMC_NORSRAMTimingInitStructure.FSMC_DataSetupTime= 8;                   /*
数据建立时间  */
       FSMC_NORSRAMTimingInitStructure.FSMC_BusTurnAroundDuration =0;
       FSMC_NORSRAMTimingInitStructure.FSMC_CLKDivision = 0;
        FSMC_NORSRAMTimingInitStructure.FSMC_DataLatency= 4;
       FSMC_NORSRAMTimingInitStructure.FSMC_AccessMode =FSMC_AccessMode_A;        /* FSMC
访问模式*/
        
        FSMC_NORSRAMInitStructure.FSMC_Bank =FSMC_Bank1_NORSRAM4;
       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_AsynchronousWait =FSMC_AsynchronousWait_Disable;
       FSMC_NORSRAMInitStructure.FSMC_ExtendedMode =FSMC_ExtendedMode_Disable;
        FSMC_NORSRAMInitStructure.FSMC_WriteBurst= FSMC_WriteBurst_Disable;
       FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct =&FSMC_NORSRAMTimingInitStructure;
       FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
        /* FSMC set write time */
       FSMC_NORSRAMTimingInitStructure.FSMC_AddressSetupTime =4;                /*
地址建立时间  */
       FSMC_NORSRAMTimingInitStructure.FSMC_AddressHoldTime =4;           
       FSMC_NORSRAMTimingInitStructure.FSMC_DataSetupTime = 8;                      /*
数据建立时间  */
       FSMC_NORSRAMTimingInitStructure.FSMC_BusTurnAroundDuration =0;
       FSMC_NORSRAMTimingInitStructure.FSMC_CLKDivision = 0;
       FSMC_NORSRAMTimingInitStructure.FSMC_DataLatency = 4;
       FSMC_NORSRAMTimingInitStructure.FSMC_AccessMode =FSMC_AccessMode_A;            /* FSMC
访问模式*/
       FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct =&FSMC_NORSRAMTimingInitStructure;         
        
       FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
        
        /* Enable FSMC Bank4_SRAM Bank */
        FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4,ENABLE);
        return;
}
读取厂商ID,先要RST复位
做人要做懒羊羊啊!
返回列表