zoukankan      html  css  js  c++  java
  • 为明远智睿 imx6q Demo v2.5 添加spi5的支持

    第一步:在board-mx6q_sabresd.h 中添加spi5 的引脚定义

    具体在 mx6q_sabresd_pads[]  数组中添加,如下示:(以下定义是根据硬件工程师要采用

    哪个引脚画板决定的,以下的宏都是在bsp 中支持的)

    /* ECSPI5 added by Rex 2015.4.21 */
    MX6Q_PAD_SD2_CLK__ECSPI5_SCLK,
    MX6Q_PAD_SD2_DAT0__ECSPI5_MISO,
    MX6Q_PAD_SD2_CMD__ECSPI5_MOSI,
    MX6Q_PAD_GPIO_7__ECSPI5_RDY,
    MX6Q_PAD_SD2_DAT1__ECSPI5_SS0,

    第二步:将与SD2 相关的引脚定义及函数注释(不然 spi5的管脚与sd2的管脚是冲突的)

    1)board-mx6q_sabresd.h 的 mx6q_sabresd_pads[] 中

    /* USDHC2 */
    /* // sd2 canceled by Rex @ 2015.4.21
    MX6Q_PAD_SD2_CLK__USDHC2_CLK,
    MX6Q_PAD_SD2_CMD__USDHC2_CMD,
    MX6Q_PAD_SD2_DAT0__USDHC2_DAT0,
    MX6Q_PAD_SD2_DAT1__USDHC2_DAT1,
    MX6Q_PAD_SD2_DAT2__USDHC2_DAT2,
    MX6Q_PAD_SD2_DAT3__USDHC2_DAT3,
    */

    2)board-mx6q_sabresd.c 中的 mx6_sabresd_board_init() 中

    // canceled by Rex @ 2015.4.21 in case conflict between spi5 and sd2
    //imx6q_add_sdhci_usdhc_imx(1, &mx6q_sabresd_sd2_data);

    第三步:定义片选管脚对应的gpio

    在board-mx6q_sabresd.c 中,文件头开始处添加

    // spi5 support added by Rex @ 2015.4.20
    #define SABRESD_ECSPI5_CS0  IMX_GPIO_NR(1, 14)

    这个(1, 14)是根据MY-I.MX6-DEMO-V2.2_V2.5 硬件介绍.pdf 得来的。

    我们想要定义 cs0 的gpio 查找 E20 有如下信息:

    看到第5行关于gpio的信息即为(1, 14)得来的源由。

    第四步:定义spi5的片选数组

    // add spi5 cs support by Rex
    static int mx6q_sabresd_spi5_cs[] = {
        SABRESD_ECSPI5_CS0,
    };

    第五步:定义spi5 的spi_imx_master 结构体变量

    // add spi5 spi_imx_master member
    static const struct spi_imx_master mx6q_sabresd_spi5_data __initconst = {
        .chipselect     = mx6q_sabresd_spi5_cs,
        .num_chipselect = ARRAY_SIZE(mx6q_sabresd_spi5_cs),
    };

    第六步:定义 spi5 的spi_board_info 结构体变量

    // add spi_board_info member for spi5 by Rex
    static struct spi_board_info imx6_sabresd_spi5_device[] __initdata = {
        {
            .modalias = "spidev",
            .max_speed_hz = 20000000, /* max spi clock (SCK) speed */
            .bus_num = 4,
            .chip_select = 0,
            .mode = SPI_MODE_0,
        },
    };

    第七步:定义spi5 设备初始化函数

    // define spi5 init func by Rex @ 2015.4.21
    static void spi5_device_init(void)
    {
        spi_register_board_info(imx6_sabresd_spi5_device,
                    ARRAY_SIZE(imx6_sabresd_spi5_device));
    }

    第八步:在 mx6_sabresd_board_init() 添加 spi5 的初始化代码

    // rex add spi5 init 
    imx6q_add_ecspi(4, &mx6q_sabresd_spi5_data);
    spi5_device_init();

    最后,重新编译内核,进行测试即可。

  • 相关阅读:
    线程
    数据类型转换
    复合赋值运算符
    算数运算符
    apache自带的ab压力测试工具用法详解
    创建一个方便快捷实验环境快照
    安装中文版cacti监控华为交换机流量并实现95计费
    虚拟机拷贝后网卡eth0变成了eth1的解决办法
    解压版Tomcat配置
    PLSQL不好用,提示ora-12514 错误解决方法
  • 原文地址:https://www.cnblogs.com/aqing1987/p/4443692.html
Copyright © 2011-2022 走看看