嵌入式开发者社区

标题: TMS320F28377 EMIF连接外部SRAM问题。 [打印本页]

作者: helinuaa    时间: 2019-9-24 10:04
标题: TMS320F28377 EMIF连接外部SRAM问题。

连接的是8位数据口SRAM.
参照例程:

地址:#define SDRAM_CS2_START_ADDR_read  0x100002
#define SDRAM_CS2_START_ADDR_write 0x100002
引脚配置
void setupEMIF1PinmuxSync8Bit(void)
{
    uint16_t i;
    //设置GPIO端口做EMIF地址端口复用  14位

        GPIO_setPinConfig(GPIO_93_EM1BA0);   //AL0
        GPIO_setPinConfig(GPIO_92_EM1BA1);   //AL1
        GPIO_setPinConfig(GPIO_38_EM1A0);   //AL2
        GPIO_setPinConfig(GPIO_39_EM1A1);   //AL3
        GPIO_setPinConfig(GPIO_40_EM1A2);   //AL4
        GPIO_setPinConfig(GPIO_41_EM1A3 );   //AL5
        GPIO_setPinConfig(GPIO_44_EM1A4);   //AL6
        GPIO_setPinConfig(GPIO_45_EM1A5);   //AL7
        GPIO_setPinConfig(GPIO_46_EM1A6);   //AL8
        GPIO_setPinConfig(GPIO_47_EM1A7);   //AL9
        GPIO_setPinConfig(GPIO_48_EM1A8);   //AL10
        GPIO_setPinConfig(GPIO_49_EM1A9);   //AL11
        GPIO_setPinConfig(GPIO_50_EM1A10);   //AL12
        GPIO_setPinConfig(GPIO_51_EM1A11);   //AL13
        //功能引脚复用
        GPIO_setPinConfig(GPIO_37_EM1OEN);   //OEL
        GPIO_setPinConfig(GPIO_33_EM1RNW);   //R/WL
        GPIO_setPinConfig(GPIO_34_EM1CS2N);   //CEL
        //数据引脚复用
        GPIO_setPinConfig(GPIO_85_EM1D0);   //DL0
        GPIO_setPinConfig(GPIO_83_EM1D1);   //DL1
        GPIO_setPinConfig(GPIO_82_EM1D2);   //DL2
        GPIO_setPinConfig(GPIO_81_EM1D3);   //DL3
        GPIO_setPinConfig(GPIO_80_EM1D4);   //DL4
        GPIO_setPinConfig(GPIO_79_EM1D5);   //DL5
        GPIO_setPinConfig(GPIO_78_EM1D6);   //DL6
        GPIO_setPinConfig(GPIO_77_EM1D7);   //DL7
    //
    // Configure Data pins for Async mode.
    //
    for(i = 77;i <= 85;i++)
    {
        if(i != 84)
        {
            GPIO_setPadConfig(i, GPIO_PIN_TYPE_PULLUP);
            GPIO_setQualificationMode(i, GPIO_QUAL_ASYNC);
        }
    }

}

寄存器配置:
SysCtl_setEMIF1ClockDivider(SYSCTL_EMIF1CLK_DIV_1);

    //his function selects the master for an EMIF1 instance among CPU1 or CPU2.
    EMIF_selectMaster(EMIF1CONFIG_BASE, EMIF_MASTER_CPU1_G);
//    EMIF_selectMaster(EMIF1CONFIG_BASE, EMIF_MASTER_CPU1_G);

    //
    // Disable Access Protection. (CPU_FETCH/CPU_WR/DMA_WR)
    //
    EMIF_setAccessProtection(EMIF1CONFIG_BASE, 0x0);

    //
    // Commit the configuration related to protection. Till this bit remains
    // set, contents of EMIF1ACCPROT0 register can't be changed.
    //
    EMIF_commitAccessConfig(EMIF1CONFIG_BASE);

    //
    // Lock the configuration so that EMIF1COMMIT register can't be changed
    // any more.
    //
    EMIF_lockAccessConfig(EMIF1CONFIG_BASE);



    //
    // Configure GPIO pins for EMIF1.
    //
    setupEMIF1PinmuxSync8Bit();
//    setupEMIF1PinmuxAsync16Bit();
    //
    // Configures Normal Asynchronous Mode of Operation.
    //
    EMIF_setAsyncMode(EMIF1_BASE, EMIF_ASYNC_CS2_OFFSET,
                      EMIF_ASYNC_NORMAL_MODE);

    //
    // Disables Extended Wait Mode.
    //
    EMIF_disableAsyncExtendedWait(EMIF1_BASE, EMIF_ASYNC_CS2_OFFSET);

    //
    // Configure EMIF1 Data Bus Width.
    //
    EMIF_setAsyncDataBusWidth(EMIF1_BASE, EMIF_ASYNC_CS2_OFFSET,
                              EMIF_ASYNC_DATA_WIDTH_8);
    //! Sets the Asynchronous Memory Timing Characteristics.
    // Configure the access timing for CS2 space.
    //
    EMIF_AsyncTimingParams tparam;
    tparam.rSetup = 10;
    tparam.rStrobe = 5;
    tparam.rHold = 1;
    tparam.turnArnd =1;
    tparam.wSetup = 10;
    tparam.wStrobe =5;
    tparam.wHold = 1;
    EMIF_setAsyncTimingParams(EMIF1_BASE,EMIF_ASYNC_CS2_OFFSET,&tparam);
问题:读写无法实现,是不是配置问题,请大家帮忙提意见,谢谢。



作者: JSZC    时间: 2020-8-4 16:17
您好,我司C2000平台单核逻辑例程有SRAM读写的例程,您可以参考一下相关代码
资料位于光盘资料的以下路径:Demo/F2837xS/NonOS/Application/SRAM




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4