AXI QSPI寄存器调试w25q64的XIP模式(进一步研究) - minichao9901/TangNano-20k-Zynq-7020 GitHub Wiki

结论

  • 这个IP,在普通模式下,用的是模式0; 在XIP模式下,用的是模式3。这是逻辑分析仪解析出来的,很奇怪。
  • 普通模式写,fifo深度最大是256(可配置为16或256),因此一次最多写入256 bytes。xip模式下,fifo深度不可以配,固定为64,也就是64bytes。
  • xip模式下,不可以用cdma驱动。如果用cdma驱动,虽然接口处逻辑分析仪抓到的波形正确,但是数据写不到ram中去。
  • xip模式下,可以按u8或者u32进行读。用for的方式读是可以的。
  • xip模式下,4线eb读结果错误。1线和2线读正确。
  • 因此,总结:需要用1线或者2线,以for的方式,按照u8/u32进行读。
void xip_for_read_test()
{
	for(int i=0; i<64; i++){
		*buffer8[i]=Xil_In8(QSPI_XIP_BASE+0x000000+i);
	}
	for(int i=0; i<64; i++){
		*buffer32[i]=Xil_In32(QSPI_XIP_BASE+0x000000+4*i);
	}
	for(int i=0; i<64; i++){
		printf("%x\r\n",*buffer8[i]);
	}
	for(int i=0; i<64; i++){
		printf("%x\r\n",*buffer32[i]);
	}
}

image image image

这种读最多只能读16个u32,也就是fifo深度是64。(如果读17个则报错,也就是说memory mapped一次只映射了16个u32地址,相当于是一个滑动的窗口)

image 这是是执行mrd 0x43c00000 16的效果。