
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
//-------------------------------------------------------//
// Project Code : ALE300K03-21-LGE-GEN2.0-ME-CPU1
// File Name : Dma.cpp
// Created on : 2022. 9. 29.
// Description :
// Author : KimJeongWoo
// Last modified Date :
//-------------------------------------------------------//
#include "Cpu2DeviceDefine.h"
//-------------------------------------------------------------------//
// DMA를 사용하려고 하는 메모리의 영역이 DMA를 지원하는지 확인해야함 //
// EX) Flash 영역에서는 DMA 사용 안됨, LS메모리도 마찬가지 //
// //
//-------------------------------------------------------------------//
void DmaVariableInit()
{
// memset(&Dma1, 0, (sizeof(Dma1) / sizeof(int)));
// memset(&Dma3, 0, (sizeof(Dma3) / sizeof(int)));
// memset(&Ai, 0, (sizeof(Ai) / sizeof(int)));
// memset(&IntAi, 0, (sizeof(IntAi) / sizeof(int)));
}
void InitDma()
{
SysCtl_selectSecMaster(0, SYSCTL_SEC_MASTER_DMA);
DMA_initController();
DmaVariableInit();
InitDma1();
InitDma2();
InitDma3();
InitDma4();
}
//DMA1, DI, AD_FLT, GATE_FLT
void InitDma1()
{
// DMA_configAddresses(DMA_CH1_BASE, &Dma1, (const void*)(CS_FPGA + CS_FPGA_READ_OFFSET));
// DMA_configBurst(DMA_CH1_BASE, 4, 1, 1);
// DMA_configTransfer(DMA_CH1_BASE, 1, 1, 1);
// DMA_configWrap(DMA_CH1_BASE, 0xFFFF, 0, 0xFFFF, 0);
// DMA_configMode(DMA_CH1_BASE, DMA_TRIGGER_XINT1, (DMA_CFG_ONESHOT_ENABLE | DMA_CFG_CONTINUOUS_ENABLE));
//// DMA_setPriorityMode(1);
// DMA_setInterruptMode(DMA_CH1_BASE, DMA_INT_AT_END);
// DMA_enableTrigger(DMA_CH1_BASE);
// DMA_enableInterrupt(DMA_CH1_BASE);
// DMA_startChannel(DMA_CH1_BASE);
//
// Interrupt_register(INT_DMA_CH1, &Dma1_Isr);
// Interrupt_enable(INT_DMA_CH1);
}
// DMA2 = External ADC
void InitDma2()
{
// DMA_configAddresses(DMA_CH2_BASE, &Ai, (const void*)(CS_FPGA + CS_FPGA_ADC_READ_OFFSET));
// DMA_configBurst(DMA_CH2_BASE, 6, 0, 1);
// DMA_configTransfer(DMA_CH2_BASE, 6, 1, 1);
// DMA_configWrap(DMA_CH2_BASE, 0xFFFF, 0, 0xFFFF, 0);
// DMA_configMode(DMA_CH2_BASE, DMA_TRIGGER_XINT2, (DMA_CFG_ONESHOT_ENABLE | DMA_CFG_CONTINUOUS_ENABLE | DMA_CFG_SIZE_16BIT));
// DMA_setInterruptMode(DMA_CH2_BASE, DMA_INT_AT_END);
// DMA_enableTrigger(DMA_CH2_BASE);
// DMA_enableInterrupt(DMA_CH2_BASE);
// DMA_startChannel(DMA_CH2_BASE);
//
// Interrupt_register(INT_DMA_CH2, &Dma2_Isr);
// Interrupt_enable(INT_DMA_CH2);
}
// DMA3 PWM, DO, RSV, DAC, WD.....
void InitDma3()
{
// DMA_configAddresses(DMA_CH3_BASE, (const void*)(CS_FPGA + CS_FPGA_WRITE_OFFSET), &Dma3);
// DMA_configBurst(DMA_CH3_BASE, 23, 1, 1);
// DMA_configTransfer(DMA_CH3_BASE, 2, 1, 1);
// DMA_configWrap(DMA_CH3_BASE, 0xFFFF, 0, 0xFFFF, 0);
// DMA_configMode(DMA_CH3_BASE, DMA_TRIGGER_SOFTWARE, (DMA_CFG_ONESHOT_ENABLE | DMA_CFG_CONTINUOUS_ENABLE | DMA_CFG_SIZE_16BIT));
// DMA_setInterruptMode(DMA_CH3_BASE, DMA_INT_AT_END);
// DMA_enableTrigger(DMA_CH3_BASE);
// DMA_enableInterrupt(DMA_CH3_BASE);
// DMA_startChannel(DMA_CH3_BASE);
//
// Interrupt_register(INT_DMA_CH3, &Dma3_Isr);
// Interrupt_enable(INT_DMA_CH3);
}
//DMA3 = Internal ADC Read
// ADCA Interrupt 1번이 체널이 제일 많아 오래걸리므로 ADCA1번 기준으로 설정
void InitDma4()
{
// DMA_configAddresses(DMA_CH4_BASE, &AdcData, (const void*)ADCARESULT_BASE);
// DMA_configBurst(DMA_CH4_BASE, 8, 1, 1);
// DMA_configTransfer(DMA_CH4_BASE, 4, 0x19, 1);
// DMA_configWrap(DMA_CH4_BASE, 0xFFFF, 0, 0xFFFF, 0);
// DMA_configMode(DMA_CH4_BASE, DMA_TRIGGER_ADCA1, (DMA_CFG_ONESHOT_ENABLE | DMA_CFG_CONTINUOUS_ENABLE | DMA_CFG_SIZE_16BIT));
// DMA_setInterruptMode(DMA_CH4_BASE, DMA_INT_AT_END);
// DMA_enableTrigger(DMA_CH4_BASE);
// DMA_enableInterrupt(DMA_CH4_BASE);
// DMA_startChannel(DMA_CH4_BASE);
//
// Interrupt_register(INT_DMA_CH4, &NtcRead);
// Interrupt_enable(INT_DMA_CH4);
}