我用的STM32103FSMC总线控制CH374T,CS连接NE4 A0连接在A2上。 地址定义: #define CH374_BASE_ADDR 0x6C000000 #define CH374_IDX_PORT (*((volatile UINT16 *) (CH374_BASE_ADDR + 0x08))) /* CH374索引端口的I/O地址 */ #define CH374_DAT_PORT (*((volatile UINT16 *) (CH374_BASE_ADDR ))) /* CH374数据端口的I/O地址 */ FSMC时序初始化: p.FSMC_AddressSetupTime = 1; p.FSMC_AddressHoldTime = 0; p.FSMC_DataSetupTime = 2; p.FSMC_BusTurnAroundDuration = 0; p.FSMC_CLKDivision = 0; p.FSMC_DataLatency = 0; p.FSMC_AccessMode = FSMC_AccessMode_B; 其他IO口定义: RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOG | RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF | RCC_APB2Periph_AFIO, ENABLE); /*-- GPIO Configuration ------------------------------------------------------*/ /* ch374 Data lines configuration */ 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_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 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);
/* ch374 Address lines configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 ; GPIO_Init(GPIOF, &GPIO_InitStructure); /* NE4 configuration */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_Init(GPIOG, &GPIO_InitStructure); 每次仿真的时候执行 i = CH374_READ_REGISTER(REG_SYS_INFO); if((i & 0x03)!= 0x01 ) return ; // 读取系统信息寄存器; 最后两位读出来都是01,但是执行库函数 CH374LibInit( ) 每次都是返回的0x81。 我自己画了一块小板子,只有CH374跟开发板飞线测试的。 期待回答。