7450|10

965

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

AM335X的SPI怎么扩展片选? [复制链接]

 
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的片选?

最新回复

完全采用IO模拟SPI效率较低,可以仅用IO模拟片选,会比较好  详情 回复 发表于 2018-9-11 16:19
点赞 关注(1)
 

回复
举报

7

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
哥们你解决了吗?我现在遇到同样的问题,希望能向您请教
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
您好!想请教您关于AM335X SPI片选扩展问题,有些272138307@qq.com。期待您的回复
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

4
 
哥们 你用AM335X扩展SPI的片选问题解决了吗? 我现在遇到同样的问题,希望得到您的帮助。

点评

没有解决  详情 回复 发表于 2016-7-26 16:05
 
 
 

回复

965

帖子

0

TA的资源

纯净的硅(高级)

5
 
zuiaitao 发表于 2016-7-26 10:20
哥们 你用AM335X扩展SPI的片选问题解决了吗? 我现在遇到同样的问题,希望得到您的帮助。

没有解决
 
 
 

回复

32

帖子

0

TA的资源

一粒金砂(中级)

6
 
有方案吗?采用GPIO去模拟SPI ?我用这块板子(辉为科技),有机会交流下。

个人签名AM335 IMX6UL IMX6 A5D3X开发板工控板核心板 供应商
www.huiweit.com  IMX6UL社区群 175493668
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

7
 
非常实用感谢楼主无私奉献,不愧是大牛。
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

8
 
可能是chip_select不匹配造成的,最近不使用spi控制器硬件片选,而采用GPIO模拟片选成功,可以了解下。

点评

您好,可以详细说一下吗,我想给SPI1增加一个片选应该怎么做?  详情 回复 发表于 2018-8-13 08:56
 
 
 

回复

965

帖子

0

TA的资源

纯净的硅(高级)

9
 
DestinyX 发表于 2018-8-10 23:30
可能是chip_select不匹配造成的,最近不使用spi控制器硬件片选,而采用GPIO模拟片选成功,可以了解下。

您好,可以详细说一下吗,我想给SPI1增加一个片选应该怎么做?
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

10
 
石玉 发表于 2018-8-13 08:56
您好,可以详细说一下吗,我想给SPI1增加一个片选应该怎么做?

对于AM335X而言,SPI控制器仅支持两个片选信号,CS0和CS1。这两个片选是控制器在读写数据时自动控制的,我们完全可以不用控制器自带的片选信号进行连接在控制器上的从设备的选择,而是自己去决定选择哪个从设备,让spi控制器只进行数据的读写操作。即若使用控制器的片选信号,则配置及读写流程是:
1、配置sck、时钟极性和相位、数据位宽度、CS电平;
2、数据读写。
那么不使用SPI控制器的片选信号,自己控制从器件的选择,则配置及读写流程是:
1、配置用作片选的GPIO,并置正确的电平;
2、配置sck,时钟极性和相位、数据位宽度;
3、控制GPIO选通某个从器件;
4、数据读写
5、使片选信号无效,重复3-5即可
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

11
 
peixiuhui 发表于 2017-5-19 17:09
有方案吗?采用GPIO去模拟SPI ?我用这块板子(辉为科技),有机会交流下。

完全采用IO模拟SPI效率较低,可以仅用IO模拟片选,会比较好
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表