1
1
#include < dma.h>
2
+ #include < DMATransfer.h>
2
3
3
4
/* *
4
5
* @brief Prepares for DMA Transfer by enabling clocks
5
6
* and storing the settings in the slots
6
7
* @param settings : dma transfer settings
7
8
* @retval None
8
9
*/
9
- void DMATransferClass::prepare (dmatransfer_t *settings) {
10
+ void DMATransferClass::prepare (dmatransfer_t *settings)
11
+ {
10
12
if (!_prepared) {
11
13
// TODO - figure out which DMA to enable the clock for.
12
14
__HAL_RCC_DMA1_CLK_ENABLE ();
13
-
15
+
14
16
memcpy (&_transfer_settings, settings, sizeof (dmatransfer_t ));
15
17
16
- _transfer_settings.dma_settings .Init .Direction = transfer_direction;
18
+ _transfer_settings.dma_settings .Init .Direction = _transfer_settings. transfer_direction ;
17
19
_transfer_settings.dma_settings .Init .PeriphInc = DMA_PINC_DISABLE;
18
20
_transfer_settings.dma_settings .Init .MemInc = DMA_MINC_DISABLE;
19
21
_transfer_settings.dma_settings .Init .PeriphDataAlignment = DMA_PDATAALIGN_WORD;
20
22
_transfer_settings.dma_settings .Init .MemDataAlignment = DMA_MDATAALIGN_WORD;
21
- _transfer_settings.dma_settings .Init .Mode = settings .circular ? DMA_CIRCULAR : DMA_NORMAL;
23
+ _transfer_settings.dma_settings .Init .Mode = _transfer_settings .circular ? DMA_CIRCULAR : DMA_NORMAL;
22
24
_transfer_settings.dma_settings .Init .Priority = DMA_PRIORITY_VERY_HIGH;
23
- _transfer_settings.dma_settings .Instance = settings .channel_stream ;
25
+ _transfer_settings.dma_settings .Instance = _transfer_settings .channel_stream ;
24
26
// TODO - intialize the callbacks.
25
27
26
28
// Perform HAL Initialization first.
27
- HAL_DMA_Init (&dmaUpdate );
29
+ HAL_DMA_Init (&_transfer_settings. dma_settings );
28
30
29
31
// Call dma prepare
30
- prepare_dma (&_transfer_settings);
32
+ prepare_dma (&_transfer_settings. dma_settings );
31
33
}
32
34
}
33
35
34
36
/* *
35
37
* @brief Begin the DMA transfer
36
38
* @retval None
37
39
*/
38
- void DMATransferClass::begin (int bytes_to_transfer) {
39
- if (!prepared) {
40
+ void DMATransferClass::begin (int bytes_to_transfer)
41
+ {
42
+ if (!_prepared) {
40
43
// call dma prepare
41
- prepare_dma (&_transfer_settings);
44
+ prepare_dma (&_transfer_settings. dma_settings );
42
45
}
43
46
44
47
// Reset flags so it starts over
@@ -55,12 +58,13 @@ void DMATransferClass::begin(int bytes_to_transfer) {
55
58
* @brief End the DMA transfer
56
59
* @retval None
57
60
*/
58
- void DMATransferClass::end () {
61
+ void DMATransferClass::end ()
62
+ {
59
63
60
- __HAL_DMA_DISABLE (&_transfer_settings);
64
+ __HAL_DMA_DISABLE (&_transfer_settings. dma_settings );
61
65
62
66
if (_prepared) {
63
- end_dma (&_transfer_settings);
67
+ end_dma (&_transfer_settings. dma_settings );
64
68
_prepared = false ;
65
69
}
66
70
}
0 commit comments