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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版