标题:
stm32f103vct6 通过FSMC连接DM9000a,读取厂商id错了
[打印本页]
作者:
cuicaifeng
时间:
2013-7-5 14:22
标题:
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;
}
作者:
baikeeditor
时间:
2013-8-1 14:32
读取厂商ID,先要RST复位
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0