#include "DMA.h" #include uint16_t sinus[100] = {3496,3584,3666,3742,3811,3873,3928,3975,4015,4047,4071,4087,4095,4095,4087,4071,4047,4015,3975,3928,3873,3811,3742,3666,3584,3496,3402,3303,3199,3091,2978,2861,2742,2619,2495,2368,2241,2112,1984,1855,1728,1601,1477,1354,1235,1118,1005,897,793,694,600,512,430,354,285,223,168,121,81,49,25,9,1,1,9,25,49,81,121,168,223,285,354,430,512,600,694,793,897,1005,1118,1235,1354,1477,1601,1728,1855,1984,2112,2241,2368,2495,2619,2742,2861,2978,3091,3199,3303,3402}; //uint16_t sinus[] = {3496,4071,3873,2978,1728,600,25,223,1118,2368}; //uint16_t sinus[] = {3496,3496,600,600}; void DMA_ini(void) { DMA_InitTypeDef DMA_ini_DAC; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE); DMA_ini_DAC.DMA_Channel = DMA_Channel_7; DMA_ini_DAC.DMA_PeripheralBaseAddr = (DAC_BASE + 0x00000008); DMA_ini_DAC.DMA_Memory0BaseAddr = (uint32_t)sinus; DMA_ini_DAC.DMA_DIR = DMA_DIR_MemoryToPeripheral; DMA_ini_DAC.DMA_BufferSize = 4; // wylaczenie licznika inkrementującego adress dla urządzenia pereferynego DMA_ini_DAC.DMA_PeripheralInc = DMA_PeripheralInc_Disable; // wylaczenie licznika inkrementującego adress dla pamięci DMA_ini_DAC.DMA_MemoryInc = DMA_MemoryInc_Enable; //rozmiar buffora dla pamięci i urzadzenia pereferyjnego DMA_ini_DAC.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; DMA_ini_DAC.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; // tryb przesylania danych , circular - na okraglo beda przesylane dane DMA_ini_DAC.DMA_Mode = DMA_Mode_Circular; //priorytet przesylania danych po kanale DMA_ini_DAC.DMA_Priority = DMA_Priority_Medium; //wylaczenie trybu FIFO DMA_ini_DAC.DMA_FIFOMode = DMA_FIFOMode_Disable; // okreslenie pojemnosci (pwartosci progowej) stosu DMA_ini_DAC.DMA_FIFOThreshold = DMA_FIFOThreshold_1QuarterFull; //ustawienie trybu inkrementowania / przesylania danych z pamieci DMA_ini_DAC.DMA_MemoryBurst = DMA_MemoryBurst_Single; //ustawienie trybu inkrementowania / przesylania danych z /do urzadzenia pereferyjnego DMA_ini_DAC.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; DMA_Init(DMA1_Stream5, &DMA_ini_DAC); //inicjalizacja numeru DMA1 na strumieniu 5 DAC_DMACmd(DAC_Channel_1, ENABLE); // aktywacja kanalu nr 1 z DMA DMA_Cmd(DMA1_Stream5, ENABLE); //aktywacja DMA na strumieniu 5 }