-
请教下GD32H7系列的外部SRAM读写 EXMC初始化问题 赏300家园币
EXMC初始化之后,对外部SRAM的操作没有效果,以下是代码部分(nor_region传的是EXMC_BANK0_NORSRAM_REGION0)。 请大佬们看看是什么问题。 void exmc_norflash_init(uint32_t nor_region) { exmc_norsram_parameter_struct nor_init_struct; exmc_norsram_timing_parameter_struct nor_timing_init_struct; gpio_deinit(GPIOB); gpio_deinit(GPIOD); gpio_deinit(GPIOE); gpio_deinit(GPIOF); gpio_deinit(GPIOG); exmc_norsram_deinit(nor_region); /* EXMC clock enable */ rcu_periph_clock_enable(RCU_EXMC); /* GPIO clock enable */ rcu_periph_clock_enable(RCU_GPIOB); rcu_periph_clock_enable(RCU_GPIOD); rcu_periph_clock_enable(RCU_GPIOE); rcu_periph_clock_enable(RCU_GPIOF); rcu_periph_clock_enable(RCU_GPIOG); /* configure GPIO D[0-15] */ gpio_af_set(GPIOD, GPIO_AF_12, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_14 | GPIO_PIN_15); gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_14 | GPIO_PIN_15); gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_14 | GPIO_PIN_15); gpio_af_set(GPIOE, GPIO_AF_12, 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_mode_set(GPIOE, GPIO_MODE_AF, GPIO_PUPD_PULLUP, 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_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, 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); /* configure GPIO A[0-23] */ gpio_af_set(GPIOF, GPIO_AF_12, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15); gpio_mode_set(GPIOF, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15); gpio_output_options_set(GPIOF, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15); gpio_af_set(GPIOG, GPIO_AF_12, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5); gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5); gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5); gpio_af_set(GPIOD, GPIO_AF_12, GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13); gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13); gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13); gpio_af_set(GPIOE, GPIO_AF_12, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6); gpio_mode_set(GPIOE, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6); gpio_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6); /* configure NOE NWE */ gpio_af_set(GPIOD, GPIO_AF_12, GPIO_PIN_4 | GPIO_PIN_5); gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_4 | GPIO_PIN_5); gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_4 | GPIO_PIN_5); /* configure NBL0-1 */ gpio_af_set(GPIOE, GPIO_AF_12, GPIO_PIN_0 | GPIO_PIN_1); gpio_mode_set(GPIOE, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_0 | GPIO_PIN_1); gpio_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_0 | GPIO_PIN_1); /* configure EXMC NE0*/ gpio_af_set(GPIOD, GPIO_AF_12, GPIO_PIN_7); gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_7); gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_7); /* configure CLK and NWAIT */ gpio_af_set(GPIOD, GPIO_AF_12, GPIO_PIN_3 | GPIO_PIN_6); gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_3 | GPIO_PIN_6); gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_100_220MHZ, GPIO_PIN_3 | GPIO_PIN_6); exmc_norsram_struct_para_init(&nor_init_struct); nor_timing_init_struct.asyn_access_mode = EXMC_ACCESS_MODE_A; nor_timing_init_struct.syn_data_latency = EXMC_DATALAT_6_CLK; nor_timing_init_struct.syn_clk_division = EXMC_SYN_CLOCK_RATIO_6_CLK; nor_timing_init_struct.bus_latency = 5; nor_timing_init_struct.asyn_data_setuptime = 80; nor_timing_init_struct.asyn_address_holdtime = 10; nor_timing_init_struct.asyn_address_setuptime = 10; /* configure EXMC bus parameters */ nor_init_struct.norsram_region = nor_region; nor_init_struct.address_data_mux = DISABLE; nor_init_struct.memory_type = EXMC_MEMORY_TYPE_SRAM; nor_init_struct.databus_width = EXMC_NOR_DATABUS_WIDTH_16B; nor_init_struct.burst_mode = DISABLE; nor_init_struct.nwait_polarity = EXMC_NWAIT_POLARITY_LOW; nor_init_struct.nwait_config = EXMC_NWAIT_CONFIG_BEFORE; nor_init_struct.memory_write = ENABLE; nor_init_struct.nwait_signal = DISABLE; nor_init_struct.extended_mode = DISABLE; nor_init_struct.asyn_wait = DISABLE; nor_init_struct.write_mode = EXMC_ASYN_WRITE; nor_init_struct.cram_page_size = EXMC_CRAM_AUTO_SPLIT; nor_init_struct.read_write_timing = &nor_timing_init_struct; nor_init_struct.write_timing = &nor_timing_init_struct; exmc_norsram_init(&nor_init_struct); exmc_norsram_enable(nor_region); }
6825浏览量 4回复量 关注量 -
问一下,CCM-SRAM程序执行加速器具体使用例子
[size=14px]网上查的stm32g474用于实时性能高的数字电源。 问一下,CCM-SRAM程序执行加速器具体使用例子[/size]
1504浏览量 2回复量 关注量 -
关于gd32f103rbt6sram的问题 sos
项目之前一直使用的STM32F103RBT6,后来移植到GD32F103RBT6,使用都正常,最近增加了一些功能,需要增加一些全局缓存区,结果发现编译无法通过,才发现已超出容量,对比之前st和gd能正常工作的两个版本,编译后那个ZI-data差别非常大,不会上传截图,文字给大家描述下,想问下大家这是什么情况,有遇到类似的么?gd32f103rbt6: Program Size: Code=44062 RO-data=4362 RW-data=136 ZI-data=19976 stm32f103rbt6: Program Size: Code=56310 RO-data=3882 RW-data=236 ZI-data=5556 为什么同样的全局变量缓存区,两个芯片编译后差别这么大?
1065浏览量 0回复量 关注量 -
关于GD32F450XX用EXMC与FPGA通信问题! sos
有大佬用过 GD32F450的EXMC通信吗?如果我想用用EXMC与FPGA进行通信,是用FSMC的 SRAM模式吗?能不能提供我一份SRAM初始化的代码给我?谢谢!
1958浏览量 0回复量 关注量 -
请教STM32中到底可以定义多少变量
是根据SRAM的大小来定的吗?还是象51那样也分DATA\IDATA,但又支持那样的修饰符,有时不敢定义太多变量,担心象51那样内存不够用。
17961浏览量 17回复量 关注量 -
HK32F103VET6使用FSMC刷屏问题 sos
HK32F103VET6替换STM32F103VET6使用FSMC刷屏出现花屏现象 在STM32下运行无此现象 已经排除外围元件问题 ,现在一批机器200多台已经出现不少于50台 出现这种情况 请问有朋友出现过这种问题吗? p.FSMC_AddressSetupTime = 0x02; p.FSMC_DataSetupTime = 0x05; p.FSMC_AccessMode = FSMC_AccessMode_B; p.FSMC_AddressHoldTime = 0x00; //µØÖ·±£³Öʱ¼ä p.FSMC_BusTurnAroundDuration = 0x00; p.FSMC_CLKDivision = 0x00; p.FSMC_DataLatency = 0x00; FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1; FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; 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 = &p; FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p; FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); /* Enable FSMC Bank1_SRAM Bank */ FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); 上面为FSMC初始化代码?各位大哥帮忙看看什么问题
1163浏览量 0回复量 关注量 -
如何外加SRAM?
根据官方参考设计画了硬件的板子,外加了一个32Mbit的SRAM。MCU是AT32F407VGT7,SRAM是VTI132。但是,根据官方的sample(XMC中的PSRAM例程),无法正常运行。 现在不知道该如何继续。
4025浏览量 7回复量 关注量 -
最近在用nuc980, 想用一下SDIC接口外扩sram,这个到底是怎么用呀?
最近在用nuc980, 想用一下SDIC接口外扩sram,这个到底是怎么用呀? 看了技术手册,SDRAM Interface Controller 没有看懂, 官网上也没有相关的实例原理图和代码 , 有谁用过,给讲解一下呢
874浏览量 1回复量 关注量