如何在Zynq 7000平台上使用Linux spidev.c驱动

在上一篇博客中,介绍了如何配置vivado下的硬件工程、例化spi硬件接口和如何使用petalinux加载xilinx提供的spi总线驱动,如果要通过spi控制外部器件,还需要添加spi的设备驱动以实现spi的对外控制逻辑。
在linux内核的driver/spi目录下有许多外设的设备驱动可以参考,这篇博客主要介绍如何使用其中的spidev,c这个设备驱动来实现对外设的控制。
spidev是一个通用的spi外设驱动,它提供了spi字符驱动的注册,并向上层应用程序提供了i/o控制接口,当我们仅需要利用spi接口向外设发送和接收简单的控制序列时,可直接使用该驱动,下面介绍具体的使用方法。
一、在前一篇博客中,我们采用xilinx针对zynq 7000处理器提供的spi-cadence.c驱动实现了芯片上spi总线驱动的注册,接下来需要修改设备树文件以时我们的外设挂接在spi总线下。
在petalinux工程的../subsystems/linux/configs/device-tree目录下找到zynq相关的设备树文件,目录所包含的文件如下图所示。
打开其中的zynq-7000.dtsi文件,找到其中的spi0节点(具体使用spi0还是spi1根据硬件工程的配置情况),并在该节点下添加如下内容:
其中 “spidev”名字对应spidev.c文件中的驱动名,linux系统启动时会自动找到对应的驱动模块并加载。
reg对应spi下的第几个设备,由于zynq ps端的spi控制器每个可以外接控制3个从设备,所以reg的值可以设为0、1或2.
由于在上一篇博客中,vivado硬件工程中对spi的接口spi0_csn_0_o进行了例化并引出接口,所以本工程使用的是spi使能第0个端口。
同时,spidev.c该驱动不支持片选功能,因此若在spi0下挂接了多个从设备,切硬件工程中spi0_csn_0片选接口引出了多个,则spiddev驱动在注册时,会在/dev目录下注册多个设备,分别对应每个片选接口连接的从设备。
设备树文件修改保存后,利用petalinux-config -c kernel指令,在devices driver/spi support目录下,选中user mode spi device driver support,然后重新编译内核并启动系统,即可在/dev目录下看到注册的一个spi字符设备,一般命名为spi x.x。
在应用层编写程序通过该驱动控制外设,可参考/opt/petalinux-v2015.4-final/components/linux-kernel/xlnx-4.0/documentation/spi目录下的spi_test.c程序。
使用该程序,将spi的mosi和miso引脚短接,即可自收自发数据了。

VR让世界更精彩—育新机:0glasses 5G+AR展项
西部数据领先车载存储技术 赋能汽车行业智驾未来
如何制作VR模拟驾驶舱以及遥控车
cbb电容可以用来阻容降压吗
MEMS开关领先厂商Menlo Micro将在纽约建设晶圆厂
如何在Zynq 7000平台上使用Linux spidev.c驱动
新一代广本雅阁上手体验评测
Xisem西圣Ares到底何门何派,在平价蓝牙耳机市场为什么如此受欢迎
激光电视将成为过渡产品
FOC控制算法的Simulink模型
从“黑科技”到“开花结果”人工智能离传统产业还要多久?
机器学习美女博士亲身体验:读博与工作,如何抉择?
意法有线数字电视机顶盒单片解决方案,助于提高性能和安全功能
无刷电机霍尔传感器位置及电机旋向确认方法研究
网络测试仪E1数据采集卡的驱动设计
什么是芯片封装 芯片封装形式都有哪些
系统开发五大要素
为什么要将超声波感应用于无人机着陆?
汽车芯片免疫“砍单潮” 趋势如何
实现有效且高效的LVS调试案例解析