Quantcast
Channel: Raspberry Pi Forums
Viewing all articles
Browse latest Browse all 6180

General • Re: Pico 2 - Multicore code, possible conflict SPI/DMA

$
0
0
I changed code which sends buffer to use interrupt

Code:

void dma_buffer_irq_handler(){    dma_hw->ints1 = 1u << dma_channel;    display_refresh();    _hardware->write(LCD_CS_PIN, 1);}void init_dma(){    dma_channel = dma_claim_unused_channel(true);    dma_channel_config config = dma_channel_get_default_config(dma_channel);    channel_config_set_transfer_data_size(&config, DMA_SIZE_8);    channel_config_set_dreq(&config, spi_get_dreq(_hardware->get_spi_port(), true));    dma_channel_configure(        dma_channel,        &config,        &spi_get_hw(_hardware->get_spi_port())->dr,        buffer,        BUFFER_SIZE,        false    );    dma_channel_set_irq1_enabled(dma_channel, true);    irq_set_exclusive_handler(DMA_IRQ_1, dma_buffer_irq_handler);    irq_set_enabled(DMA_IRQ_1, true);    channel_config_set_read_increment(&config, true);    channel_config_set_write_increment(&config, false);}void draw_buffer(){    _hardware->write(LCD_DC_PIN, 1);    _hardware->write(LCD_CS_PIN, 0);    dma_channel_transfer_from_buffer_now(dma_channel, buffer, BUFFER_SIZE);    __wfi();}
It sends whole buffer to the screen at once. Audio module is still blocked. Maybe split buffer to parts will help.

Statistics: Posted by YamiFive — Tue Apr 29, 2025 4:47 am



Viewing all articles
Browse latest Browse all 6180

Trending Articles