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

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

[复制链接]
gxlsunday 提问时间:2012-12-26 13:07 /
我的连接方式:16跟数据线连接到stm32f103vct6的fsmc的数据线上,FSMC_NOE和FSMC_NWE 分别连接到dm9000a的IOR和IOW上FSMC_A18和 FSMC_A16分别连接到dm9000a的cs和cmd上,dm9000a的rst连接到一个单独的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   PD15 FSMC_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;
}

 
收藏 评论2 发布时间:2012-12-26 13:07

举报

2个回答
gxlsunday 回答时间:2012-12-26 13:30:30

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

恳请高手解答,谢谢
L_686 回答时间:2014-9-28 10:07:31

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

楼主问题解决了吗,咋解决的呢,我现在能读部分ID信息但是总的是不对的,

所属标签

相似问题

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