7000 芯片Linux下的SPI接口与驱动配置

本文将介绍如何利用vivado和petalinux开发zynq7000系列芯片的spi外设接口。
开发环境:
vivado 2015.4
petalinux 2015.4
一、 硬件工程的搭建
1. 打开vivado开发环境,新建工程,并选择你所使用的芯片型号(本文使用xc7z045ffg900-2这款芯片);
2. 点击“createblock design”创建一个新的工程桌布,在其中添加ip,将zynq7芯片ip添加进来;
图1 zynq7 ip
3. 双击zynq7芯片ip,点击界面左边的peripheral i/o pins对芯片的引脚进行配置,分别点击“quad spi flash”、“ethernet”、spi0最右边的“emio”和“uart1”对这些外设引脚进行使能;
图2 外设引脚配置
4. 打开“ddrconfiguration”页面,点击“ddr controller configuration”,然后点击下拉菜单,选择你所使用ddr类型,本文选用mt41j256m8 hx-15e这款ddr芯片,如图所示;
图3 ddr配置
5. ddr配置完成后,退出zynq配置界面,点击zynq7 ip中的spi引脚,选择相应的io端口,右键点击并选择make external将引脚向外引出。
图4 向外引出引脚
6. 所有spi相关引脚引出后,如下图所示,点击auto connetcion将ddr与fixed两个引脚引出;
图5 配置ddr和fixed引脚
7. 引脚配置完成后,在顶层文件中对zynq7这个ip进行例化,在“source”界面栏中双击顶层文件,打开硬件代码编辑器;
图6 顶层代码
8. 在右边的顶层.v代码中添加spi相关的端口和例化代码,添加的代码如下所示(由于本例中只使用到了spi的四个接口,因此在例化spi接口时,只用到了其中的四个,其它的悬空或直接输入高低电平);
图7 添加接口和例化代码
9. 代码添加完成后,对工程进行综合(synthesis)和布局(implementation),综合和布局通过完成后,对管脚进行约束,点击“open implementation”打开布局结果,点击最上方的“windows”选中“i/o ports”,对spi的外部接口进行约束(根据原理图中接口的连接,选中对应的硬件管脚);
图8 管脚约束
10. 管脚约束完成后,重新对工程进行implementation;
11. 最后点击“generatebitstream”生成bit文件;
12. 点击“file”—“export”——“export hardware”导出硬件工程;
二、 硬件工程的搭建
1. 在linux中,利用petalinux创建一个zynq工程;
2. 利用petalinux-config–get-hw-description命令将刚才vivado下所生成的硬件工程.hdf文件导入到软件工程中;
3. 利用petalinux-config–c kernel对内核进行裁剪,选中驱动中的spi驱动如图;
图9 勾选上spi驱动
4. 利用petalinux-build工具编译整个工程,然后利用petalinux-package生成boot.bin文件;
5. 利用硬件平台或qemu启动linux系统,即可在系统中看到spi驱动
图10 linux下的spi驱动

存储电路实现原理详解
三种特殊的模拟开关介绍
区块链技术将帮助世界银行成为该领域的思想领袖
基于ARM的嵌入式监控系统设计与实现
变频器在数控车床主轴中的运用
7000 芯片Linux下的SPI接口与驱动配置
基于Spartan-6 FPGA的SP605开发板解决文案
华为荣耀9、一加5、小米6和努比亚z17性能大拼比谁更强?华为荣耀9、一加5、小米6和努比亚z17对比评测
iPhone8的无线充电速度如何?iphone8怎么进行无线充电
TDA8310A各引脚功能及电压
前驱体市场仍将高速增长,六氟化钨或再度紧缺
三星Galaxy S8以及Galaxy Note 8确认将不会获得Android 10的升级
阿里云2020财年第三季度营收达149亿
便携式成像光谱仪的简单介绍
万用表和示波器测量的区别?简单看完,让你少走弯路!
DS317x与DS318x T3/E3/STS-1 LIU回
出售Agilent86112A电模块
奥拓电子助力中影CINITY LED显示屏放映系统最新发布
角田直隆助力华为制定智能家居的音频标准
联网汽车可以成为安全汽车吗