feitianhu 发表于 2013-3-21 21:16:35

Stm32f103vet6 fsmc读取dm9000cep id 总出错 死循环 求指导 不胜感激

Stm32f103vet6 + dm9000cep 利用fsmc总线方式读取id时总是进入一个hardFault_Handler(void)的死循环中 我的原理图的连接方式如下:
CMD--PD13(FSMC_A18)
INT--PD11(FSMC_A16)
IOW--PD5(FSMC_NWE)
IOR--PD4(FSMC_NOE)
CS---PD7(FSMC_NE1
RST—NRST
D0---PD14(FSMC_D0)
D1---PD15(FSMC_D1)
D2---PD0(FSMC_D2)
D3---PD1(FSMC_D3)
D4---PE7(FSMC_D4)
D5---PE8(FSMC_D5)
D6---PE9(FSMC_D6)
D7---PE10(FSMC_D7)
D8---PE11(FSMC_D8)
D9---PE12(FSMC_D9)
D10---PE13(FSMC_D10)
D11---PE14(FSMC_D11)
D12---PE15(FSMC_D12)
D13---PD8(FSMC_D13)
D14---PD9(FSMC_D14)
D15---PD10(FSMC_D15)

FSMC 的配置部分代码如下:

GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE , ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | 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);

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);

//cmd 复用推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_Init(GPIOD, &GPIO_InitStructure);

feitianhu 发表于 2013-3-21 21:17:16

       /*!< NOE and NWE configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
GPIO_Init(GPIOD, &GPIO_InitStructure);

//NE1        
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_Init(GPIOD, &GPIO_InitStructure);

//INT       
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOD, &GPIO_InitStructure);


FSMC_NORSRAMInitTypeDefFSMC_NORSRAMInitStructure;
FSMC_NORSRAMTimingInitTypeDefFSMC_NORSRAMTimingInitStructure;

        /*-- FSMC Configuration ------------------------------------------------------*/
        /*----------------------- SRAM Bank 1 ----------------------------------------*/
        /* FSMC_Bank1_NORSRAM4 configuration */
        FSMC_NORSRAMTimingInitStructure.FSMC_AddressSetupTime = 0X05;
        FSMC_NORSRAMTimingInitStructure.FSMC_AddressHoldTime = 0;
        FSMC_NORSRAMTimingInitStructure.FSMC_DataSetupTime = 0X07;
        FSMC_NORSRAMTimingInitStructure.FSMC_BusTurnAroundDuration = 0;
        FSMC_NORSRAMTimingInitStructure.FSMC_CLKDivision = 0;
        FSMC_NORSRAMTimingInitStructure.FSMC_DataLatency = 0;
        FSMC_NORSRAMTimingInitStructure.FSMC_AccessMode = FSMC_AccessMode_D;


FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM2;
        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_ExtendedMode = FSMC_ExtendedMode_Disable;
        FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
        FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct= &FSMC_NORSRAMTimingInitStructure;
        FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct= &FSMC_NORSRAMTimingInitStructure;

        FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);

        FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM2, ENABLE);

qftek 发表于 2013-4-10 10:30:35

原因很多,本例可能性较大是 IO配置出错,软件IO与硬件设计不匹配。
读数据时,由于IO配置出错,导致内存溢出,数据越位。

DM9000CEP资了下载地址:
http://pan.baidu.com/share/link?shareid=501050&uk=2553229069

DAVICOM 中国指定代理 DM9000AEP DM9000CEP全程技术支持。
STM32+DM9000CEP uIP,LwIP协议移植支持。
Jonny.chu@qftek.comTel:13554902206



huatong 发表于 2013-4-20 18:00:45

每次看到库函数就头痛,程序太长了。所以习惯操作寄存器,起码少打很多字。

lpdpzc 发表于 2015-7-6 21:25:09

qftek 发表于 2013-4-10 10:30
原因很多,本例可能性较大是 IO配置出错,软件IO与硬件设计不匹配。
读数据时,由于IO配置出错,导致内存溢 ...

能否提供下DM9000CEP的例程啊,你传的好多资料连接都不在了,谢谢
页: [1]
查看完整版本: Stm32f103vet6 fsmc读取dm9000cep id 总出错 死循环 求指导 不胜感激