• 为明远智睿 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();

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

  • 相关阅读:
    Linux 下 发布jar
    Jquery判断浏览器版本
    根据2个字符串得到2个串之间的连续数 并返回list
    Eclipse中user library包管理
    /bin/sh^M: bad interpreter: No such file or directory AND 使用Shell脚本查找程序对应的进程ID,并杀死进程
    split方法为空判断
    apache common 工具
    fmt:message key为el表达式 fmt其他格式化
    集群
    shell脚本控制jar的启动和停止
  • 原文地址:https://www.cnblogs.com/aqing1987/p/4443692.html
Copyright © 2020-2023  润新知