Quantcast
Channel: Infineon Forums
Viewing all articles
Browse latest Browse all 9892

start New DMA transfer to EBU

$
0
0
Hello Form User

On my EBU an ext device (Display) is working

#define EBU_EXT_RAM_REGION_BASE 0x60000000UL
/*GDDRAM base address assignment */
#define GDDRAM EBU_EXT_RAM_REGION_BASE

Currently I send data via Loop to my Display

for (uint16_t i=0;i<12;i++) {
for (uint16_t j= 0 ;j<320;j++) {

*(volatile uint16_t *)(GDDRAM) = FrameBuffer.DisplayBuffer[j][i].value_u16[0];
*(volatile uint16_t *)(GDDRAM) = FrameBuffer.DisplayBuffer[j][i].value_u16[1];
*(volatile uint16_t *)(GDDRAM) = FrameBuffer.DisplayBuffer[j][i].value_u16[2];
}
}

Now I want to use the DMA Channel


XMC_DMA_CH_CONFIG_t GPDMA0_Ch0_config =
{
.enable_interrupt = true,
.dst_transfer_width = XMC_DMA_CH_TRANSFER_WIDTH_32,
.src_transfer_width = XMC_DMA_CH_TRANSFER_WIDTH_16,
.dst_address_count_mode = XMC_DMA_CH_ADDRESS_COUNT_MODE_NO_CHANGE,
.src_address_count_mode = XMC_DMA_CH_ADDRESS_COUNT_MODE_INCREMENT,
.dst_burst_length = XMC_DMA_CH_BURST_LENGTH_8,
.src_burst_length = XMC_DMA_CH_BURST_LENGTH_8,
.enable_src_gather = true,
.enable_dst_scatter = false,
.transfer_flow = XMC_DMA_CH_TRANSFER_FLOW_M2M_DMA,
.src_addr = (uint32_t) &FrameBuffer.DisplayBuffer_u32,
.dst_addr = (uint32_t) GDDRAM,
.src_gather_interval = 1,
.src_gather_count = 1,
.dst_scatter_interval = 0,
.dst_scatter_count = 0,
.block_size = 3840,
.transfer_type = XMC_DMA_CH_TRANSFER_TYPE_SINGLE_BLOCK,
.priority = XMC_DMA_CH_PRIORITY_0,
.src_handshaking = XMC_DMA_CH_SRC_HANDSHAKING_SOFTWARE,
};

XMC_DMA_Init(XMC_DMA0);
XMC_DMA_CH_Init(XMC_DMA0, 0, &GPDMA0_Ch0_config);
XMC_DMA_CH_EnableEvent(XMC_DMA0, 0, XMC_DMA_CH_EVENT_BLOCK_TRANSFER_COMPLETE);
NVIC_SetPriority(GPDMA0_0_IRQn,11);
NVIC_EnableIRQ(GPDMA0_0_IRQn);

I have two question Is the initialisation ok? and how I can start a single block Transfer

Thanks

EbbeSand

Viewing all articles
Browse latest Browse all 9892

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>