This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM814x: Why the GPMC data bus keep the previous value after Nor flash read opertion

Hi,

My customer found after DM814x GPMC reads nor flash, the GPMC data bus will keep the previous value. But in Nor flash data sheet, after read operation, the nor flash data bus will be in high Z status. It seems that the DM814x GPMC keeps the value on data bus after read operation. Why this happens? Is this normal? We expected that GPMC didn't keep the value on data bus in this case.

Below is copied from one nor flash datasheet.

Pls correct me if I miss anything.

  • Chris,

    Could you give us the customer GPMC configuration?  This is one of the configuration that work for our customer:

                                  .gpmc_nor_config.GpmcClkDivider == 0;
                                  .gpmc_nor_config.TimeParaGranularity == 0;
                                  .gpmc_nor_config.DeviceSize == device_size;
                                  .gpmc_nor_config.MuxAddData == 0x0;
                                  .gpmc_nor_config.WaitMonitoringTime == wait_time;
                                  .gpmc_nor_config.WaitWriteMonitoring == 0;
                                  .gpmc_nor_config.WaitReadMonitoring == 0;
                                  .gpmc_nor_config.ClkActivationTime == 0;
                                  .gpmc_nor_config.ADVExtraDelay == 0;
                                  .gpmc_nor_config.WEExtraDelay == 0;
                                  .gpmc_nor_config.AttachedDevicePageLength == page_length;
                                  .gpmc_nor_config.WriteType ==  0; -- Async
                                  .gpmc_nor_config.WriteMultiple == 0;
                                  .gpmc_nor_config.ReadType == 0; -- Async
                                  .gpmc_nor_config.ReadMultiple == 0;
                                  .gpmc_nor_config.WrapBurst == wrap_burst;
                                  .gpmc_nor_config.AccessTime == 2;
                    .gpmc_nor_config.ADVOnTime == 0;
                    .gpmc_nor_config.ADVRdOffTime == 1;
                    .gpmc_nor_config.ADVWrOffTime == 1;
                    .gpmc_nor_config.OEOnTime == 1;
                    .gpmc_nor_config.WEOnTime == 1;
                    .gpmc_nor_config.OEOffTime == 2;
                    .gpmc_nor_config.WEOffTime == 2;
                    .gpmc_nor_config.RdCycleTime == 3;
                    .gpmc_nor_config.WrCycleTime == 3;
                                  .gpmc_nor_config.BaseAddr == 0x0;
                                  .gpmc_nor_config.MaskAddr == 0x0;

    BR,

    Viet

  • That behavior is expected.  It is to reduce power.  Please read in the TRM Section 10.2.4.9.10 Bus Keeping Support.