AM335X的SPI怎么扩展片选?

[复制链接]
3509|15
 楼主| sy971586331 发表于 2015-12-18 10:28 | 显示全部楼层 |阅读模式
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 | 显示全部楼层
这个首先得需要硬件上能够支持的就可以的。
拉克丝 发表于 2015-12-28 21:01 | 显示全部楼层
也就是说硬件只支持2个SPI扩展
zhangjin_comeon 发表于 2015-12-30 21:50 | 显示全部楼层
没明白  
edishen 发表于 2015-12-30 22:25 | 显示全部楼层
是要扩展FLASH吗
309030106 发表于 2015-12-31 17:45 | 显示全部楼层
用GPIO口模拟能实现吗
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模拟来控制
baimiaocun2015 发表于 2016-1-21 22:48 | 显示全部楼层
这个根据片选地址的设计的吧
edishen 发表于 2016-1-25 21:39 | 显示全部楼层
很多地方都需要扩展   软件和硬件综合考虑啊
edishen 发表于 2016-1-25 21:41 | 显示全部楼层
嵌入式控制器结合 CPLD等  进行外扩   非常好用
edishen 发表于 2016-1-25 21:41 | 显示全部楼层
做个PowerPC+FPGA的工业产品 很给力
 楼主| 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个从设备
 楼主| sy971586331 发表于 2016-2-25 15:06 | 显示全部楼层
309030106 发表于 2015-12-31 17:45
用GPIO口模拟能实现吗

用GPIO模块的话SPI驱动可能要修改,不知道怎么改,现在SPI驱动是内核带的没有改过
yoghen 发表于 2016-2-26 17:30 | 显示全部楼层
sy971586331 发表于 2016-2-25 15:06
用GPIO模块的话SPI驱动可能要修改,不知道怎么改,现在SPI驱动是内核带的没有改过 ...

嗯,我自己还要写设备驱动,在设备驱动上做这个片选,然后使用内核的总线驱动。不过我也不知道这样做是不是合理的,也许还有更好的方法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

77

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部