AM2634-Q1: Flash memory write failure (W25Q64JV)

Part Number: AM2634-Q1
Other Parts Discussed in Thread: SYSCONFIG, AM2634

Tool/software:

Team,

My customer tried to program Winbond W25Q64JV which is listed as compatible flash memory but is facing write failure.
Customer referred this document and confirmed W25Q64JV is SFDP compatible by perming QSPI flash diag and getting the following log.

[Cortex_R5_0] [QSPI Flash Diagnostic Test] Starting ...
[QSPI Flash Diagnostic Test] Flash Manufacturer ID : 0xEF
[QSPI Flash Diagnostic Test] Flash Device ID       : 0x7017
[QSPI Flash Diagnostic Test] Executing Flash Erase on first block...
[QSPI Flash Diagnostic Test] Done !!!
[QSPI Flash Diagnostic Test] Performing Write-Read Test...
[QSPI Flash Diagnostic Test] Write-Read Test Passed!
[QSPI Flash Diagnostic Test] SFDP Information : 
================================================
                      SFDP                      
================================================
SFDP Major Revision                       : 0x1
SFDP Minor Revision                       : 0x5
Number of Parameter Headers in this Table : 1

Types of Additional Parameter Tables in this flash
---------------------------------------------------

{

	"flashSize": "8388608",
	"flashPageSize": "256",
	"flashManfId": "0xEF",
	"flashDeviceId": "0x7017",
	"flashBlockSize": "65536",
	"flashSectorSize": "4096",
	"cmdBlockErase3B": "0xD8",
	"cmdBlockErase4B": "0xD8",
	"cmdSectorErase3B": "0x20",
	"cmdSectorErase4B": "0x20",
	"protos": {
		"p111": {
			"isDtr": false,
			"cmdRd": "0x03",
			"cmdWr": "0x02",
			"modeClksCmd": 0,
			"modeClksRd": 0,
			"dummyClksCmd": 0,
			"dummyClksRd": 0,
			"enableType": "0",
			"enableSeq": "0x00",
			"dummyCfg": null,
			"protoCfg": null,
			"strDtrCfg": null,
		},
		"p112": {
			"isDtr": false,
			"cmdRd": "0x3B",
			"cmdWr": "0x02",
			"modeClksCmd": 0,
			"modeClksRd": 0,
			"dummyClksCmd": 0,
			"dummyClksRd": 8,
			"enableType": "0",
			"enableSeq": "0x00",
			"dummyCfg": null,
			"protoCfg": null,
			"strDtrCfg": null,
		},
		"p114": {
			"isDtr": false,
			"cmdRd": "0x6B",
			"cmdWr": "0x02",
			"modeClksCmd": 0,
			"modeClksRd": 0,
			"dummyClksCmd": 0,
			"dummyClksRd": 8,
			"enableType": "4",
			"enableSeq": "0x00",
			"dummyCfg": null,
			"protoCfg": null,
			"strDtrCfg": null,
		},
		"p118": null,
		"p444s": null,
		"p444d": null,
		"p888s": null,
		"p888d": null,
		"pCustom": null
	},
	"addrByteSupport": "0",
	"fourByteAddrEnSeq": "0x80",
	"resetType": "0x30",
	"cmdWren": "0x06",
	"cmdRdsr": "0x05",
	"srWip": 0,
	"srWel": 1,
	"cmdChipErase": "0xC7",
	"flashDeviceBusyTimeout": 20000000,
	"flashPageProgTimeout": 704
}

All tests have passed!!

Then customer saved JSON part in this file and tried to load it but it doesn't work. The parameters are not updated and error is happening at saving SYSCONFIG.

Looking at the SDK document, there is only Infineon's flash memory. Is the Winbond's W25Q on AM2634?

