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

查看: 3685|回复: 2

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

[复制链接]

2

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
2018-5-22
发表于 2012-12-26 13:08:00 | 显示全部楼层 |阅读模式
我的连接方式: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

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
2018-5-22
 楼主| 发表于 2012-12-26 13:30:30 | 显示全部楼层

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

恳请高手解答,谢谢
回复 支持 反对

使用道具 举报

0

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-9-28 10:07:31 | 显示全部楼层

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

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

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版