150 lines
6.9 KiB
Plaintext
150 lines
6.9 KiB
Plaintext
|
|
% var nameOfModule = "emif1";
|
||
|
|
% var module = system.modules['/driverlib/' + nameOfModule + '.js'];
|
||
|
|
% let Common = system.getScript("/driverlib/Common.js");
|
||
|
|
% var nameOfPeripheral = module.peripheralName;
|
||
|
|
//*****************************************************************************
|
||
|
|
//
|
||
|
|
// EMIF1 Configurations
|
||
|
|
//
|
||
|
|
//*****************************************************************************
|
||
|
|
void `nameOfPeripheral`_init(){
|
||
|
|
%if (module != null)
|
||
|
|
%{
|
||
|
|
% for(var i = 0; i < module.$instances.length; i++) {
|
||
|
|
% var instance = module.$instances[i];
|
||
|
|
//
|
||
|
|
// `instance.$name` Initialization
|
||
|
|
//
|
||
|
|
% let instancePinmux = instance[nameOfModule];
|
||
|
|
% let solution = instancePinmux.$solution;
|
||
|
|
SysCtl_setEMIF1ClockDivider(`instance.$name`_CLKDIV);
|
||
|
|
% if(instance.selController){
|
||
|
|
EMIF_selectController(`instance.$name`_CONFIGBASE, `instance.$name`_SELCONTROLLER);
|
||
|
|
% }
|
||
|
|
EMIF_setAccessProtection(`instance.$name`_CONFIGBASE, `instance.$name`_SELACCESS);
|
||
|
|
% if (instance.enableCS0){
|
||
|
|
% if (instance.enableSyncSelfrefresh){
|
||
|
|
EMIF_enableSyncSelfRefresh(`instance.$name`_BASE);
|
||
|
|
% } else{
|
||
|
|
EMIF_disableSyncSelfRefresh(`instance.$name`_BASE);
|
||
|
|
% }
|
||
|
|
% if (instance.enableSyncPowerDown){
|
||
|
|
EMIF_enableSyncPowerDown(`instance.$name`_BASE);
|
||
|
|
% } else{
|
||
|
|
EMIF_disableSyncPowerDown(`instance.$name`_BASE);
|
||
|
|
% }
|
||
|
|
% if (instance.enableSyncRefreshInPowerDown){
|
||
|
|
EMIF_enableSyncRefreshInPowerDown(`instance.$name`_BASE);
|
||
|
|
% } else{
|
||
|
|
EMIF_disableSyncRefreshInPowerDown(`instance.$name`_BASE);
|
||
|
|
% }
|
||
|
|
//
|
||
|
|
//CS0 timing definitions
|
||
|
|
//
|
||
|
|
EMIF_SyncTimingParams `instance.$name`_Cs0Timings = {`instance.$name`_CS0TRFC,
|
||
|
|
`instance.$name`_CS0TRP,
|
||
|
|
`instance.$name`_CS0TRCD,
|
||
|
|
`instance.$name`_CS0TWR,
|
||
|
|
`instance.$name`_CS0TRAS,
|
||
|
|
`instance.$name`_CS0TRC,
|
||
|
|
`instance.$name`_CS0TRRD};
|
||
|
|
//
|
||
|
|
//CS0 config
|
||
|
|
//
|
||
|
|
EMIF_SyncConfig `instance.$name`_Cs0Config = {`instance.$name`_CS0SIZE,
|
||
|
|
`instance.$name`_CS0NUMBANKS,
|
||
|
|
`instance.$name`_CS0CAS,
|
||
|
|
`instance.$name`_CS0CAWIDTH};
|
||
|
|
//
|
||
|
|
//CSO config functions
|
||
|
|
//
|
||
|
|
EMIF_setSyncTimingParams(`instance.$name`_BASE, &`instance.$name`_Cs0Timings);
|
||
|
|
EMIF_setSyncSelfRefreshExitTmng(`instance.$name`_BASE, `instance.$name`_CS0TXSR);
|
||
|
|
EMIF_setSyncRefreshRate(`instance.$name`_BASE, `instance.$name`_CS0REFRESH);
|
||
|
|
EMIF_setSyncMemoryConfig(`instance.$name`_BASE, &`instance.$name`_Cs0Config);
|
||
|
|
% }
|
||
|
|
% if (instance.enableCS2 || instance.enableCS3 || instance.enableCS4){
|
||
|
|
//set global Async parameters
|
||
|
|
EMIF_setAsyncWaitPolarity(`instance.$name`_BASE, `instance.$name`_WAITPOL);
|
||
|
|
EMIF_setAsyncMaximumWaitCycles(`instance.$name`_BASE, `instance.$name`_MAXWAIT);
|
||
|
|
//
|
||
|
|
//handle interrupt flags
|
||
|
|
//
|
||
|
|
% if ((instance.asyncIntFlags).length > 0){
|
||
|
|
EMIF_enableAsyncInterrupt(`instance.$name`_BASE, `instance.$name`_ASYNCINTFLAGS);
|
||
|
|
% } else{
|
||
|
|
EMIF_disableAsyncInterrupt(`instance.$name`_BASE, `instance.$name`_ASYNCINTFLAGS);
|
||
|
|
% }
|
||
|
|
% }
|
||
|
|
% if (instance.enableCS2){
|
||
|
|
//
|
||
|
|
//CS2 Timings
|
||
|
|
//
|
||
|
|
EMIF_AsyncTimingParams `instance.$name`_Cs2Timings = {`instance.$name`_CS2RSETUP,
|
||
|
|
`instance.$name`_CS2RSTROBE,
|
||
|
|
`instance.$name`_CS2RHOLD,
|
||
|
|
`instance.$name`_CS2WSETUP,
|
||
|
|
`instance.$name`_CS2WSTROBE,
|
||
|
|
`instance.$name`_CS2WHOLD,
|
||
|
|
`instance.$name`_CS2TURNAROUND};
|
||
|
|
//
|
||
|
|
//CS2 config functions
|
||
|
|
//
|
||
|
|
EMIF_setAsyncMode(`instance.$name`_BASE, EMIF_ASYNC_CS2_OFFSET, `instance.$name`_CS2ASYNCMODE);
|
||
|
|
EMIF_setAsyncDataBusWidth(`instance.$name`_BASE, EMIF_ASYNC_CS2_OFFSET, `instance.$name`_CS2WORDSIZE);
|
||
|
|
EMIF_setAsyncTimingParams(`instance.$name`_BASE, EMIF_ASYNC_CS2_OFFSET, &`instance.$name`_Cs2Timings);
|
||
|
|
% if (instance.cs2enableExtWait){
|
||
|
|
EMIF_enableAsyncExtendedWait(`instance.$name`_BASE, EMIF_ASYNC_CS2_OFFSET);
|
||
|
|
% } else {
|
||
|
|
EMIF_disableAsyncExtendedWait(`instance.$name`_BASE, EMIF_ASYNC_CS2_OFFSET);
|
||
|
|
% }
|
||
|
|
% }
|
||
|
|
% if (instance.enableCS3){
|
||
|
|
//
|
||
|
|
//CS3 Timings
|
||
|
|
//
|
||
|
|
EMIF_AsyncTimingParams `instance.$name`_Cs3Timings = {`instance.$name`_CS3RSETUP,
|
||
|
|
`instance.$name`_CS3RSTROBE,
|
||
|
|
`instance.$name`_CS3RHOLD,
|
||
|
|
`instance.$name`_CS3WSETUP,
|
||
|
|
`instance.$name`_CS3WSTROBE,
|
||
|
|
`instance.$name`_CS3WHOLD,
|
||
|
|
`instance.$name`_CS3TURNAROUND};
|
||
|
|
//
|
||
|
|
//CS3 config functions
|
||
|
|
//
|
||
|
|
EMIF_setAsyncMode(`instance.$name`_BASE, EMIF_ASYNC_CS3_OFFSET, `instance.$name`_CS3ASYNCMODE);
|
||
|
|
EMIF_setAsyncDataBusWidth(`instance.$name`_BASE, EMIF_ASYNC_CS3_OFFSET, `instance.$name`_CS3WORDSIZE);
|
||
|
|
EMIF_setAsyncTimingParams(`instance.$name`_BASE, EMIF_ASYNC_CS3_OFFSET, &`instance.$name`_Cs3Timings);
|
||
|
|
% if (instance.cs3enableExtWait){
|
||
|
|
EMIF_enableAsyncExtendedWait(`instance.$name`_BASE, EMIF_ASYNC_CS3_OFFSET);
|
||
|
|
% } else{
|
||
|
|
EMIF_disableAsyncExtendedWait(`instance.$name`_BASE, EMIF_ASYNC_CS3_OFFSET);
|
||
|
|
% }
|
||
|
|
% }
|
||
|
|
% if (instance.enableCS4){
|
||
|
|
//
|
||
|
|
//CS4 Timings
|
||
|
|
//
|
||
|
|
EMIF_AsyncTimingParams `instance.$name`_Cs4Timings = {`instance.$name`_CS4RSETUP,
|
||
|
|
`instance.$name`_CS4RSTROBE,
|
||
|
|
`instance.$name`_CS4RHOLD,
|
||
|
|
`instance.$name`_CS4WSETUP,
|
||
|
|
`instance.$name`_CS4WSTROBE,
|
||
|
|
`instance.$name`_CS4WHOLD,
|
||
|
|
`instance.$name`_CS4TURNAROUND};
|
||
|
|
//
|
||
|
|
//CS4 config functions
|
||
|
|
//
|
||
|
|
EMIF_setAsyncMode(`instance.$name`_BASE, EMIF_ASYNC_CS4_OFFSET, `instance.$name`_CS4ASYNCMODE);
|
||
|
|
EMIF_setAsyncDataBusWidth(`instance.$name`_BASE, EMIF_ASYNC_CS4_OFFSET, `instance.$name`_CS4WORDSIZE);
|
||
|
|
EMIF_setAsyncTimingParams(`instance.$name`_BASE, EMIF_ASYNC_CS4_OFFSET, &`instance.$name`_Cs4Timings);
|
||
|
|
% if (instance.cs4enableExtWait){
|
||
|
|
EMIF_enableAsyncExtendedWait(`instance.$name`_BASE, EMIF_ASYNC_CS4_OFFSET);
|
||
|
|
% } else{
|
||
|
|
EMIF_disableAsyncExtendedWait(`instance.$name`_BASE, EMIF_ASYNC_CS4_OFFSET);
|
||
|
|
% }
|
||
|
|
% }
|
||
|
|
%}
|
||
|
|
%}
|
||
|
|
}
|