Skip to content

File Dma_Transmit.cpp

File List > Dma_Transmit > Dma_Transmit.cpp

Go to the documentation of this file

Source Code

#include "daisy_seed.h"

using namespace daisy;

DaisySeed    hw;
UartHandler uart;

#define BUFF_SIZE 256

// buffer to be dma transmitted
static uint8_t DMA_BUFFER_MEM_SECTION buff[BUFF_SIZE];

void RestartUart(void* state, UartHandler::Result res);

// dma end callback, will start a new DMA transfer
void RestartUart(void* state, UartHandler::Result res)
{
    if(res != UartHandler::Result::ERR)
    {
        uart.DmaTransmit(buff, BUFF_SIZE, NULL, RestartUart, NULL);
    }
}

int main(void)
{
    // Initialize the daisy hardware
    hw.Init();

    // initilize the buffer
    for(int i = 0; i < BUFF_SIZE; i++)
    {
        buff[i] = i;
    }

    // Configure the Uart Peripheral
    UartHandler::Config uart_conf;
    uart_conf.periph        = UartHandler::Config::Peripheral::USART_1;
    uart_conf.mode          = UartHandler::Config::Mode::TX;
    uart_conf.pin_config.tx = Pin(PORTB, 6);
    uart_conf.pin_config.rx = Pin(PORTB, 7);

    // Initialize the uart peripheral and start the DMA transmit
    uart.Init(uart_conf);
    uart.DmaTransmit(buff, BUFF_SIZE, NULL, RestartUart, NULL);

    // loop forever
    while(1) {}
}