% var module = system.modules['/driverlib/lin.js']; % let Common = system.getScript("/driverlib/Common.js"); % var nameOfModule = "lin"; % var nameOfPeripheral = module.peripheralName; //***************************************************************************** // // LIN Configurations // //***************************************************************************** void `nameOfPeripheral`_init(){ % for(var i = 0; i < module.$instances.length; i++) % { % var instance = module.$instances[i]; `instance.$name`_init(); % } } %if (module != null) %{ % for(var i = 0; i < module.$instances.length; i++) { % var instance = module.$instances[i]; void `instance.$name`_init(){ % if (instance.opMode == "LIN"){ // // Initialize the LIN Module in LIN mode // LIN_initModule(`instance.$name`_BASE); // // Enter Software Reset State // LIN_enterSoftwareReset(`instance.$name`_BASE); LIN_setLINMode(`instance.$name`_BASE, `instance.linMode`); % if (instance.linMode == "LIN_MODE_LIN_RESPONDER" && instance.setResponderID) % { LIN_setIDResponderTask(`instance.$name`_BASE, (uint16_t)(0x`instance.responderIdByte`U)); %} LIN_setCommMode(`instance.$name`_BASE, `instance.linCommMode`); LIN_setDebugSuspendMode(`instance.$name`_BASE, `instance.linDebugMode`); LIN_setChecksumType(`instance.$name`_BASE, `instance.linChecksumType`); LIN_setMessageFiltering(`instance.$name`_BASE, `instance.linMessageFilter`); % if (instance.autoBaudRate && instance.linMode == "LIN_MODE_LIN_RESPONDER") % { LIN_enableAutomaticBaudrate(`instance.$name`_BASE); LIN_setMaximumBaudRate(`instance.$name`_BASE, `instance.linClkValue`, `instance.mbrVal`); %} else { LIN_setBaudRatePrescaler(`instance.$name`_BASE, `instance.brPrescaler`U, `instance.brDivider`U); %} LIN_setFrameLength(`instance.$name`_BASE, `instance.linFrameLength`U); LIN_setSyncFields(`instance.$name`_BASE, `instance.syncBreak`U, `instance.delimiter`U); LIN_setTxMask(`instance.$name`_BASE, (uint16_t)(0x`instance.txMask`U)); LIN_setRxMask(`instance.$name`_BASE, (uint16_t)(0x`instance.rxMask`U)); % if (instance.enableParity) % { LIN_enableParity(`instance.$name`_BASE); %} else { LIN_disableParity(`instance.$name`_BASE); %} % if (instance.enableMultibuffer) % { LIN_enableMultibufferMode(`instance.$name`_BASE); %} else { LIN_disableMultibufferMode(`instance.$name`_BASE); %} // // Finally exit SW reset and enter LIN ready state // LIN_exitSoftwareReset(`instance.$name`_BASE); % if (instance.enableLoopback){ // // Enable LIN test mode // % if (instance.loopbackMode == "LIN_TEST_INTERNAL") % { // // Enable Internal Loopback mode // LIN_enableIntLoopback(`instance.$name`_BASE); %} else { // // Enable External Loopback mode // LIN_enableExtLoopback(`instance.$name`_BASE, `instance.loopbackType`, `instance.analogLoopbackPath`); %} %} %if (instance.enableInterrupt) %{ % let interrupts = "" % for (let int_index in instance.interruptFlags) % { % interrupts += ((interrupts == "")?"":" | ") + instance.interruptFlags[int_index]; % } %if (interrupts != "") %{ LIN_enableInterrupt(`instance.$name`_BASE, `interrupts`); %} % let interruptLine0Flags = "" % for (var int_index in instance.interruptPriorityLine0) % { % interruptLine0Flags += ((interruptLine0Flags == "")?"":" | ") + instance.interruptPriorityLine0[int_index]; % } %if (interruptLine0Flags != "" && (instance.interruptLine.includes("LIN_INTERRUPT_LINE0"))) %{ // // Set the LIN interrupt priority Line 0 // LIN_setInterruptLevel0(`instance.$name`_BASE, `interruptLine0Flags`); LIN_enableGlobalInterrupt(`instance.$name`_BASE, LIN_INTERRUPT_LINE0); LIN_clearGlobalInterruptStatus(`instance.$name`_BASE, LIN_INTERRUPT_LINE0); %} % let interruptLine1Flags = "" % for (let int_index in instance.interruptPriorityLine1) % { % interruptLine1Flags += ((interruptLine1Flags == "")?"":" | ") + instance.interruptPriorityLine1[int_index]; % } %if (interruptLine1Flags != "" && (instance.interruptLine.includes("LIN_INTERRUPT_LINE1"))) %{ // // Set the LIN interrupt priority Line 1 // LIN_setInterruptLevel1(`instance.$name`_BASE, `interruptLine1Flags`); LIN_enableGlobalInterrupt(`instance.$name`_BASE, LIN_INTERRUPT_LINE1); LIN_clearGlobalInterruptStatus(`instance.$name`_BASE, LIN_INTERRUPT_LINE1); %} %} % } % else{ // // Initialize the LIN Module in SCI mode // LIN_initSCIModule(`instance.$name`_BASE); // // Enter Software Reset State // LIN_enterSoftwareReset(`instance.$name`_BASE); LIN_setSCICommMode(`instance.$name`_BASE, `instance.sciCommMode`); % if (instance.sleepMode) % { LIN_enableSCISleepMode(`instance.$name`_BASE); %} LIN_setDebugSuspendMode(`instance.$name`_BASE, `instance.linDebugMode`); LIN_setBaudRatePrescaler(`instance.$name`_BASE, `instance.brPrescaler`U, `instance.brDivider`U); LIN_setSCIFrameLength(`instance.$name`_BASE, `instance.sciFrameLength`U); LIN_setSCICharLength(`instance.$name`_BASE, `instance.sciCharLength`U); LIN_setSCIStopBits(`instance.$name`_BASE, `instance.sciStopBits`); % if (instance.enableSCIParity != "disabled") % { LIN_enableSCIParity(`instance.$name`_BASE, `instance.enableSCIParity`); %} else { LIN_disableSCIParity(`instance.$name`_BASE); %} % if (instance.enableMultibuffer) % { LIN_enableMultibufferMode(`instance.$name`_BASE); %} else { LIN_disableMultibufferMode(`instance.$name`_BASE); %} // // Finally exit SW reset and enter LIN ready state // LIN_exitSoftwareReset(`instance.$name`_BASE); % if (instance.enableLoopback){ // // Enable SCI test mode // % if (instance.loopbackMode == "LIN_TEST_INTERNAL") % { // // Enable Internal Loopback mode // LIN_enableIntLoopback(`instance.$name`_BASE); %} else { // // Enable External Loopback mode // LIN_enableExtLoopback(`instance.$name`_BASE, `instance.loopbackType`, `instance.analogLoopbackPath`); %} %} %if (instance.enableInterrupt) %{ % let interrupts = "" % for (let int_index in instance.sciInterruptFlags) % { % interrupts += ((interrupts == "")?"":" | ") + instance.sciInterruptFlags[int_index]; % } %if (interrupts != "") %{ LIN_enableSCIInterrupt(`instance.$name`_BASE, `interrupts`); %} % let interruptLine0Flags = "" % for (let int_index in instance.sciInterruptPriorityLine0) % { % interruptLine0Flags += ((interruptLine0Flags == "")?"":" | ") + instance.sciInterruptPriorityLine0[int_index]; % } %if (interruptLine0Flags != "" && (instance.sciInterruptLine.includes("LIN_INTERRUPT_LINE0"))) %{ // // Set the LIN SCI interrupt priority Line 0 // LIN_setSCIInterruptLevel0(`instance.$name`_BASE, `interruptLine0Flags`); LIN_enableGlobalInterrupt(`instance.$name`_BASE, LIN_INTERRUPT_LINE0); LIN_clearGlobalInterruptStatus(`instance.$name`_BASE, LIN_INTERRUPT_LINE0); %} % let interruptLine1Flags = "" % for (let int_index in instance.sciInterruptPriorityLine1) % { % interruptLine1Flags += ((interruptLine1Flags == "")?"":" | ") + instance.sciInterruptPriorityLine1[int_index]; % } %if (interruptLine1Flags != "" && (instance.sciInterruptLine.includes("LIN_INTERRUPT_LINE1"))) %{ // // Set the LIN SCI interrupt priority Line 1 // LIN_setSCIInterruptLevel1(`instance.$name`_BASE, `interruptLine1Flags`); LIN_enableGlobalInterrupt(`instance.$name`_BASE, LIN_INTERRUPT_LINE1); LIN_clearGlobalInterruptStatus(`instance.$name`_BASE, LIN_INTERRUPT_LINE1); %} %} % } % let instancePinmux = instance[nameOfModule]; % let solution = instancePinmux.$solution; % let peripheral = system.deviceData.peripherals[solution.peripheralName]; } %} %}