如何在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、电影频道百合奖陈创摘影帝伯乐张国立送祝福4342
  2. 2、影评:霍比特人不魔障难经典4316
  3. 3、主创贺《一代宗师》IMAX版邀影迷感受震撼视觉1575
  4. 4、《大江大河2》为什么没爆?感情线没看点,关键人物出场太慢3100
  5. 5、《后翼弃兵》导演主演组合再合作新片1039
  6. 6、《复联4》预告点击量破纪录1415
  7. 7、《樱桃小丸子》作者病逝,海贼王作者追悼,路飞和小丸子一起烤肉4201
  8. 8、一部电影火了28年,曾是周星驰御用女主角,50岁张敏近照曝光4245
  9. 9、李佳芯今年难成视后?过去10年得主露玄机!320
  10. 10、百花奖获奖名单:吴京获影帝,《红海》5项大奖成最大赢家1345
全部评论(0)
我也有话说
0
收藏
点赞
顶部