I am working on interfacing Infineon XMC4700 with external SRAM CY7C1061G via EBU. External SRAM is connected on region CS1 0x64000000.
While testing i have observed that data written at memory location 0x64000000 is getting duplicated at location 0x64002000. Is this expected behaviour ? I could not find any information in Infineon user manual. Also there is no application note on EBU module.
I plan to allocate +ZI data by adding SRAM base address(0x64000000) as external device starting address in scatter file. However, my concern here is if data keeps mirroring after every 0x2000 location then its going to corrupt my data, and eventually my system will fall over.
I have asked question on Infineon XMC forum but I haven't had any response from Infineon team yet. I am bit lost here.
Does anyone have any experience on interfacing XMC4700 with SRAM via EBU ?
Please let me know if you need more information.
Below is the configuration of my EBU module
/ Zero the configuration structure before we set anything.
configuration.ebu_clk_config.raw0 = 0U;
configuration.ebu_mode_config.raw0 = 0U;
configuration.ebu_free_pins_to_gpio.raw0 = 0U;
// These values get written to the CLC register.
configuration.ebu_clk_config.ebu_clk_mode = 1U; //Fcpu is selected
configuration.ebu_clk_config.ebu_div2_clk_mode = 0U; //standard clocking mode selected
configuration.ebu_clk_config.ebu_clock_divide_rati o = 3U; //Divide by 4 ; Asynchronous cycle Fcpu/4 is used and Febu is not being used
// These values get written to the MODCON register.
configuration.ebu_mode_config.ebu_sdram_tristate = 1U;
configuration.ebu_mode_config.ebu_extlock = 1U;
configuration.ebu_mode_config.ebu_arbsync = 0U;
configuration.ebu_mode_config.ebu_arbitration_mode = 3U; // Master mode.
configuration.ebu_mode_config.bus_timeout_control = 0U;
configuration.ebu_mode_config.ebu_ale_mode = 0U;
// These values get written to the USERCON register.
configuration.ebu_free_pins_to_gpio.address_pins_g pio = 0x0U;
configuration.ebu_free_pins_to_gpio.adv_pin_gpio = 0U;
ebu_bus_read_config.raw0 = 0x40400000U; //EBU_REG_BUSRCON0
ebu_bus_read_config.raw1 = 0X32000189U; // EBU_REG_FPGA_BUSRAP0;
ebu_bus_write_config.raw0 = 0x40400000U; // WRCON
ebu_bus_write_config.raw1 = 0X32002101U; // WRAPR
XMC_EBU_AddressSelectEnable(XMC_EBU, 1U, EBU_CS1);
XMC_EBU_AddressSelectEnable(XMC_EBU, 2U, EBU_CS1);
XMC_EBU_AddressSelectDisable(XMC_EBU, 4U, EBU_CS1);
Any help is appreciated.
View all questions in Embedded forum