1 | //Programmcode
|
2 | uint32_t buf=0b10101010101010101100110011001100;
|
3 | HAL_SAI_Transmit_DMA2(&hsai_BlockA1, (uint8_t*)&buf, 1);
|
4 |
|
5 | //DMA Transmit Funktion
|
6 |
|
7 | HAL_StatusTypeDef HAL_SAI_Transmit_DMA2(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size){
|
8 |
|
9 | HAL_DMA_Start(hsai->hdmatx, (uint32_t)pData, (uint32_t)&hsai->Instance->DR, Size);
|
10 |
|
11 | // Enable SAI
|
12 | __HAL_SAI_ENABLE(hsai);
|
13 |
|
14 | /* Enable SAI Tx DMA Request */
|
15 | hsai->Instance->CR1 |= SAI_xCR1_DMAEN;
|
16 |
|
17 | return HAL_OK;
|
18 |
|
19 | }
|
20 |
|
21 | //Konfiguration SAI
|
22 |
|
23 | hsai_BlockA1.Instance = SAI1_Block_A;
|
24 | hsai_BlockA1.Init.AudioMode = SAI_MODEMASTER_TX;
|
25 | hsai_BlockA1.Init.Synchro = SAI_ASYNCHRONOUS;
|
26 | hsai_BlockA1.Init.OutputDrive = SAI_OUTPUTDRIVE_DISABLE;
|
27 | hsai_BlockA1.Init.NoDivider = SAI_MASTERDIVIDER_ENABLE;
|
28 | hsai_BlockA1.Init.FIFOThreshold = SAI_FIFOTHRESHOLD_HF;
|
29 | hsai_BlockA1.Init.AudioFrequency = SAI_AUDIO_FREQUENCY_8K;
|
30 | hsai_BlockA1.Init.SynchroExt = SAI_SYNCEXT_DISABLE;
|
31 | hsai_BlockA1.Init.MonoStereoMode = SAI_STEREOMODE;
|
32 | hsai_BlockA1.Init.CompandingMode = SAI_NOCOMPANDING;
|
33 | hsai_BlockA1.Init.TriState = SAI_OUTPUT_NOTRELEASED;
|
34 | HAL_SAI_InitProtocol(&hsai_BlockA1, SAI_I2S_MSBJUSTIFIED, SAI_PROTOCOL_DATASIZE_32BIT, 2);
|
35 |
|
36 | //Konfiguration DMA
|
37 |
|
38 | __HAL_RCC_DMA2_CLK_ENABLE();
|
39 |
|
40 | hdma_sai1_a.Instance=DMA2_Stream1;
|
41 | hdma_sai1_a.Init.Channel = DMA_CHANNEL_0;// Channel 0, Stream 0
|
42 | hdma_sai1_a.Init.Direction=DMA_PERIPH_TO_MEMORY;
|
43 | hdma_sai1_a.Init.PeriphInc=DMA_PINC_DISABLE;
|
44 | hdma_sai1_a.Init.MemInc=DMA_MINC_DISABLE;
|
45 | hdma_sai1_a.Init.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD;
|
46 | hdma_sai1_a.Init.MemDataAlignment=DMA_MDATAALIGN_HALFWORD;
|
47 | hdma_sai1_a.Init.Mode=DMA_NORMAL;
|
48 | hdma_sai1_a.Init.Priority=DMA_PRIORITY_HIGH;
|
49 | hdma_sai1_a.Init.FIFOMode=DMA_FIFOMODE_DISABLE;
|
50 | hdma_sai1_a.Init.FIFOThreshold=DMA_FIFO_THRESHOLD_HALFFULL;
|
51 | hdma_sai1_a.Init.MemBurst=DMA_MBURST_SINGLE;
|
52 | hdma_sai1_a.Init.PeriphBurst=DMA_PBURST_SINGLE;
|
53 | hdma_sai1_a.XferCpltCallback = HAL_DMA_XFER_HALFCPLT_CB_ID;
|
54 |
|
55 | //Initialize DMA
|
56 | HAL_DMA_Init(&hdma_sai1_a);
|