Regards,
Nobuhiko Wasa

  • Hi,

    Then customer saved JSON part in this file and tried to load it but it doesn't work.

    Could you let me know what is trouble faced while uploading the json file?

    Can you also please share the sysconfig as well that is used by the customer.

    Regards,

    Aswin

  • Hi Aswin,

    Now customer can write to Winbond's W25Q64JV by referring the following e2e thread;
    AM2434: QSPI Flash Driver
    But there are some differences between the SYSCONFIG picture in the above thread and what customer got by Flash Diag log. Can you please clarify the followings?

    1. Erase Configurations: The SYSCONFIG picture shows the flash block size is 32768 but customer got 65536 in the diag log. WQ25Q64JV datasheet expresses it is 64kB. Why does SYSCONFIG above show different value?

    2. Protocol Enable Configuration: The SYSCONFIG picture shows "Write/Page Program Command" is 0x32, which is Quad Input Page Program. Customer would like to make sure if this is right option. In that case, what is the right option for Quad Enable Type? The SYSCONFIG picture shows 6 but customer thinks this should be 4 based on SYSCONFIG instruction. 

    3. Advance Flash Configuration: Is it better to set longer value than the diag log to "Flash Busy Timeout"? Is it better to set shorter value than the diag log to "Flash Page Program Timeout"?

    Here is the customer's Flash Diag log.

    {
    
            "flashSize": "8388608",
            "flashPageSize": "256",
            "flashManfId": "0xEF",
            "flashDeviceId": "0x7017",
            "flashBlockSize": "65536",
            "flashSectorSize": "4096",
            "cmdBlockErase3B": "0xD8",
            "cmdBlockErase4B": "0xD8",
            "cmdSectorErase3B": "0x20",
            "cmdSectorErase4B": "0x20",
            "protos": {
                    "p111": {
                            "isDtr": false,
                            "cmdRd": "0x03",
                            "cmdWr": "0x02",
                            "modeClksCmd": 0,
                            "modeClksRd": 0,
                            "dummyClksCmd": 0,
                            "dummyClksRd": 0,
                            "enableType": "0",
                            "enableSeq": "0x00",
                            "dummyCfg": null,
                            "protoCfg": null,
                            "strDtrCfg": null,
                    },
                    "p112": {
                            "isDtr": false,
                            "cmdRd": "0x3B",
                            "cmdWr": "0x02",
                            "modeClksCmd": 0,
                            "modeClksRd": 0,
                            "dummyClksCmd": 0,
                            "dummyClksRd": 8,
                            "enableType": "0",
                            "enableSeq": "0x00",
                            "dummyCfg": null,
                            "protoCfg": null,
                            "strDtrCfg": null,
                    },
                    "p114": {
                            "isDtr": false,
                            "cmdRd": "0x6B",
                            "cmdWr": "0x02",
                            "modeClksCmd": 0,
                            "modeClksRd": 0,
                            "dummyClksCmd": 0,
                            "dummyClksRd": 8,
                            "enableType": "4",
                            "enableSeq": "0x00",
                            "dummyCfg": null,
                            "protoCfg": null,
                            "strDtrCfg": null,
                    },
                    "p118": null,
                    "p444s": null,
                    "p444d": null,
                    "p888s": null,
                    "p888d": null,
                    "pCustom": null
            },
            "addrByteSupport": "0",
            "fourByteAddrEnSeq": "0x80",
            "resetType": "0x30",
            "cmdWren": "0x06",
            "cmdRdsr": "0x05",
            "srWip": 0,
            "srWel": 1,
            "cmdChipErase": "0xC7",
            "flashDeviceBusyTimeout": 20000000,
            "flashPageProgTimeout": 704
    }
    


    Regards,
    Nobuhiko Wasa

  • Hi,

    I suppose this is the datasheet used by the customer. I have attached it as a part of the next reply below.

    1. Erase Configurations: The SYSCONFIG picture shows the flash block size is 32768 but customer got 65536 in the diag log. WQ25Q64JV datasheet expresses it is 64kB. Why does SYSCONFIG above show different value?

    Checking the datasheet there is 32KB and 64KB block erase configurations. The differnece is that the command for these operations are different. So 64KB block erase size is also valid. Also the opcdoe for this erase is )xD8 which aligns with the flash datasheet as well. The reason why it shows only 64KB would be the diffrenece in the SFDP parsing logic between the devices.

    2. Protocol Enable Configuration: The SYSCONFIG picture shows "Write/Page Program Command" is 0x32, which is Quad Input Page Program. Customer would like to make sure if this is right option. In that case, what is the right option for Quad Enable Type? The SYSCONFIG picture shows 6 but customer thinks this should be 4 based on SYSCONFIG instruction. 

    ...

    The data sheets says QE is bit 1 of status register 2, so it would be 6.

    3. Advance Flash Configuration: Is it better to set longer value than the diag log to "Flash Busy Timeout"? Is it better to set shorter value than the diag log to "Flash Page Program Timeout"?

    If the flash operation takes the that much amount of time to process commands, then it means something is wrong. So I do not see the plus point in increasing the time out value beyonf the specified value.

    Regards,

    Aswin

  • This is the datasheet that I referred

    W25Q64JV RevM 12242024 Plus.pdf