• 71.Adam Taylor玩转MicroZed系列第82部分:简单通信接口第2部分


    By Adam Taylor

    从上周的博客开始,我们已经进入到Zedboard(而不是MicroZed)板上的OLED显示模块的编程了。然而在正式进入具体的OLED编程之前,我认为有必要验证我们是否已经为应用正确地配置了SPI端口。这个操作可以为我们后续的步骤减少很多时间,并且做起来也很容易。事实上它确实很简单,本篇博客中我会展示两种不同的方法。第一种方法中会通过Zynq SoC的MIO来与SPI管脚接口,而第二种方法则会通过EMIO。两者的不同之处在哪里呢?请继续往下看。

    我打算玩个小把戏。我将会把SPI0接口到Zynq SoC的EMIO上去,而把SPI1接口到MIO上去。利用Vivado可以轻松地实现上述操作。首先,使能SPI1,然后把它接口到MIO的10到15管脚。在Zedboard上这些管脚与PS MOD(JE)相连。SPI0将和PMOD JC相接口,这要求你在下拉菜单中选择EMIO。接着我们可以利用IO布线约束来把EMIO接口以驱动JC PMOD。然而如果你看了Zynq TRM——你确实应该多看看——你会发现如果你使用了EMIO,你需要把SPIx_SSI拉高。我已经使用了一个约束,如下所示:

    我们此时拥有两个SPI控制器来把数据驱动到PMOD端口。我们利用之前相同的软件来进行驱动,并且接下来步骤中的代码都很类似。(我们现在是第82期博客,最好是。)

    代码必须:
    • 为API支持包含相关的头文件,本例中是xspips.h
    • 定义SPI设备ID号
    • 声明正确SPI类型——XspiPs的全局实例

    在配置及使用SPI设备的函数中,代码必须:
    • 使用typ_XspiPs_Config声明配置实例
    • 使用SpiConfig = XSpiPs_LookupConfig((u16)SPI_DEVICE_ID);来查询配置
    • 使用XSpiPs_CfgInitialize(&SpiInstance,SpiConfig,SpiConfig->BaseAddress);来初始化配置。

    基本SPI设备初始化并配置好之后,我们就可以开始为我们需要的应用配置SPI控制器的操作了。第一件要做的事情就是配置好设置,使用
    XSpiPs_SetOptions()

    利用该函数我们可以设置主从模式,设置活动时钟和阶段选项,选择我们怎样执行从机选项,并且配置主机怎样开始。

    我们还需要设置分频器来给从机配置恰当的时钟频率。我们可以使用下面这个函数来实现:
    XSpiPs_SetClkPrescaler()

    如果你没有忘记,上周我们提到OLED的时序需要分频器最少设置为64。本例中,测试输出仅仅驱动一个示波器,因此出于博客写作的目的,我选择设置为256,即最大分频数。

    现在我们就可以用最简单的方式把数据发送到从机设备了,不管是使用中断驱动还是轮询传输方式。本例中我用的轮询方式,因为它用起来最简单,也很容易理解。

    在我创建的Github repository中已经上传了具体代码,而下面是探头连接到MIO和EMIO输出管脚上的结果:

    PMOD JC SPI数据时钟和数据(上方)EMIO

    PMOD JC SPI数据时钟和数据(上方)EMIO

    PMOD JE SPI时钟和数据(上方)MIO

    PMOD JE SPI时钟和数据(上方)MIO

    正如你所看到的那样,所有的捕获结果都是一样的。在时钟下降沿数据状态改变,在上升沿保持稳定,这正是OLED接口所需要的。

    我相信我们现在已经正确地配置了SPI,接着我们可以进阶到具体开发了。不管何时,永远有必要验证每一个开发环节,以此来减少风险。该例程也展示了如何使用EMIO管脚。在OLED工程中我们需要EMIO,同样在将来的开发中也会使用到它。

    此处你可以获取例程文件。

     现在,你可以方便地获取第一年的亚当·泰勒MicroZed开发板编年史Kindle电子书版本了,很实惠仅需7.5美元。点击这里

    原文链接:
    http://forums.xilinx.com/t5/Xcell-Daily-Blog/Adam-Taylor-s-MicroZed-ish-...

  • 相关阅读:
    高并发 内核优化
    mysql 读写分离
    Jmeter使用入门
    Jenkins+Jmeter+Ant接口持续集成
    Android客户端稳定性测试——Monkey
    SVN客户端项目递归删除.svn目录
    Windows 下 php5+apache+mysql5 手工搭建笔记
    熟悉常用的Linux操作
    C语言文法
    词法分析实验报告
  • 原文地址:https://www.cnblogs.com/geekite/p/5504675.html
Copyright © 2020-2023  润新知