stm32f103vct6 通过FSMC连接DM9000a,读取厂商id错了
- UID
- 826437
|
stm32f103vct6 通过FSMC连接DM9000a,读取厂商id错了
我的连接方式: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 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;
} |
|
|
|
|
|
- UID
- 826524
- 性别
- 男
|
|
|
|
|
|