用明远智睿开发板EK140开发板驱动一个SPI设备该如何做?

在上一篇博客中介绍了如何配置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总线下

打开其中的zynq-7000.dtsi文件,找到其中的spi0节点(具体使用spi0还是spi1根据硬件工程的配置情况)并在该节点下添加如下内容:

其中 “spidev”名字对应spidev.c文件中的驱动名,Linux系统启动时会自动找到对应的驱动模块并加载

reg<0>对应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目录下注册多个设备,分别对应每个片选接口连接的从设备

使用该程序,将SPI的MOSI和MISO引脚短接即可自收自发数据叻。

声明:本文由入驻电子说专栏的作者撰写或者网上转载观点仅代表作者本人,不代表电子发烧友网立场如有侵权或者其他问题,請联系举报

}

我要回帖

更多关于 明远智睿 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信