linux-2.6.26下SPI(1)驱动移植调试

参考了Linux2.6.32下SPI驱动的移植(mini2440)这篇文章。

不同的是我的内核是linux-2.6.26  SPI口是SPI1 GPG5 GPG6 GPG7,片选是GPA1

mach-smdk2410.c下增加代码:

/* SPI // tianyl2011-0927 鍙傝€僲ach-qt2410.c绉绘*/
#include <asm/arch/spi.h>
#include <asm/arch/spi-gpio.h>
#include <linux/spi/spi.h>
#include <linux/spi/spidev.h>
#include <linux/spi/spi_bitbang.h>
#include <asm/arch/regs-gpio.h>
#include <asm-arm/arch-s3c2410/map.h>
#include <asm-arm/arch-s3c2410/spi.h>

static struct spi_board_info s3c2410_spi1_board[] = {
        [0] = {
                 .modalias = "spidev",
                .bus_num        = 0,  
                .chip_select        = 0,
                .irq = IRQ_EINT9,
                .max_speed_hz         = 500*1000,
        },
};

static struct s3c2410_spi_info s3c2410_spi1_platdata = {
        .pin_cs = S3C2410_GPA1,
        .num_cs = 1,
//        .bus_num = 0,
};

以下增加相关调用:
static struct platform_device *smdk2410_devices[] __initdata = {
    &s3c_device_usb,
//    &qt2410_spi,// tianyl2011-0927
    &s3c_device_spi1,// forch
    //&s3c_device_lcd,
    //&s3c_device_wdt,
    //&s3c_device_i2c,
    //&s3c_device_iis,
};


static void __init smdk2410_init(void)
{
    platform_add_devices(smdk2410_devices, ARRAY_SIZE(smdk2410_devices));
    s3c_device_spi1.dev.platform_data=&s3c2410_spi1_platdata;// forch
    spi_register_board_info(s3c2410_spi1_board,ARRAY_SIZE(s3c2410_spi1_board));// forch
    smdk_machine_init();
}

spi_s3c24xx.c下s3c24xx_spi_probe函数增加IO初始化:

    // CS1
    s3c2410_gpio_cfgpin(S3C2410_GPA1, S3C2410_GPA1_OUT);
    s3c2410_gpio_setpin(S3C2410_GPA1, 1);

    // GPG 5 6 7閰嶇疆涓篠PI鎺ュ彛 SPI1
    s3c2410_gpio_cfgpin(S3C2410_GPG5, S3C2410_GPG5_SPIMISO1);
    s3c2410_gpio_cfgpin(S3C2410_GPG6, S3C2410_GPG6_SPIMOSI1);
    s3c2410_gpio_cfgpin(S3C2410_GPG7, S3C2410_GPG7_SPICLK1);


spidev_test.c修改

static const char *device = "/dev/spidev0.0";

配置相关选项,生成内核,下载,下载应用。

确认驱动成功加载

[root@forch app]# ls /dev/ | grep spi
spidev0.0
[root@forch app]#

运行应用:

[root@forch app]# ls
spidev_test.o
[root@forch app]# ./spidev_test.o
spi mode: 0
bits per word: 8
max speed: 500000 Hz (500 KHz)

0D 00 00 00 00 00
00 60 00 00 00 00
95 FF FF FF FF FF
FF FF FF FF FF FF
FF FF FF FF FF FF
FF DE AD BE EF BA
AD F0
[root@forch app]#

用示波器观察各个IO,有波形出现。我的SPI接个外设,所以打印的信息和发送的不一样。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值