如何在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、BLACKPINK新歌上线《节奏大爆炸》中秋特惠来袭3381
  2. 2、《创世纪元》揭秘新手操作简单易懂4212
  3. 3、《小小足球》助力欧洲杯首款街头足球手游登场1802
  4. 4、《乌合之众:正义集结》大陆地区七日留存超20%379
  5. 5、《侠客风云传》单机版来袭网游版首测渐进368
  6. 6、《天天炫舞》周年庆倒计时一天!狂欢即将到来!3354
  7. 7、《三国群英传-争霸》武将升金大作战新版来袭2336
  8. 8、《河神》手游公布代言人小“河神”李现登陆跑男2043
  9. 9、卡牌巨作《帝王三国志》三大兵种为你深度解析2388
  10. 10、《全民奇迹MU》沧海桑田新奇迹界面优化大盘点2154
全部评论(0)
我也有话说
0
收藏
点赞
顶部