-
紧急 !怎么缩短STM32H743 FMC 连续两次读PSRAM的时间间隔?
STM32H743 通过FMC 与FPGA通讯。设计成PSRAM,地址数据复用模式,16bit宽度。连续两次读操作时间间隔最小约130ns,与地址建立时间,地址保持时间,数据保持时间无关。而连续两次写操作时间间隔最小约10ns。请问怎么缩小两次读操作的时间间隔?
206浏览量 7回复量 关注量 -
GD32F103VET6 FMC 512KB flash,后256KB无法写入数据
使用GD32F103VET6芯片进行flash读写,经过测试发现flash写操作只能在前256KB,在后256KB则无法进行写操作,查看手册针对这两块内存的区别在指令零等待或延时,但是对读写操作上会存在什么区分呢?擦除使用fmc_page_erase接口如下是操作demo: /** * @description: EEPROM read data * @param : uint16_t write_addr: EEPROM addr(first addr: ) [input] * uint8_t *buffer: Temporary storage cache [output] * uint16_t length: len (unit: BYTE) [input] * @return: success: 0 | fail: 1 */ static int flash_write_word(uint32_t write_addr, const uint32_t *buffer, uint16_t length) { uint16_t i = 0; uint32_t *tempBuff = NULL; fmc_state_enum state = FMC_PGERR; if (buffer == NULL || ((write_addr % 4) != 0)) { return -1; } if ((write_addr) < FLASH_STORE_BASE_ADDR || ((write_addr + length * 4) >= (FLASH_BASE_ADDR + FLASH_SECTOR_SIGLE_SIZE * FLASH_SECTOR_TOTAL_SIZE))) { return -1; } tempBuff = (uint32_t *)buffer; fmc_unlock(); __disable_irq(); for (i = 0; i < length; i++) { fmc_flag_clear(FMC_FLAG_BANK0_END); fmc_flag_clear(FMC_FLAG_BANK0_WPERR); fmc_flag_clear(FMC_FLAG_BANK0_PGERR); state = fmc_word_program(write_addr + 4 * i, *(tempBuff + i)); if(state != FMC_READY) { __enable_irq(); fmc_lock(); return -1; } } __enable_irq(); fmc_lock(); return 0; }
3420浏览量 2回复量 关注量