Hi @davec
I don't see anything wrong with your hardware design or the board files. So I spun up a similar design with port J6, working from the polled_example (Vivado/Vitis 2020.1 and version 4.6 of the xspi drivers). Debugging the modifications showed a problem where XSpi_Transfer was silently failing when checking if a slave was selected in the driver, and finding none. Make sure you are calling XSpi_SetSlaveSelect. See my main.c, below.
#include "xspi.h"
#include "xparameters.h"
#include "xil_printf.h"
#include "sleep.h"
int main() {
xil_printf("Hello World!\r\n");
XSpi device;
XSpi_Config *pcfg;
pcfg = XSpi_LookupConfig(XPAR_AXI_QUAD_SPI_0_DEVICE_ID);
XSpi_CfgInitialize(&device, pcfg, pcfg->BaseAddress);
XSpi_SetOptions(&device, XSP_MASTER_OPTION);
XSpi_Start(&device);
XSpi_IntrGlobalDisable(&device);
XSpi_SetSlaveSelect(&device, 0b1);
u8 bytes [4] = {0xDE,0xAD,0xBE,0xEF};
while (1) {
XSpi_Transfer(&device, bytes, NULL, 4);
usleep(1);
}
}
Hope this helps,
Arthur