完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,
如何将SPI IP配置为Slave。 https://www.xilinx.com/support/documentation/ip_documentation/axi_quad_spi/v3_2/pg153-axi-quad-spi.pdf 如第84页所述,我取消选中“启用主模式”并使用标准配置。 请参阅附件中的方框图。 我想与外部spi master通信而不是写flash。 并使用以下代码。 [码] ************************************************** ************ / / *****************************包含档案****************** *************** / #include“xparameters.h”/ * XPAR参数* / #include“xspi.h”/ * SPI设备驱动程序* / #include“xspi_l.h” / **************************常数定义********************* ******** / / **以下常量映射到* xparameters.h文件中创建的XPAR参数。 它们在这里定义,以便用户可以在一个地方轻松*更改所有需要的参数。* / #define SPI_DEVICE_ID XPAR_SPI_0_DEVICE_ID / *****************宏(内联函数)定义********************* / / **************************功能原型********************* ********* / int SpiPolledExample(XSpi * SpiInstancePtr,u16 SpiDeviceId); / **************************变量定义********************* ******** / / **支持设备驱动程序的实例是全局的,每次程序运行时*都被初始化为零。* / static XSpi SpiInstance; / * SPI设备的实例* / / **以下变量用于读取和写入Spi设备,它们是全局的,以避免堆栈上有大缓冲区。* / u8 ReadBuffer; u8 WriteBuffer; / ******************* **************************** // ****调用Spi轮询示例的主要功能。** @param无** @return XST_SUCCESS如果成功,否则XST_FAILURE。** @note无************************************ ******************************************* / int main(void){ int状态; / **运行Spi轮询示例。* / Status = SpiPolledExample(& SpiInstance,SPI_DEVICE_ID); if(Status!= XST_SUCCESS){return XST_FAILURE;} 返回XST_SUCCESS;} / ******************* **************************** // ****此函数对Spi设备和驱动程序进行最小测试,作为*设计 例。 此函数的目的是说明如何使用轮询模式使用* XSpi组件。**此函数发送数据并期望接收相同的数据。*** @param SpiInstancePtr是指向Spi组件实例的指针。 * @param SpiDeviceId是Spi设备的设备ID,是xparameters.h的* XPAR__DEVICE_ID值。** @return XST_SUCCESS如果成功,否则XST_FAILURE。** @ note **此函数包含无限循环,如果 Spi设备不工作,可能永远不会返回。*********************************** **************************************** / int SpiPolledExample(XSpi * SpiInstancePtr,u16 SpiDeviceId ){int Status; u32 Count; u8 Test; XSpi_Config * ConfigPtr; / *指向配置数据的指针* / / **初始化SPI驱动程序以便可以使用。* / ConfigPtr = XSpi_LookupConfig(SpiDeviceId); if(ConfigPtr == NULL){return XST_DEVICE_NOT_FOUND;} Status = XSpi_CfgInitialize(SpiInstancePtr,ConfigPtr,ConfigPtr-> BaseAddress); if(Status!= XST_SUCCESS){return XST_FAILURE;} / **执行自检以确保硬件正确构建。* / Status = XSpi_SelfTest(SpiInstancePtr); if(Status!= XST_SUCCESS){return XST_FAILURE; // xil_printf(“xyz n r n”); } / **仅在标准SPI模式下运行环回测试。* / if(SpiInstancePtr-> SpiMode!= XSP_STANDARD_MODE){return XST_SUCCESS; // xil_printf(“xyz n r”);} / **设置Spi设备assalve参见第25和26 * / XSpi_SetControlReg(& Spi,0x02); / **启动SPI驱动程序以启用设备。* / XSpi_Start(SpiInstancePtr); / **禁用全局中断以使用轮询模式操作* / XSpi_IntrGlobalDisable(SpiInstancePtr); / * / **发送/接收1字节数据。* / XSpi_Transfer(SpiInstancePtr,WriteBuffer,ReadBuffer,1); [/码] 我也不清楚,它们之间有什么区别 XSpi_Transfer(SpiInstancePtr,WriteBuffer,ReadBuffer,1); XSpi_Transfer(SpiInstancePtr,ReadBuffer,ReadBuffer,1); 和 XSpi_WriteReg(BaseAddress,RegOffset,RegisterValue); XSpi_ReadReg(BaseAddress,RegOffset); 阅读和写作,当我们使用哪一个? |
|
相关推荐
3个回答
|
|
XPS_SPI是AXI Quad SPI IP的旧版本。
您现在正在使用正确的IP。您是否使用相同的闪存进行配置和数据存储? 如果是,您是否在IP中启用了STARTUP原语。请共享您的.xci文件。 -------------------------------------------------- ---------------------------------------------请将帖子标记为 如果提供的信息能够回答您的问题/解决您的问题,请“接受为解决方案”。给予您认为有用的帖子。 |
|
|
|
你好@ smarell
我想用它作为奴隶。 因此,应根据数据表第89页禁用启用STARTUP原语。 我不是用它作为闪光灯所以我不明白你的意思是什么: “您是否在配置和数据存储方面使用相同的闪存?” |
|
|
|
他们需要任何其他设置吗?
|
|
|
|
只有小组成员才能发言,加入小组>>
2378 浏览 7 评论
2793 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2260 浏览 9 评论
3334 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2426 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
751浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
537浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
361浏览 1评论
753浏览 0评论
1955浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 07:12 , Processed in 1.072015 second(s), Total 52, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号