打印

AM335X的SPI怎么扩展片选?

[复制链接]
3108|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AM335X的SPI1只有2个片选,但我要接3个SPI从设备,使用spi1_cs0和spi1_cs1设备可以正常工作,我现在想使用GPMC_CSn1作为一个片选使用再接一个设备,下面是我修改board_am335xevm.c

SPI引脚的初始化(最后一行加入了gpmc_csn1管脚):

static struct pinmux_config spi1_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},
    {"rmii1_refclk.spi1_cs0", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL
        | AM33XX_PULL_UP | AM33XX_INPUT_EN},
    {"xdma_event_intr0.spi1_cs1", OMAP_MUX_MODE4 | AM33XX_PULL_ENBL
        | AM33XX_PULL_UP | AM33XX_INPUT_EN},
    {"gpmc_csn1.gpmc_csn1", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL
        | AM33XX_PULL_UP | AM33XX_INPUT_EN},
    {NULL, 0},
};

SPI的初始化( .chip_select = 0和 .chip_select = 1 ,这里的片选0和1是怎么和管脚rmii1_refclk.spi1_cs0和xdma_event_intr0.spi1_cs1建立联系的?)

static struct spi_board_info spi_board_info[] = {
          {
                  .modalias = "mcp2515",
           // or "mcp2515" depending on your controller
                  .platform_data = &mcp251x_info,
                 .irq = 224,
                  .mode           =SPI_MODE_0,
                  .max_speed_hz = 10000000,
                  .bus_num = 2,
                  .chip_select = 0,
          },
};

static struct spi_board_info spi_board_info_1[] = {
          {
                  .modalias = "mcp2515",
           // or "mcp2515" depending on your controller
                  .platform_data = &mcp251x_info,
                 .irq = 223,
                  .mode           =SPI_MODE_0,
                  .max_speed_hz = 10000000,
                  .bus_num = 2,
                  .chip_select = 1,
          },
};

static struct spi_board_info spi_board_info_2[] = {
          {
                  .modalias = "mcp2515",
           // or "mcp2515" depending on your controller
                  .platform_data = &mcp251x_info,
                 .irq = 223,
                  .mode           =SPI_MODE_0,
                  .max_speed_hz = 10000000,
                  .bus_num = 2,
                  .chip_select = 2,
          },

注册SPI设备:
}static void spi1_init(int evm_id, int profile)
{
    setup_pin_mux(spi1_pin_mux);

    spi_register_board_info(spi_board_info,
            ARRAY_SIZE(spi_board_info));

    spi_register_board_info(spi_board_info_1,
            ARRAY_SIZE(spi_board_info_1));

    spi_register_board_info(spi_board_info_2,
            ARRAY_SIZE(spi_board_info_2));


    return;
};

但内核启动后只打印了SPI2.0和SPI2.1,没有SPI2.2

请问我该怎么样扩展SPI的片选?

相关帖子

沙发
cliffboy| | 2015-12-18 10:46 | 只看该作者
没使用过此芯片,硬件上不满足,lz可以考虑用GPIO口模拟

使用特权

评论回复
板凳
yoghen| | 2015-12-18 11:14 | 只看该作者
也在搞这个东西,向楼主学习

使用特权

评论回复
地板
shenmu2012| | 2015-12-18 22:07 | 只看该作者
这个首先得需要硬件上能够支持的就可以的。

使用特权

评论回复
5
拉克丝| | 2015-12-28 21:01 | 只看该作者
也就是说硬件只支持2个SPI扩展

使用特权

评论回复
6
zhangjin_comeon| | 2015-12-30 21:50 | 只看该作者
没明白  

使用特权

评论回复
7
edishen| | 2015-12-30 22:25 | 只看该作者
是要扩展FLASH吗

使用特权

评论回复
8
309030106| | 2015-12-31 17:45 | 只看该作者
用GPIO口模拟能实现吗

使用特权

评论回复
9
yoghen| | 2016-1-21 17:30 | 只看该作者
本帖最后由 yoghen 于 2016-1-21 17:34 编辑

http://processors.wiki.ti.com/in ... earch=Search-EN#SPI
Refer to:
SPIBoth AM18x and AM335x support two (2) SPI ports.  The AM18x SPI supports 6 CS and 2-16 bit word length. The AM335x SPI supports 2 CS and 4-32 bit word length.


这样看来,楼主的方法估计应该是不行的。不知道楼主解决问题没有,我打算自己用IO模拟来控制

使用特权

评论回复
10
baimiaocun2015| | 2016-1-21 22:48 | 只看该作者
这个根据片选地址的设计的吧

使用特权

评论回复
11
edishen| | 2016-1-25 21:39 | 只看该作者
很多地方都需要扩展   软件和硬件综合考虑啊

使用特权

评论回复
12
edishen| | 2016-1-25 21:41 | 只看该作者
嵌入式控制器结合 CPLD等  进行外扩   非常好用

使用特权

评论回复
13
edishen| | 2016-1-25 21:41 | 只看该作者
做个PowerPC+FPGA的工业产品 很给力

使用特权

评论回复
14
sy971586331|  楼主 | 2016-2-25 15:05 | 只看该作者
yoghen 发表于 2016-1-21 17:30
http://processors.wiki.ti.com/in ... earch=Search-EN#SPI
Refer to:
SPIBoth AM18x and AM335x support  ...

没有解决,现在一个SPI还是只能接2个从设备

使用特权

评论回复
15
sy971586331|  楼主 | 2016-2-25 15:06 | 只看该作者
309030106 发表于 2015-12-31 17:45
用GPIO口模拟能实现吗

用GPIO模块的话SPI驱动可能要修改,不知道怎么改,现在SPI驱动是内核带的没有改过

使用特权

评论回复
16
yoghen| | 2016-2-26 17:30 | 只看该作者
sy971586331 发表于 2016-2-25 15:06
用GPIO模块的话SPI驱动可能要修改,不知道怎么改,现在SPI驱动是内核带的没有改过 ...

嗯,我自己还要写设备驱动,在设备驱动上做这个片选,然后使用内核的总线驱动。不过我也不知道这样做是不是合理的,也许还有更好的方法。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

77

帖子

1

粉丝