搜索
bottom↓
回复: 1

使用FLEXBUS_DRV_Init()初始化2个外部器件端口的问题

[复制链接]

出0入0汤圆

发表于 2015-9-22 09:09:33 | 显示全部楼层 |阅读模式
使用FB_CS0和FB_CS2,2个外部器件,用FSDK 1.2的FLEXBUS_DRV_Init()初始化时发现只能初始化FB_CS0,后经分析FSDK源码发现如下问题:

flexbus_status_t FLEXBUS_DRV_Init(uint32_t instance, const flexbus_user_config_t *fb_config)
{
    assert(instance < FB_INSTANCE_COUNT);

    FB_Type* fbbase = g_fbBase[instance];

    if(!fb_config)
    {
        return kStatus_FLEXBUS_InvalidArgument;
    }

    /* clock setting initialization.*/
    CLOCK_SYS_EnableFlexbusClock(instance);

    /* Reset all the register to default state.*/
    FLEXBUS_HAL_Init(fbbase);
    /* Configure all the register to a known state */
    FLEXBUS_HAL_Configure(fbbase, fb_config);

    return kStatus_FLEXBUS_Success;
}
每次FLEXBUS_DRV_Init()均会调用FLEXBUS_HAL_Init(),其代码如下:
void FLEXBUS_HAL_Init(FB_Type* base)
{
    int chip = 0;
    uint32_t reg_value = 0x0;

    for (chip = 0; chip < FB_CSAR_COUNT; chip++)
    {
        /* Reset CSMR register, all chips not valid (disabled).*/
        FB_WR_CSMR(base, chip, 0x0U);
        /* Set default base addr */
        FB_BWR_CSAR_BA(base, chip, 0x0000U);
        /* Reset FB_CSCRx register */
        FB_WR_CSCR(base, chip, 0x00U);
    }

    /* Set FB_CSPMCR register*/
    /* FlexBus signal group 1 multiplex control.*/
    reg_value |= kFlexbusMultiplexGroup1_FB_ALE << FB_CSPMCR_GROUP1_SHIFT;
    /* FlexBus signal group 2 multiplex control.*/
    reg_value |= kFlexbusMultiplexGroup2_FB_CS4 << FB_CSPMCR_GROUP2_SHIFT;
    /* FlexBus signal group 3 multiplex control.*/
    reg_value |= kFlexbusMultiplexGroup3_FB_CS5 << FB_CSPMCR_GROUP3_SHIFT;
    /* FlexBus signal group 4 multiplex control.*/
    reg_value |= kFlexbusMultiplexGroup4_FB_TBST << FB_CSPMCR_GROUP4_SHIFT;
    /* FlexBus signal group 5 multiplex control.*/
    reg_value |= kFlexbusMultiplexGroup5_FB_TA << FB_CSPMCR_GROUP5_SHIFT;
    /* Write to CSPMCR register.*/
    FB_WR_CSPMCR(base, reg_value);
}

可见,每次FLEXBUS_HAL_Init()均会清除CSMR, CSAR, CSCR等寄存器,因而导致第二次调用FLEXBUS_DRV_Init()时会清除上次的设置。

因此想问,如何使用FSDK1.2来分配FLEXBUS给多个CS?初始化第二个chip要用HAL层的函数吗?


出0入0汤圆

 楼主| 发表于 2015-9-23 11:42:00 | 显示全部楼层
似乎用FSDK的人不多啊,FSL的兄弟能否也给点建议。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 07:47

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表