如何在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、亚马逊专利公开:热气球无人机随时切换“隐形”模式2386
  2. 2、世界首个便便数据库建立可能需要你来“Giveashit”3076
  3. 3、华为发布商用AI芯片“昇腾910”全球最强算力的AI芯片4301
  4. 4、微软官宣:iOS/Android版Cortana将仅在美国保留使用3273
  5. 5、#链犬日报#2019-04-27星期六USDT跌幅创近半年之最2748
  6. 6、联通宣布已开通5G基站6.4万个三季度总数将达25万4611
  7. 7、8万元的双屏电视?海信8KPro双屏电视U9正式发布1384
  8. 8、戴森为什么在中国那么受欢迎?答:因为我们有抱负1928
  9. 9、亚马逊提交新专利申请只需扫描双手就可完成支付4457
  10. 10、日本自动售货机可以“刷脸”支付了网友:蚂蚁竞走十年了1357
全部评论(0)
我也有话说
0
收藏
点赞
顶部