Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1463832
  • 博文数量: 267
  • 博客积分: 3010
  • 博客等级: 少校
  • 技术积分: 3089
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-05 17:09
个人简介

尊天命,尽人事

文章分类

全部博文(267)

文章存档

2017年(6)

2015年(4)

2014年(27)

2013年(52)

2012年(59)

2011年(120)

分类: 嵌入式

2013-02-27 17:08:47

第一步,配置内核:
选中:Device Driver --> SPI support --> User mode SPI device driver support
第二步,修改board_sam9261ek.c adding SPIDEV info under /* SPI */
        {      
                .modalias       = "spidev", //device name, must be it.
                .chip_select    = 1,  //means cs1
                .max_speed_hz   = 2 * 1000 * 1000,
                .bus_num        = 0, //means spi0
        .controller_data = (void *) AT91_PIN_PA4, //PA4 is SPI0's cs1
        },
第三步,make uImage
这样你就可以在/sys/bus/spi/devices, sys/bus/spi/drivers下面看到spidev的信息了。
在/dev/下面也可以看到spidev0.1
第四步,编译documentation/spi/spidev_test.c
编译前先修改:隐去结构体中的".speed_hz=..." and ".bits_per_word=..."这两项。因为atmel_spi.c对其不支持。
你可以把默认的设备改为/dev/spidev0.1也可以在输入命令的时候加上设备名称
第五步,编译spidev_test.c,运行可执行文件。
测试时,可以把MOSI和MOSI相连,这样你就可以看到打印出来的读到的SPI口的数据就是写到SPI口的数据。

spidev_test.c中的IOCTL命令,是用来关联spidev的驱动的,里面的参数是一些命令代码,对应spidev的相应的操作。
主要分为:设定命令和读写命令。
你需要对SPI进行设定可以模仿spidev_test.c程序,SPI_IOC_MESSAGE(n)就是对SPI的读写操作,这个是全双工的命令,即读和写是同时进行的。

如果你只需要读或写spi的操作,你也可以像读写串口操作一样对spidev进行操作。
你可以参考spidev_fdx.c文件,里面有spi读的操作。写就更简单了,修改一下就可以了。
阅读(3782) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~