关于LM3S9B96 的EPI



关于LM3S9B96 的EPI 不知道如何配置 采用16位模式 数据和地址复用方式, 外接一个4M SRAM 数据线16条 地址线用373锁存16条+EPIO17+片选(EPIO18),希望哪位能给我讲解下

  • 贴个例程给你,参考一下

    /****************************************Copyright (c)****************************************************

    **                                       捷恩斯威科技

    **                                  http://www.jeansway.cn

    **       TEL:0755-83024605

    **--------------File Info---------------------------------------------------------------------------------

    ** File Name:               Main.c

    ** Last modified Date:      2011-05-31

    ** Last Version:            1.0

    ** Description:             The main function example template  主函数例子模版

    ** 适用于LM3S9B96 EPI 使用外部Flash+SRAm board

    **--------------------------------------------------------------------------------------------------------

    ** Created By:              彭博[mail:pengbo@jeansway.cn][phone:15112272786]

    ** Created date:            2011-05-31

    ** Version:                 1.0

    ** Descriptions:            The original version 初始版本

    **

    **--------------------------------------------------------------------------------------------------------

    ** Modified by:            

    ** Modified date:          

    ** Version:                

    ** Description:            

    **

    *********************************************************************************************************/

    #include <include.h>

    #include <extflash.h>

    int main(void)

    {

    unsigned char ub_FlashDataCheck[8] = {0x11,0x22,0x33,0x44,0x55,0x66,0x77};

       //================= 系统初始化 =================

       SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |

                      SYSCTL_XTAL_16MHZ); //配置系统时钟为80MHz

       SysCtlPeripheralEnable(SYSCTL_PERIPH_EPI0); //使能EPI模块

       SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); //使能GPIO模块

       SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);

       SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

       SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);

       SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH);

       SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);

    //============ 配置GPIO的电流及斜率 ============

    GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_4|GPIO_PIN_5,

                                GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);

    GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_4|GPIO_PIN_5,

                              GPIO_DIR_MODE_HW);

    GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,

                                GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);

    GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7,

                              GPIO_DIR_MODE_HW);

    GPIOPadConfigSet(GPIO_PORTD_BASE, GPIO_PIN_2|GPIO_PIN_3,

                                GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);

    GPIODirModeSet(GPIO_PORTD_BASE, GPIO_PIN_2|GPIO_PIN_3,

                              GPIO_DIR_MODE_HW);

    GPIOPadConfigSet(GPIO_PORTE_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,

                                GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);

    GPIODirModeSet(GPIO_PORTE_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,

                              GPIO_DIR_MODE_HW);

    GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_4|GPIO_PIN_5,

                                GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);

    GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_4|GPIO_PIN_5,

                              GPIO_DIR_MODE_HW);

    GPIOPadConfigSet(GPIO_PORTG_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_7,

                                GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);

    GPIODirModeSet(GPIO_PORTG_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_7,

                              GPIO_DIR_MODE_HW);

    GPIOPadConfigSet(GPIO_PORTH_BASE, 0xff,

                                GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);

    GPIODirModeSet(GPIO_PORTH_BASE, 0xff,

                              GPIO_DIR_MODE_HW);

    GPIOPadConfigSet(GPIO_PORTJ_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6,

                                GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD);

    GPIODirModeSet(GPIO_PORTJ_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6,

                              GPIO_DIR_MODE_HW);

    //================== 配置GPIO为EPI=================

       GPIOPinConfigure(GPIO_PH3_EPI0S0);

       GPIOPinConfigure(GPIO_PH2_EPI0S1);

       GPIOPinConfigure(GPIO_PC4_EPI0S2);

       GPIOPinConfigure(GPIO_PC5_EPI0S3);

       GPIOPinConfigure(GPIO_PC6_EPI0S4);

       GPIOPinConfigure(GPIO_PC7_EPI0S5);

       GPIOPinConfigure(GPIO_PH0_EPI0S6);

       GPIOPinConfigure(GPIO_PH1_EPI0S7);

       GPIOPinConfigure(GPIO_PE0_EPI0S8);

       GPIOPinConfigure(GPIO_PE1_EPI0S9);

       GPIOPinConfigure(GPIO_PH4_EPI0S10);

       GPIOPinConfigure(GPIO_PH5_EPI0S11);

       GPIOPinConfigure(GPIO_PF4_EPI0S12);

       GPIOPinConfigure(GPIO_PG0_EPI0S13);

       GPIOPinConfigure(GPIO_PG1_EPI0S14);

       GPIOPinConfigure(GPIO_PF5_EPI0S15);

       GPIOPinConfigure(GPIO_PJ0_EPI0S16);

       GPIOPinConfigure(GPIO_PJ1_EPI0S17);

       GPIOPinConfigure(GPIO_PJ2_EPI0S18);

       GPIOPinConfigure(GPIO_PJ3_EPI0S19);

       GPIOPinConfigure(GPIO_PD2_EPI0S20);

    GPIOPinConfigure(GPIO_PD3_EPI0S21);

    GPIOPinConfigure(GPIO_PB5_EPI0S22);

    GPIOPinConfigure(GPIO_PB4_EPI0S23);

    GPIOPinConfigure(GPIO_PE2_EPI0S24);

    GPIOPinConfigure(GPIO_PE3_EPI0S25);

    GPIOPinConfigure(GPIO_PH6_EPI0S26);

    GPIOPinConfigure(GPIO_PH7_EPI0S27);

    GPIOPinConfigure(GPIO_PJ4_EPI0S28);

       GPIOPinConfigure(GPIO_PJ5_EPI0S29);

       GPIOPinConfigure(GPIO_PJ6_EPI0S30);

       GPIOPinConfigure(GPIO_PG7_EPI0S31);

    //================== EPI配置 ===================

    EPIModeSet(EPI0_BASE, EPI_MODE_HB8); //Flash + SRAM使用HB8模式

       EPIDividerSet(EPI0_BASE, 1); //波特率等于系统时钟/2

    EPIConfigHB8Set(EPI0_BASE,

    EPI_HB8_MODE_ADMUX | //使用ADMUX子模式,地址/数据总线复用子模式

    EPI_HB8_WRWAIT_0   | //无写等待态

    EPI_HB8_RDWAIT_0   | //无读等待态

    EPI_HB8_WORD_ACCESS| //使用字访问模式

    EPI_HB8_CSCFG_ALE , //使用ALE配置,EPI0S30用作ALE,EPI0S26、27则由访问的地址确定

                       0); //无使用FIFO,无需设置

       EPIAddressMapSet(EPI0_BASE,

    EPI_ADDR_RAM_SIZE_256MB | //设置片外SRAM空间为256MB

    EPI_ADDR_RAM_BASE_6); //设置自外SRAM的映射空间基地址为0x60000000

    //==============================================

       while(HWREG(EPI0_BASE + EPI_O_STAT) &  EPI_STAT_INITSEQ)

       {

       }

    if(ExtFlashPresent()!= true) //识别外部flash

    {

    }

    ExtFlashBlockErase(0x60000000,1); //以0x60000000开始,擦除1个单位block空间

    ExtFlashWrite(0x60000740,8,ub_FlashDataCheck); //从0x60000740开始写入8byte数据

    while(1)

    {}

    }