明远智睿技术论坛

标题: imx6q spi 片选工作状态不正确 [打印本页]

作者: Samu    时间: 2016-12-5 09:59
标题: imx6q spi 片选工作状态不正确

各位好!

       我用的是imx6q  ek200核心板  内核用的是3.0.35,在board-myimx6ek200.c中添加 spi0.0  spi1.0,片选工作状态和正常工作状态正好相反(没有发送数据时是低电平发送的时候反而拉高),请问一下我该如何处理 ,谢谢

作者: 软件01    时间: 2016-12-5 10:04
你怎么修改的能贴出来嘛,我这边看看
作者: Samu    时间: 2016-12-5 10:08
软件01 发表于 2016-12-5 10:04
你怎么修改的能贴出来嘛,我这边看看

#define SABRESD_ECSPI1_CS1         IMX_GPIO_NR(2, 30) //liupeibin  #define SABRESD_ECSPI1_CS1         IMX_GPIO_NR(3, 19)
#define SABRESD_ECSPI2_CS0        IMX_GPIO_NR(2, 26)



static struct spi_board_info imx6_sabresd_spi_nor_device[] __initdata = {

        {
                .modalias = "spidev",
                .max_speed_hz = 500000, /* max spi clock (SCK) speed in HZ */
                .bus_num = 0,
                .chip_select = 0,
                .mode = SPI_MODE_0,
        },

};
static struct spi_board_info imx6_sabresd_spi_device[] __initdata = {
        {
                .modalias = "spidev",
                .max_speed_hz = 500000, /* max spi clock (SCK) speed in HZ */
                .bus_num = 1,
                .chip_select = 0,
                .mode = SPI_MODE_0,
        },
};

static void spi_device_init(void)
{
        spi_register_board_info(imx6_sabresd_spi_nor_device,
                                ARRAY_SIZE(imx6_sabresd_spi_nor_device));
        //liupeibin 20161201
        gpio_set_value(SABRESD_ECSPI1_CS1, 1);
}

static void spi2_device_init(void)
{
        spi_register_board_info(imx6_sabresd_spi_device,
                                ARRAY_SIZE(imx6_sabresd_spi_device));
        //liupeibin 20161201
        gpio_set_value(SABRESD_ECSPI2_CS0, 1);
}

作者: 软件01    时间: 2016-12-5 11:43
Samu 发表于 2016-12-5 10:08
#define SABRESD_ECSPI1_CS1         IMX_GPIO_NR(2, 30) //liupeibin  #define SABRESD_ECSPI1_CS1         IMX_GPIO_N ...

我们已经写了spi1.0这是硬件的SPI2,如果想测试SPI1的话,需要增加结构,还有就是SPI跟I2C都是可以挂载多个设备的,所以你应该增加结构数据就行。
static struct spi_board_info imx6_sabresd_spi_nor_device[] __initdata = {
#if defined(CONFIG_MTD_M25P80)
        {
                .modalias = "m25p80",
                .max_speed_hz = 20000000, /* max spi clock (SCK) speed in HZ */
                .bus_num = 0,
                .chip_select = 0,
                .platform_data = &imx6_sabresd__spi_flash_data,
        },
#endif

        {
                .modalias = "spidev",
                .max_speed_hz = 500000, /* max spi clock (SCK) speed in HZ */
                .bus_num = 0,
                .chip_select = 1,
                .mode = SPI_MODE_0,
        },
};

static int mx6q_sabresd_spi_cs[] = {
        SABRESD_ECSPI1_CS1,
        SABRESD_ECSPI1_CS12,//自己增加的SPI片选
};
作者: Samu    时间: 2016-12-5 11:49
软件01 发表于 2016-12-5 11:43
我们已经写了spi1.0这是硬件的SPI2,如果想测试SPI1的话,需要增加结构,还有就是SPI跟I2C都是可以挂载多 ...

我们底板 没有实现 一个spi 挂载多个设备  硬件上分别用一路spi挂载一路射频芯片,驱动射频,还有我测试的就是你们提供的SPI  1.0片选  电平变化不正常
作者: zarveent    时间: 2016-12-22 20:49
软件01 发表于 2016-12-5 11:43
我们已经写了spi1.0这是硬件的SPI2,如果想测试SPI1的话,需要增加结构,还有就是SPI跟I2C都是可以挂载多 ...

求助按照上面的代码修改结构能够烧录新的Linux3.0.35内核能够使得其/dev下出现可以使用的spidev0.0么?
我除了没有增加ECSPI1额外的片选,其他一致,重新编译了内核烧录后没有/dev下没有新的spidev设备文件啊
作者: zarveent    时间: 2016-12-23 00:57
软件01 发表于 2016-12-5 11:43
我们已经写了spi1.0这是硬件的SPI2,如果想测试SPI1的话,需要增加结构,还有就是SPI跟I2C都是可以挂载多 ...

还有我们IMX6QEK200的评估板支持单独更新内核么,调试时每次更新内核烧录Ubuntu12.04就得好久,我记得之前有些板子可以通过MiniTools只选择更新烧录内核或者文件系统,不知道我们的评估板支持与否?
作者: 唐斌    时间: 2017-1-11 17:17
zarveent 发表于 2016-12-23 00:57
还有我们IMX6QEK200的评估板支持单独更新内核么,调试时每次更新内核烧录Ubuntu12.04就得好久,我记得之 ...

我们在 u-boot 里封装了 update_* 等命令,具体可通过 printenv 查看。电脑开启 tftp 服务,板子连接电脑,在 u-boot 下执行 run update_* 等命令可更新相应的 image。




欢迎光临 明远智睿技术论坛 (http://bbs.myzr.com.cn/) Powered by Discuz! X3.2