如何在Zynq7000平台上使用Linuxspidev.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根据硬件工程的配置情况),并在该节点下添加如下内容:

 如何在Zynq7000平台上使用Linuxspidev.c驱动_设计制作_MEMS/传感技术

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

设备树文件修改保存后,利用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/Documenta  TI on/spi目录下的spi_test.c程序。

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

83
186
0
18

相关资讯

  1. 1、IC厂商纷纷冲刺7纳米“卡站位”蓄势待发4148
  2. 2、挖矿能让我们发达吗?趣解区块链1598
  3. 3、OWC推最快Accelsior4M2SSD,四路组合狂飙6000MB/s4211
  4. 4、温湿度传感器在智慧城市建设中的应用1289
  5. 5、东莞虎门线缆智造正提速机器人“碾压”熟练工4338
  6. 6、科技品牌周与文博会——未来生活尽在CEEC3394
  7. 7、美国又发起“337调查”,涉及TCL、海信、联想!公司回应…3197
  8. 8、澳大利亚研制出超灵敏超声波传感器有望听到细胞声音3478
  9. 9、瑞典研发出革命性石墨烯探测器或能彻底革新下一代望远镜中的传感器2532
  10. 10、问天量子等六家企业签约落户无锡,数字制造添新军4491
全部评论(0)
我也有话说
0
收藏
点赞
顶部