您的位置 首页 模拟

浅谈Zynq完成SPI接口规划

浅谈Zynq实现SPI接口设计-我们可以根据应用的要求来选择使用哪种方法实现SPI控制器。两种SPI的实现方式都支持四种SPI模式,并且都可以作为SPI主设备或SPI从设备。下表列出了它们之间的一些差异。

当咱们在规划中运用Zynq SoC或Zynq UltraScale + MPSoC时,可以有两种办法来完成SPI接口:

运用PS端的SPI控制器(PS端有两个SPI控制器)

在PL端运用装备成规范SPI通讯的AXI Quad SPI (QSPI) IP模块

咱们可以依据运用的要求来挑选运用哪种办法完成SPI控制器。两种SPI的完成办法都支撑四种SPI形式,而且都可以作为SPI主设备或SPI从设备。下表列出了它们之间的一些差异:

浅谈Zynq完成SPI接口规划

首要,咱们演示一下怎么运用PS端的SPI控制器进行SPI传输。在Zynq MIO configuraTIon选项卡中选中SPI控制器,这就将SPI包含在了规划中。在这个比如中,我将把SPI信号衔接到Digilent ARTY Z7开发板的SPI接口,这需求经过PL I/O运用EMIO。
 

浅谈Zynq完成SPI接口规划

图:启用SPI并将端口映射到EMIO


在挑选好相应的选项后,仅有要做的便是衔接SPI端口的I/O。具体要怎么进行衔接取决于咱们是需求装备一个SPI主设备仍是从设备。在SPI控制器上,每个SPI端口都有对应的可用输入(xxx_i)输出端口(xxx_o)。端口的正确衔接非常要害,假如衔接过错,当运转运用程序时,将得到彻底过错的运转成果,这或许需求花费咱们几个小时的时刻来寻觅问题的源头。别的,当装备成SPI从设备时,有一个名称为Slave Select的输入;而当用作SPI主设备时,将有三个挑选引脚。

当正确装备好I/O并创立了工程,咱们就可以运用运用软件中的SPI装备选项将SPI控制器装备成为主设备或从设备。运用PS SPI控制器装备和传输数据,需求运用由XSPIps.H界说的BSP(板卡支撑包)所供给的API接口。在第一个比如中,咱们将SPI控制器装备为SPI主设备。

默许情况下,SPI运用8位传输。可是,咱们也可以将传输装备成更大的16或32位。关于8位传输,咱们在C程序中可以运用u8数据类型。关于16位或32位传输,别离运用16位或32位对数据进行读写缓存。

一开始,这或许会导致一些问题或生成编译器正告,由于履行如下所示的两个数据传输API函数都需求发送和接纳缓冲区的数据类型为u8:

s32 XSpiPs_Transfer(XSpiPs *InstancePtr, u8 *SendBufPtr, u8 *RecvBufPtr, u32 ByteCount);

s32 XSpiPs_PolledTransfer(XSpiPs *InstancePtr, u8 *SendBufPtr, u8 *RecvBufPtr, u32 ByteCount);

为了处理运用u16和u32数据类型的问题,咱们需求将缓冲区转换为u8指针,如下所示:

XSpiPs_PolledTransfer(&SpiInstance, (u8*)&TxBuffer, (u8*)&RxBuffer, 8);

这样设置迁就使得咱们可以传输巨细为8,16或32位的数据了。为了演示这一设置,我将SPI主设备IO衔接到Digilent Digital Discovery口袋仪器来测验传输的数据。在运用软件中运用上述办法将数据宽度从8位变为16位。

浅谈Zynq完成SPI接口规划

图:Arty Z7开发板与Digital Discovery口袋仪器

浅谈Zynq完成SPI接口规划

图:Zynq SoC PS SPI主设备发送四个8位字

浅谈Zynq完成SPI接口规划

图:PS SPI主设备发送四个16位字

另一个完成SPI接口的办法是运用AXI QSPI IP核,运用这种办法需求在Vivado中进行的设置比较多,需求花费比较长的时刻。在AXI QSPI装备对话框中,咱们可以装备传输的宽度、频率和从设备的数量。最重要的一个选项便是挑选AXI QSPI IP核是作为SPI主设备仍是从设备。假如要装备成SPI主设备,就有必要选中enable master mode选项。假如要装备成为从设备,则有必要撤销该选项以保证SPISel输入引脚的存在。当SPI IP核作为从设备时,该引脚需求衔接到主设备的slave select.端口。

 

浅谈Zynq完成SPI接口规划

图:装备AXI Quad SPI

与PS SPI控制器相同,BSP也为SPI IP供给一个API接口。咱们可以用它来开发运用软件,这个API是在文件XSPI.h中界说的。作为比如的第二部分,我将运用这个API来装备AXI QSPI作为SPI从设备。

为了演示创立软件后AXI QSPI核可以正确的以SPI从设备办法进行作业。我再次运用Digilent Digital Discovery口袋仪器作为SPI主设备,使数据在两者之间传输。
 

浅谈Zynq完成SPI接口规划

图:SPI从设备收发数据(蓝色的数据由Zynq SPI Slave输出)

浅谈Zynq完成SPI接口规划

图:终究的block diagram

当然,假如运用Xilinx FPGA替代Zynq SoC或Zynq UltraScale MPSoC,则可以运用具有相同AXI QSPI装备的MicroBlaze软核来完成SPI接口。只需正确地将其界说为主设备或从设备即可。

        期望这篇文章可以协助你了解怎么运用这两种不同的办法创立主/从SPI接口。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/moni/339296.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部