nrfjprog failed - reading QSPI Flash (W25Q32JVIQ)

I am attempting to use nrfjprog to test my QSPI Flash.  Here is the QSPI wiring connection:

P0.24 CS (chip select)
P0.19 CLK (clock)
P0.21 IO0
P0.22 IO1
P0.23 IO2
P1.00 IO3

Here is the command that I used for my test and I have attached the log file.

nrfjprog -f nrf52 --qspiini QspiDefault.ini --readqspi test.txt --log
ERROR: [SeggerBackend] - JLinkARM.dll ReadMemU32 detected a read error 1.
ERROR: [SeggerBackend] - This typically indicates the read was blocked by a memory protection mechanism.
ERROR: [SeggerBackend] - JLinkARM.dll ReadMemU32 detected a read error 1.
ERROR: [SeggerBackend] - This typically indicates the read was blocked by a memory protection mechanism.
ERROR: [SeggerBackend] - JLinkARM.dll ReadMemU32 detected a read error 1.
ERROR: [SeggerBackend] - This typically indicates the read was blocked by a memory protection mechanism.
ERROR: [SeggerBackend] - JLinkARM.dll ReadMemU32 detected a read error 1.
ERROR: [SeggerBackend] - This typically indicates the read was blocked by a memory protection mechanism.
ERROR: [SeggerBackend] - JLinkARM.dll ReadMemU32 detected a read error 1.
ERROR: [SeggerBackend] - This typically indicates the read was blocked by a memory protection mechanism.
ERROR: nrfjprog failed for an unknown reason. Run the same command again with
ERROR: argument --log, contact Nordic Semiconductor and provide the generated
ERROR: log.log file to them.

And here is the QspiDefault.ini .

; nrfjprog QSPI configuration file.

[DEFAULT_CONFIGURATION]
; Define the capacity of the flash memory device in bytes. Set to 0 if no external memory device is present in your board.
MemSize = 0x400000

; Define the desired ReadMode. Valid options are FASTREAD, READ2O, READ2IO, READ4O and READ4IO
ReadMode = READ4IO

; Define the desired WriteMode. Valid options are PP, PP2O, PP4O and PP4IO
WriteMode = PP4O

; Define the desired AddressMode. Valid options are BIT24 and BIT32
AddressMode = BIT24

; Define the desired Frequency. Valid options are M2, M4, M8, M16 and M32
Frequency = M32

; Define the desired SPI mode. Valid options are MODE0 and MODE3
SpiMode = MODE0

; Define the desired SckDelay. Valid options are in the range 0 to 255
SckDelay = 0x01

; Define SPI interface timing. Valid options are in the range of 0 to 7.
; This argument is only used for devices where the dll function NRFJPROG_qspi_set_rx_delay() is supported.
RxDelay = 2

; Define the desired IO level for DIO2 and DIO3 during a custom instruction. Valid options are LEVEL_HIGH and LEVEL_LOW
CustomInstructionIO2Level = LEVEL_LOW
CustomInstructionIO3Level = LEVEL_HIGH

; Define the assigned pins for the QSPI peripheral. Valid options are those existing in your device
; For nRF53, QSPI pins are not configurable and these values are ignored.
CSNPin = 24
CSNPort = 0
SCKPin = 19
SCKPort = 0
DIO0Pin = 21
DIO0Port = 0
DIO1Pin = 22
DIO1Port = 0
DIO2Pin = 23
DIO2Port = 0
DIO3Pin = 0
DIO3Port = 1

; Define the Index of the Write In Progress (WIP) bit in the status register. Valid options are in the range of 0 to 7.
WIPIndex = 0

; Define page size for commands. Valid sizes are PAGE256 and PAGE512.
PPSize = PAGE256

; Custom instructions to send to the external memory after initialization. Format is instruction code plus data to send in between optional brakets. 
; These instructions will be executed each time the qspi peripheral is initiated by nrfjprog. 
; To improve execution speed on consecutive interations with QSPI, you can run nrfjprog once with custom initialization, and then comment out the lines below.
; Numbers can be given in decimal, hex (starting with either 0x or 0X) and binary (starting with either 0b or 0B) formats. 
; The custom instructions will be executed in the order found. 
InitializationCustomInstruction =  0x06
InitializationCustomInstruction =  0x31, [0x02]
0830.log.log

Thank you for any advice and recommendations.

Related