Facebook
From Burly Hornbill, 8 Years ago, written in C.
Embed
Download Paste or View Raw
Hits: 335
  1. #include "DMA.h"
  2. #include <stm32f4xx.h>
  3.  
  4. 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};
  5.  
  6. //uint16_t sinus[] = {3496,4071,3873,2978,1728,600,25,223,1118,2368};
  7.  
  8. //uint16_t sinus[] = {3496,3496,600,600};
  9.  
  10.  
  11. void DMA_ini(void)
  12. {
  13.         DMA_InitTypeDef DMA_ini_DAC;
  14.        
  15.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE);
  16.        
  17.         DMA_ini_DAC.DMA_Channel = DMA_Channel_7;
  18.         DMA_ini_DAC.DMA_PeripheralBaseAddr = (DAC_BASE + 0x00000008);
  19.         DMA_ini_DAC.DMA_Memory0BaseAddr = (uint32_t)sinus;
  20.         DMA_ini_DAC.DMA_DIR = DMA_DIR_MemoryToPeripheral;
  21.         DMA_ini_DAC.DMA_BufferSize = 4;
  22.         // wylaczenie licznika inkrementującego adress dla urządzenia pereferynego
  23.         DMA_ini_DAC.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  24.         // wylaczenie licznika inkrementującego adress dla pamięci
  25.         DMA_ini_DAC.DMA_MemoryInc = DMA_MemoryInc_Enable;
  26.         //rozmiar buffora dla pamięci i urzadzenia pereferyjnego
  27.         DMA_ini_DAC.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
  28.         DMA_ini_DAC.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
  29.         // tryb przesylania danych , circular - na okraglo beda przesylane dane
  30.         DMA_ini_DAC.DMA_Mode = DMA_Mode_Circular;
  31.         //priorytet przesylania danych po kanale
  32.         DMA_ini_DAC.DMA_Priority = DMA_Priority_Medium;
  33.         //wylaczenie trybu FIFO
  34.         DMA_ini_DAC.DMA_FIFOMode = DMA_FIFOMode_Disable;
  35.         // okreslenie pojemnosci (pwartosci progowej) stosu
  36.         DMA_ini_DAC.DMA_FIFOThreshold = DMA_FIFOThreshold_1QuarterFull;
  37.         //ustawienie trybu inkrementowania / przesylania danych z pamieci
  38.         DMA_ini_DAC.DMA_MemoryBurst = DMA_MemoryBurst_Single;
  39.         //ustawienie trybu inkrementowania / przesylania danych z /do urzadzenia pereferyjnego
  40.         DMA_ini_DAC.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
  41.        
  42.         DMA_Init(DMA1_Stream5, &DMA_ini_DAC); //inicjalizacja numeru DMA1 na strumieniu 5
  43.        
  44.         DAC_DMACmd(DAC_Channel_1, ENABLE);      // aktywacja kanalu nr 1 z DMA
  45.        
  46.         DMA_Cmd(DMA1_Stream5, ENABLE); //aktywacja DMA na strumieniu 5
  47. }
  48.