完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1、STM32F103ZET6上配置的FSMC模拟8080用于刷新OLED(256*64),使用正常;2、移植至STM32F412RET6后无法使用,时钟、复用、FSMC均已配置,使用NE4、A0,配置写入命令地址为0x6C00000,写入数据地址为0x6C000001;错误现象为:①屏幕显示现象为雪花屏②用逻辑分析仪测得D0-D3数据线无信号输出,仅有高电平。配置已检查过多遍,麻烦各位给一些思路解决一下这个问题,感谢!
代码如下: /** RS(DC)——A0——PC3 RD——FSMC_NOE——PC5* WR——FSMC_NWE——PC2 D0——FSMC_D0——PB14* D1——FSMC_D1——PC6 D2——FSMC_D2——PC11* D3——FSMC_D3——PC12 D4——FSMC_D4——PA2* D5——FSMC_D5——PA3 D6——FSMC_D6——PA4* D7——FSMC_D7——PA5 CS——FSMC_NE4——PC4* RESET——PB13*//*******************************************************************************@name :InitOLED@brief :按键初始化@param :None@return :None*******************************************************************************/void InitOLED (void){ GPIO_InitTypeDef GPIO_InitStructure; /*GPIOA、B、C时钟使能*/ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC, ENABLE); /*WR、RS、CS、RD、D1、D2、D3推挽复用输出*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_11|GPIO_Pin_12; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOC, GPIO_InitStructure); /*D0推挽复用输出*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; GPIO_Init(GPIOB, GPIO_InitStructure); /*D4、D5、D6、D7推挽复用输出*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5; GPIO_Init(GPIOA, GPIO_InitStructure); GPIO_PinAFConfig(GPIOC, GPIO_PinSource2, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOC, GPIO_PinSource3, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOC, GPIO_PinSource4, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOC, GPIO_PinSource5, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOC, GPIO_PinSource12, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_FSMC); GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_FSMC); /*RESET推挽输出*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOB, GPIO_InitStructure); InitFSMC();}void InitFSMC(void){ FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FSMC_NORSRAMtimingInitTypeDef readWriteTiming; FSMC_NORSRAMTimingInitTypeDef writeTiming; /*FSMC时钟使能*/ RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC,ENABLE); /*读时序设置*/ readWriteTiming.FSMC_AddressSetupTime = 0x01; readWriteTiming.FSMC_AddressHoldTime = 0x00; readWriteTiming.FSMC_DataSetupTime = 0x02; readWriteTiming.FSMC_BusTurnAroundDuration = 0x00; readWriteTiming.FSMC_CLKDivision = 0x00; readWriteTiming.FSMC_DataLatency = 0x00; readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_A; /*写时序设置*/ writeTiming.FSMC_AddressSetupTime = 0x01; writeTiming.FSMC_AddressHoldTime = 0x00; writeTiming.FSMC_DataSetupTime = 0x02; writeTiming.FSMC_BusTurnAroundDuration = 0x00; writeTiming.FSMC_CLKDivision = 0x00; writeTiming.FSMC_DataLatency = 0x00; writeTiming.FSMC_AccessMode = FSMC_AccessMode_A; FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4; //使用NE4 FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; //不复用数据地址 FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM; // FSMC_MemoryType_SRAM; FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b; //存储器数据宽度为8bit FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; // FSMC_BurstAccessMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low; FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable; 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_Enable; //读写使用不同的时序 FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = readWriteTiming; //读写时序 FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = writeTiming; //写时序 FSMC_NORSRAMInit( FSMC_NORSRAMInitStructure); //初始化FSMC配置 FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE); //使能BANK1}/*******************************************************************************@name :Write_cmd@brief :SPI写入命令函数@param :None@return :None*******************************************************************************/void Write_cmd(u8 data){ data=data; * (__IO u8 *)(FSMC_ADDR_CMD) = data;}/*******************************************************************************@name :Write_Data@brief :SPI写入数据函数@param :None@return :None*******************************************************************************/void Write_Data(u8 data){ data=data; * (__IO u8 *)(FSMC_ADDR_DATA) = data;}#define FSMC_ADDR_DATA ((u32) 0x6C000000 | (1<<0))#define FSMC_ADDR_CMD ((u32) 0x6C000000) |
|
相关推荐
1个回答
|
|
但以下是一些常见的问题和解决思路,您可以尝试一下:
1. 确保FSMC时钟源配置正确:如果您的代码中没有提供时钟配置的部分,可以确保FSMC时钟源配置为HCLK时钟,并且对应的GPIO时钟也已经配置。 2. 确保FSMC引脚配置正确:请再次检查你的引脚配置,确保D0-D3引脚配置为AF推挽输出模式,并且使用GPIO_Init函数进行了正确的初始化。 3. 确保写入地址的配置正确:请确保写入命令和数据的地址是正确的,以免写入到错误的地址上。 4. 确保正确发送命令和数据:请检查你的写入函数,确保命令和数据是按照正确的时序和顺序发送的。 5. 根据你的描述,你的屏幕显示现象为雪花屏,可以尝试增加一个延迟函数,看是否能够解决。因为可能是数据发送速度过快导致的问题,增加延迟可以测试一下。 6. 对比F1和F4的FSMC配置:再次对比你的F1和F4的FSMC配置,确保配置没有遗漏或错误。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1780 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1081 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1679 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
556浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 00:36 , Processed in 0.824030 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号