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.

[FAQ] AM62x, AM62Px, AM62D-Q1, AM64x, AM275x: Understanding Flash Device ID and Manufacture ID Reads

Part Number: PROCESSOR-SDK-AM62X


Tool/software:

In MCU+ SDK, during Flash Initialization, we read the device id and manufacture id.

Most common failure is "Unable to read Flash ID..."

Let us understand what parameters does the API Flash_norOspiReadID expects and how to debug the failures here.

  • The generic command structure(in order) to be sent to the flash to read the flash's device and manufacture id into a buffer is as follows:

    Part A + Part B + Part C

    Part A: Command to be sent + INVERSE/REPEAT/NONE of the first command

    Part B: Address to be sent(If required) + number of address bytes(if required)

    Part C: Dummy Cycles

    Let us pick few flashes to understand this with examples [Note the demonstration is for the protocol 8D-8D-8D]

    S28HS512T (Frequency: 200 MHz, Divider: 8, Then based on the datasheet, the dummy cycles value will be 3)

    Part A: 9Fh + REPEAT(9Fh)

    Part B: 00h + 4 Address Bytes(32 bits)

    Part C: 3 dummy cycles(can be seen from the datasheet)(Screenshot below)

    Inside Flash_norOspiReadID, the equation becomes:

    status = Flash_norOspiCmdRead(config, idCfg->cmd(9Fh), cmdAddr(00h), numAddrBytes(4), dummyBits(3), idCode, idNumBytes);

    MX25UW64 / MX25UW128

    Part A: 9Fh + INVERSE(60h)

    Part B: 00h + 4 Address Bytes(32 bits)

    Part C: 4 dummy cycles(can be seen from the datasheet)(Screenshot below)

    Inside Flash_norOspiReadID, the equation becomes:

    status = Flash_norOspiCmdRead(configidCfg->cmd(9Fh)cmdAddr(00h)numAddrBytes(4)dummyBits(4)idCodeidNumBytes);

    IS25LX128

    Part A: 9Fh + REPEAT(9Fh)

    Part B: OSPI_CMD_INVALID_ADDR (No Address is required)

    Part C: 8 dummy cycles(can be seen from the datasheet)(Screenshot below)

    Inside Flash_norOspiReadID, the equation becomes:

    status = Flash_norOspiCmdRead(configidCfg->cmd(9Fh)cmdAddr(INVALID)numAddrBytes(4)dummyBits(8)idCodeidNumBytes);
    Based on 3 different flashes demonstrated above, one can debug flash read ID API failures.