Chinaunix首页 | 论坛 | 博客
  • 博客访问: 130235
  • 博文数量: 35
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-19 22:24
文章分类
文章存档

2015年(9)

2013年(26)

我的朋友

分类: 嵌入式

2013-08-27 15:23:49

OK6410下的SPI驱动是可以用的,但是飞凌把它作为其它用途了,我们修改一些代码才能在/dev目录下创建SPI的设备节点文件

Step1:打开arch/arm/mach_s3c64XX/mach_mini6410.c
增加如下代码:

点击(此处)折叠或打开

  1. static void cs_set_level(unsigned line_id, int lvl) {
  2.  gpio_direction_output(line_id, lvl);
  3. }
  4. static struct s3c64xx_spi_csinfo s3c64xx_spi0_csinfo = {
  5.  .fb_delay=100,
  6.  .line=S3C64XX_GPC(3),
  7.  .set_level=cs_set_level,
  8. };
  9. static struct spi_board_info s3c6410_spi0_board[] = {
  10. [0] = {
  11. .modalias = "spidev",
  12. .bus_num= 0,
  13. .chip_select= 0,
  14. .irq =IRQ_SPI0,
  15. .max_speed_hz= 500*1000,
  16. .mode=SPI_MODE_0,
  17. .controller_data=&s3c64xx_spi0_csinfo,
  18. },
  19. };
  20. static struct s3c64xx_spi_csinfo s3c64xx_spi1_csinfo = {
  21.  .fb_delay=100,
  22.  .line=S3C64XX_GPC(7),
  23.  .set_level=cs_set_level,
  24. };
  25. static struct spi_board_info s3c6410_spi1_board[] = {
  26. [0] = {
  27. .modalias = "spidev",
  28. .bus_num= 1,
  29. .chip_select= 0,
  30. .irq = IRQ_SPI1,
  31. .max_speed_hz = 500*1000,
  32. .mode=SPI_MODE_0,
  33. .controller_data=&s3c64xx_spi1_csinfo,
  34. },
  35. };
在函数 XX6410_machine_init中添加:

点击(此处)折叠或打开

  1. spi_register_board_info(s3c6410_spi0_board, ARRAY_SIZE(s3c6410_spi0_board));
  2. spi_register_board_info(s3c6410_spi1_board, ARRAY_SIZE(s3c6410_spi1_board));
Step3:测试spi口
使用Linux源码包下的linux/Documentation/spi/spidev_test.c 程序来检测
# gedit spidev_test.c 修改 spidev1.1 为 spidev1.0
# arm-linux-gcc spidev_test.c -o spi
将编译好的程序下到板子上

阅读(2655) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~