Forum Discussion
Altera_Forum
Honored Contributor
21 years agoDMA Example HAL
Have anyone a good sample how works with DMA in HAL mode? I need something like to project Streaming with irq and streaming transfer. Thank you so much for any help http://forum.niosforum.com/wor...
Altera_Forum
Honored Contributor
21 years agoI've made it next:
unsigned int *p = (unsigned int*)(SDRAM_BASE + 0xF4240); void *pdma = (void*) SD_DMA_BASE; void isr_dma(void* context, alt_u32 id) { if ((IORD_ALTERA_AVALON_DMA_STATUS(SD_DMA_BASE))&&0x01) { IOWR_ALTERA_AVALON_DMA_STATUS(SD_DMA_BASE, 0); IOWR_ALTERA_AVALON_DMA_RADDRESS(SD_DMA_BASE, (int)p); IOWR_ALTERA_AVALON_DMA_WADDRESS(SD_DMA_BASE, SD_BASE); IOWR_ALTERA_AVALON_DMA_LENGTH(SD_DMA_BASE, 40); IOWR_ALTERA_AVALON_DMA_CONTROL(SD_DMA_BASE, 0x02DC); } } int main(void) { unsigned int *p = (unsigned int*)(SDRAM_BASE + 0xF4240); ............. //Write to memory something (in this case 10 words) for (i=0, pattern=0xFFAAFFAA; i<10; i++) { IOWR_32DIRECT(p+i, 0, pattern); } alt_irq_register(SD_DMA_IRQ, pdma, isr_dma); //Send to some device 10 words IOWR_ALTERA_AVALON_DMA_STATUS(SD_DMA_BASE, 0); IOWR_ALTERA_AVALON_DMA_RADDRESS(SD_DMA_BASE, (int)p); IOWR_ALTERA_AVALON_DMA_WADDRESS(SD_DMA_BASE, SD_BASE); IOWR_ALTERA_AVALON_DMA_LENGTH(SD_DMA_BASE, 40); IOWR_ALTERA_AVALON_DMA_CONTROL(SD_DMA_BASE, 0x02DC); ............... }