c2000ware-core-sdk/driverlib/.meta/fsirx/fsirx.board.c.xdt
2023-06-24 11:35:38 +05:30

125 lines
3.7 KiB
Plaintext

% var module = system.modules['/driverlib/fsirx.js'];
% let Common = system.getScript("/driverlib/Common.js");
% var nameOfModule = "fsirx";
% var nameOfPeripheral = module.peripheralName;
//*****************************************************************************
//
// FSIRX 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(){
% let instancePinmux = instance[nameOfModule];
//
// Setting for requested nWords and nLanes with transfers
//
FSI_setRxSoftwareFrameSize(`instance.$name`_BASE, `instance.softwareFrameSize`);
FSI_setRxDataWidth(`instance.$name`_BASE, `instance.dataWidth`);
%if (instance.enableInterrupt)
%{
%for (var index in instance.useInterrupts){
%if (instance.useInterrupts[index] == "FSI_INT1"){
% var interrupts = ""
% for (var int_index in instance.enabledINT1Interrupts)
% {
% interrupts += ((interrupts == "")?"":" | ") + instance.enabledINT1Interrupts[int_index];
% }
%if (interrupts != "")
%{
//
// Configure interrupt for INT1 line
//
FSI_enableRxInterrupt(`instance.$name`_BASE, `instance.useInterrupts[index]`,
`interrupts`);
%}
%}
%}
%}
%if (instance.enableInterrupt)
%{
%for (var index in instance.useInterrupts){
%if (instance.useInterrupts[index] == "FSI_INT2"){
% var interrupts = ""
% for (var int_index in instance.enabledINT2Interrupts)
% {
% interrupts += ((interrupts == "")?"":" | ") + instance.enabledINT2Interrupts[int_index];
% }
%if (interrupts != "")
%{
//
// Configure interrupt for INT2 line
//
FSI_enableRxInterrupt(`instance.$name`_BASE, `instance.useInterrupts[index]`,
`interrupts`);
%}
%}
%}
%}
% if (instance.pingTimeout)
%{
FSI_resetRxModule(`instance.$name`_BASE, FSI_RX_PING_WD_CNT_RESET);
DEVICE_DELAY_US(1);
FSI_clearRxModuleReset(`instance.$name`_BASE, FSI_RX_PING_WD_CNT_RESET);
//
// Set Recieve module ping timeout
//
FSI_setRxPingTimeoutMode(`instance.$name`_BASE, `instance.selectPingMode`);
FSI_enableRxPingWatchdog(`instance.$name`_BASE, `instance.timeoutDelay`);
%}
% if (instance.enableLoopback) {
//
// Configure for Internal Loopback
//
FSI_enableRxInternalLoopback(`instance.$name`_BASE);
% } else {
//
// Configure for External Loopback
//
FSI_disableRxInternalLoopback(`instance.$name`_BASE);
% }
% if (instance.enableTagMatching) {
% if (instance.frameType == "FSI_FRAME_TYPE_PING") {
//
// Configure for Ping Tag Matching
//
FSI_setRxPingTagRef(`instance.$name`_BASE, `instance.frameTag`);
FSI_setRxPingTagMask(`instance.$name`_BASE, `instance.tagMask`);
FSI_enableRxPingTagCompare(`instance.$name`_BASE);
% } else {
//
// Configure for Frame Tag Matching
//
FSI_setRxFrameTagRef(`instance.$name`_BASE, `instance.frameTag`);
FSI_setRxFrameTagMask(`instance.$name`_BASE, `instance.tagMask`);
FSI_enableRxFrameTagCompare(`instance.$name`_BASE);
% }
% }
//
// Initialize Rx, reset sequence, clear events
//
FSI_performRxInitialization(`instance.$name`_BASE);
%if (instance.enableDelayTap){
//
// Configure delay for Rx lines
//
FSI_configRxDelayLine(`instance.$name`_BASE, FSI_RX_DELAY_CLK,
`instance.tapValue1`);
FSI_configRxDelayLine(`instance.$name`_BASE, FSI_RX_DELAY_D0,
`instance.tapValue2`);
FSI_configRxDelayLine(`instance.$name`_BASE, FSI_RX_DELAY_D1,
`instance.tapValue3`);
%}
}
%}
%}