SPRUJ28E November 2021 – September 2024 AM68 , AM68A , TDA4AL-Q1 , TDA4VE-Q1 , TDA4VL-Q1
Step | Description |
---|---|
1. | Wait 150 µs for RAM to power up after reset. The HyperRAM does not provide any feedback on reset/ready state to the HBMC . |
2. | Ensure that the FIFO RAM auto-initialization is complete by reading the MCU_FSS0_HPB0_SS_RAM_STAT_REG[0] INIT_DONE bit . |
3. | Lock MDLL: |
- To ensure that the MDLL in the HyperBus is locked, the reset to the HyperBus module should be de-asserted only after all the clock inputs are stable at the desired operating frequency (see MCU_FSS0_HPB0 Clocks and Resets). The MDLL can lose the lock if the frequencies of the clock inputs to the HyperBus module are changed during operation. | |
- To ensure that the MDLL is stabilized, the following sequence is required. Boot code should attempt to read 64 bytes of RAM data, for 16 iterations, and if the data is the same in 4 successive iterations, the DLL can be considered to be stabilized and the software proceed with normal RAM access . | |
- The MCU_FSS0_HPB0_SS_DLL_STAT_REG[0] MDLL_LOCK and MCU_FSS0_HPB0_SS_DLL_STAT_REG[1] SDL_LOCK bits can be used to determine if the master delay line and slave delay line have locked, respectively . | |
4. | Initialize Memory Configuration register (MCU_FSS0_HPB0_MC_MCR_y): |
- MCU_FSS0_HPB0_MC_MCR_y[31] MAXEN bit and MCU_FSS0_HPB0_MC_MCR_y[26-18] MAXLEN bit field based on burst transaction length to memory. | |
- MCU_FSS0_HPB0_MC_MCR_y[17] TCMO = 0h, since HBMC does not support command merging for HyperRAM accesses. | |
- MCU_FSS0_HPB0_MC_MCR_y[16] ACS = 0h, to set 'No asymmetry cache system support'. | |
- MCU_FSS0_HPB0_MC_MCR_y[5] CRT = 0h or 1h, depending on what needs to be accessed (memory or register space). | |
- MCU_FSS0_HPB0_MC_MCR_y[4] DEVTYPE = 1h, to set 'HyperRAM' instead 'HyperFlash'. | |
- MCU_FSS0_HPB0_MC_MCR_y[1-0] WRAPSIZE = 00h, since the HBMC does not support wrap bursts. | |
5. | Initialize MCU_FSS0_HPB0_MC_MTR_y register based on timing of the memory device being used. |
6. | Initialize MCU_FSS0_HPB0_MC_MCR_y register: |
- MCU_FSS0_HPB0_MC_MCR_y[31-24] A_MSB = 8 MSB bits of memory address space. This will define the start of the 16 MB address region in the system memory where the HyperRAM can be accesed. The controller will initiate HyperRAM access to any memory mapped access in this range. | |
7. | Check the MCU_FSS0_HPB0_SS_DLL_STAT_REG[0] MDLL_LOCK bit to ensure the Master DLL is locked. |
8. | Normal HyperRAM access can be performed after this. |
9. | The HyperRAM device registers can be accessed by read/write transactions to the offset from the base address as specified in the device command summary table with MCU_FSS0_HPB0_MC_MCR_y[5] CRT bit set to register space. |
10. | The HyperRAM memory data array can be read/written to as memory mapped access with MCU_FSS0_HPB0_MC_MCR_y[5] CRT bit set to memory space. |
HyperRAM devices have a 150 µs startup time. Software needs to wait this duration after reset to initiate transactions to a HyperRAM device.