在am335x添加spi设备

由于 spi 设备经常用到,而在 myd-am335x 的开发板上没有 spi 设备,所以内核里也没有 spi 设备的注册信息,对内核不熟悉的童鞋想要添加自己的 spi 设备时可能会感觉无从下手

折腾了一下下,在myd-am335x的 spi1 上添加了一个 spi 的设备,但由于 myd-am335x 上没有 spi 设备, 所以没有验证是否可行,但至少在 /dev/ 目录下有 spidev2.0 出来了,说明 spi 设备已经注册成功,接下来就是调试的事了

步骤如下


1. 首先想要用 spidev,就得把 spidev 加载到内核里,在Linux内核源码的根目录下运行:

make ARCH=arm menuconfig

       依次选择
Device Drivers --->
                  SPI  support --->
                                 <*>McSPI driver for OMAP
                                 <*>User mode SPI device driver support

      注意:这些都要选上
    
2. 在 arch/arm/mach-omap2/board-am335xevm.c 文件里添加 spi1 的引脚配置
    (注意 ,在myd-am335x上,spi1 的引脚跟 McASP 的引脚复用,所以用 spi1 就不能使用 McASP)
    
1
2
3
4
5
6
7
8
static struct pinmux_config spi_pin_mux[] = {
     { "mcasp0_aclkx.spi1_sclk" , OMAP_MUX_MODE3 | AM33XX_PULL_ENBL |AM33XX_INPUT_EN },
     { "mcasp0_fsx.spi1_d0" , OMAP_MUX_MODE3 | AM33XX_PULL_ENBL |AM33XX_PULL_UP | AM33XX_INPUT_EN},
     { "mcasp0_axr0.spi1_d1" , OMAP_MUX_MODE3 | AM33XX_PULL_ENBL |AM33XX_INPUT_EN},
     { "mcasp0_ahclkr.spi1_cs0" , OMAP_MUX_MODE3 | AM33XX_PULL_ENBL |AM33XX_PULL_UP | AM33XX_INPUT_EN},
     {NULL, 0},
};


3. 添加 spi 设备及注册函数
    
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
static struct spi_board_info am335x_spi1_slave_info[] ={
     {
         .modalias     = "spidev" , // 用来匹配 spidev 驱动
         .max_speed_hz  = 1000000, // 最大速率
         .bus_num      = 2, // 表示该设备在 spi1 总线上
         .chip_select   =0, // 表示使用 spi1_cs0
     },
};
 
static void spi_init( int evm_id, int profile)
{
    
     setup_pin_mux(spi_pin_mux);
     spi_register_board_info(am335x_spi1_slave_info,
                             ARRAY_SIZE(am335x_spi1_slave_info));
 
     return ;
}


4. 在设备初始化列表里添加该函数的调用,和注释掉 McASP 函数,如下所示
   
1
2
3
4
5
6
7
static struct evm_dev_cfg myd_am335x_dev_cfg[] = {
     // ..............
     //{mcasp0_init,  DEV_ON_BASEBOARD,PROFILE_ALL},                                                                               
     {spi_init,     DEV_ON_BASEBOARD, PROFILE_ALL},
     // ..............
     {NULL, 0, 0},
};


5. 重新编译内核,并用该内核启动开发板后,就可以在 /dev/ 目录下看到 spidev2.0 设备结点了
  
11:52:11.png
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值