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 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-...
71.Adam Taylor玩转MicroZed系列第82部分:简单通信接口第2部分的更多相关文章
- 第25章 串行FLASH文件系统FatFs—零死角玩转STM32-F429系列
第25章 串行FLASH文件系统FatFs 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.c ...
- [Linux] PHP程序员玩转Linux系列-lnmp环境的搭建
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 在平常的工作中,我作为PHP程序员经常要搭建一下环境,这个环境就是Linux系统下安装nginx,php,mysql这三个软件,对软件进行 ...
- [Linux] PHP程序员玩转Linux系列-搭建代码开发环境
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 有些同学可能觉得我写的都是啥yum安装的,随便配置一下而已,没啥技术含量,我的目的 ...
- [Linux] PHP程序员玩转Linux系列-备份还原MySQL
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 前几天有个新闻,说是g ...
- [Linux] PHP程序员玩转Linux系列-自动备份与SVN
我的代码经常在开发修改,为了代码的安全性,比如哪天误删了文件,或者哪天改错东西了,可以恢复回来,我要搞代码备份.备份代码,我先做最简单的,使用linux的定时机制加shell命令打包文件,每天按日期保 ...
- [Linux] PHP程序员玩转Linux系列-nginx初学者引导
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- [Linux] PHP程序员玩转Linux系列-Linux和Windows安装nginx
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- [Linux] PHP程序员玩转Linux系列-Nginx中的HTTPS
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- [Linux] PHP程序员玩转Linux系列-使用supervisor实现守护进程
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
随机推荐
- Kafka在大型应用中的 20 项最佳实践
原标题:Kafka如何做到1秒处理1500万条消息? Apache Kafka 是一款流行的分布式数据流平台,它已经广泛地被诸如 New Relic(数据智能平台).Uber.Square(移动支付公 ...
- es6中对象转数组,转map
//对象转数组let array = Object.keys(userPermission).map(key=> userPermission[key]) console.log(array) ...
- 51nod 1799 二分答案(分块打表)
首先题目等价于求出满足运行二分程序后最后r=k的排列种数. 显然对于这样的二分程序,起作用的只有mid点,mid处的值决定了接下来要递归的子区间. 于是可以一遍二分求出有多少个mid点处的值<= ...
- 【bzoj4006】[JLOI2015]管道连接 斯坦纳树+状压dp
题目描述 给出一张 $n$ 个点 $m$ 条边的无向图和 $p$ 个特殊点,每个特殊点有一个颜色.要求选出若干条边,使得颜色相同的特殊点在同一个连通块内.输出最小边权和. 输入 第一行包含三个整数 n ...
- 转:评估指标MAP
转:http://www.zhenv5.com/?p=1079 MAP可以由它的三个部分来理解:P,AP,MAP 先说P(Precision)精度,正确率.在信息检索领域用的比较多,和正确率一块出现的 ...
- 【BZOJ4817】树点涂色(LCT,线段树,树链剖分)
[BZOJ4817]树点涂色(LCT,线段树,树链剖分) 题面 BZOJ Description Bob有一棵n个点的有根树,其中1号点是根节点.Bob在每个点上涂了颜色,并且每个点上的颜色不同.定义 ...
- 【BZOJ1493】【NOI2007】项链工厂(线段树)
[BZOJ1493]项链工厂(线段树) 题面 BZOJ 洛谷 Description T公司是一家专门生产彩色珠子项链的公司,其生产的项链设计新颖.款式多样.价格适中,广受青年人的喜爱. 最近T公司打 ...
- bzoj1426: 收集邮票(期望)
推错半天式子T T 设f[i]为买了i种卡,期望再买几张有n种卡 设g[i]为买了i种卡,期望再花多少钱有n种卡 可以把当前买卡的价格看作1,则以后买的所有卡片要增加1元,于是要加上f[i]和f[i+ ...
- android ndk 编译的时候指令集的选取
android ndk在编译的时候默认生成的是thumb指令(拇指)不是arm(手臂)指令,但是有时候在看反汇编的时候,不太熟悉thumb指令或者说thumb指令看起来更费劲,需要生成arm指令,这个 ...
- 【线段树】【P2572】【SCOI2010】序列操作
Description lxhgww最近收到了一个01序列,序列里面包含了n个数,这些数要么是0,要么是1,现在对于这个序列有五种变换操作和询问操作: 0 a b 把[a, b]区间内的所有数全变成0 ...