no-OS
stm32_dma.h
Go to the documentation of this file.
1 /***************************************************************************/
41 #ifndef STM32_DMA_H_
42 #define STM32_DMA_H_
43 
44 #include "no_os_dma.h"
45 #include "stm32_hal.h"
46 
55 };
56 
64 };
65 
71  /* DMA Handle */
72  DMA_HandleTypeDef *hdma;
73  /* Channel Number */
74  uint32_t ch_num;
75  /* Memory Increment */
77  /* Peripheral Increment */
79  /* Memory Data Alignment */
81  /* Peripheral Data Alignment */
83  /* DMA Mode */
85  /* Source Address for the data */
86  uint8_t* src;
87  /* Destination Address for the data */
88  uint8_t* dst;
89  /* Transfer length in Bytes */
90  uint32_t length;
91 };
92 
94  /* DMA Channel descriptor */
96 };
97 
99  /* DMA Channel Descriptor */
101 };
102 
103 extern const struct no_os_dma_platform_ops stm32_dma_ops;
104 
105 #endif
106 
no_os_alloc.h
stm32_dma_init
int stm32_dma_init(struct no_os_dma_desc **desc, const struct no_os_dma_init_param *param)
Initialize a DMA controller.
Definition: stm32_dma.c:154
stm32_dma.h
Platform independent function definitions and data types for the DMA API.
stm32_dma_xfer_start
int stm32_dma_xfer_start(struct no_os_dma_desc *desc, struct no_os_dma_ch *chan)
Start a DMA transfer for a specific channel .
Definition: stm32_dma.c:216
no_os_get_time
struct no_os_time no_os_get_time(void)
Get current time.
Definition: stm32_delay.c:88
no_os_dma_init_param
Initialization parameter for the DMA controller.
Definition: no_os_dma.h:177
stm32_dma_init_param
Definition: stm32_dma.h:93
stm32_dma_desc
Definition: stm32_dma.h:98
stm32_dma_channel::mem_data_alignment
enum stm32_dma_data_alignment mem_data_alignment
Definition: stm32_dma.h:80
no_os_dma_desc::id
uint32_t id
Definition: no_os_dma.h:144
no_os_dma_ch::irq_num
uint32_t irq_num
Definition: no_os_dma.h:121
no_os_delay.h
Header file of Delay functions.
DEV_TO_MEM
@ DEV_TO_MEM
Definition: no_os_dma.h:58
stm32_dma_ops
const struct no_os_dma_platform_ops stm32_dma_ops
stm32 platform specific DMA platform ops structure
Definition: stm32_dma.c:290
stm32_dma_channel::per_increment
bool per_increment
Definition: stm32_dma.h:78
no_os_time
Structure holding time data (seconds, microseconds).
Definition: no_os_delay.h:53
no_os_calloc
void * no_os_calloc(size_t nitems, size_t size)
Allocate memory and return a pointer to it, set memory to 0.
Definition: chibios_alloc.c:60
stm32_dma_channel::hdma
DMA_HandleTypeDef * hdma
Definition: stm32_dma.h:72
stm32_dma_mode
stm32_dma_mode
DMA Data Modes.
Definition: stm32_dma.h:61
no_os_dma_init_param::num_ch
uint32_t num_ch
Definition: no_os_dma.h:181
stm32_dma_channel::src
uint8_t * src
Definition: stm32_dma.h:86
no_os_dma_init_param::id
uint32_t id
Definition: no_os_dma.h:179
stm32_dma_ops
const struct no_os_dma_platform_ops stm32_dma_ops
stm32 platform specific DMA platform ops structure
Definition: stm32_dma.c:290
no_os_error.h
Error codes definition.
no_os_udelay
void no_os_udelay(uint32_t usecs)
Generate microseconds delay.
Definition: stm32_delay.c:67
no_os_dma_ch
Describes the state of a DMA channel.
Definition: no_os_dma.h:113
stm32_irq.h
Header file for stm32 irq specifics.
no_os_dma_platform_ops
Definition: no_os_dma.h:247
no_os_dma_xfer_desc::dst
uint8_t * dst
Definition: no_os_dma.h:81
stm32_dma_channel
STM32 DMA Channels.
Definition: stm32_dma.h:70
MEM_TO_MEM
@ MEM_TO_MEM
Definition: no_os_dma.h:56
no_os_irq_init_param::irq_ctrl_id
uint32_t irq_ctrl_id
Definition: no_os_irq.h:115
stm32_dma_remove
int stm32_dma_remove(struct no_os_dma_desc *desc)
Free the resources allocated for a DMA descriptor.
Definition: stm32_dma.c:274
stm32_dma_init_param::chn
struct stm32_dma_channel * chn
Definition: stm32_dma.h:95
stm32_dma_channel::length
uint32_t length
Definition: stm32_dma.h:90
stm32_dma_desc::chn
struct stm32_dma_channel * chn
Definition: stm32_dma.h:100
stm32_irq_ops
const struct no_os_irq_platform_ops stm32_irq_ops
stm32 specific IRQ platform ops structure
Definition: stm32_irq.c:588
no_os_irq_ctrl_init
int32_t no_os_irq_ctrl_init(struct no_os_irq_ctrl_desc **desc, const struct no_os_irq_init_param *param)
Initialize the IRQ interrupts.
Definition: no_os_irq.c:51
no_os_dma_xfer_desc
It's used to setup a generic DMA transfer.
Definition: no_os_dma.h:77
no_os_dma_desc::irq_ctrl
struct no_os_irq_ctrl_desc * irq_ctrl
Definition: no_os_dma.h:157
no_os_dma_desc::num_ch
uint32_t num_ch
Definition: no_os_dma.h:146
no_os_dma_platform_ops::dma_init
int(* dma_init)(struct no_os_dma_desc **, struct no_os_dma_init_param *)
Definition: no_os_dma.h:249
no_os_dma_ch::free
bool free
Definition: no_os_dma.h:117
stm32_dma_data_alignment
stm32_dma_data_alignment
DMA Data alignment.
Definition: stm32_dma.h:51
DMA_CIRCULAR_MODE
@ DMA_CIRCULAR_MODE
Definition: stm32_dma.h:63
stm32_dma_config_xfer
int stm32_dma_config_xfer(struct no_os_dma_ch *channel, struct no_os_dma_xfer_desc *xfer)
Configure a DMA channel for a transfer.
Definition: stm32_dma.c:60
no_os_dma_xfer_desc::xfer_type
enum no_os_dma_xfer_type xfer_type
Definition: no_os_dma.h:85
stm32_dma_channel::dst
uint8_t * dst
Definition: stm32_dma.h:88
stm32_dma_xfer_abort
int stm32_dma_xfer_abort(struct no_os_dma_desc *desc, struct no_os_dma_ch *chan)
Disable a DMA channel.
Definition: stm32_dma.c:247
no_os_free
void no_os_free(void *ptr)
Deallocate memory previously allocated by a call to no_os_calloc or no_os_malloc.
Definition: chibios_alloc.c:75
no_os_time::us
unsigned int us
Definition: no_os_delay.h:54
NULL
#define NULL
Definition: wrapper.h:64
DATA_ALIGN_BYTE
@ DATA_ALIGN_BYTE
Definition: stm32_dma.h:52
no_os_dma_xfer_desc::src
uint8_t * src
Definition: no_os_dma.h:79
no_os_mdelay
void no_os_mdelay(uint32_t msecs)
Generate miliseconds delay.
Definition: stm32_delay.c:79
no_os_irq_init_param
Structure holding the initial parameters for Interrupt Request.
Definition: no_os_irq.h:113
DATA_ALIGN_HALF_WORD
@ DATA_ALIGN_HALF_WORD
Definition: stm32_dma.h:53
no_os_time::s
unsigned int s
Definition: no_os_delay.h:54
no_os_irq_ctrl_remove
int32_t no_os_irq_ctrl_remove(struct no_os_irq_ctrl_desc *desc)
Free the resources allocated by no_os_irq_ctrl_init().
Definition: no_os_irq.c:77
no_os_dma_ch::extra
void * extra
Definition: no_os_dma.h:126
stm32_dma_channel::ch_num
uint32_t ch_num
Definition: stm32_dma.h:74
DATA_ALIGN_WORD
@ DATA_ALIGN_WORD
Definition: stm32_dma.h:54
MEM_TO_DEV
@ MEM_TO_DEV
Definition: no_os_dma.h:57
DMA_NORMAL_MODE
@ DMA_NORMAL_MODE
Definition: stm32_dma.h:62
L
#define L(x)
Definition: ad9144.h:1264
no_os_dma_desc::channels
struct no_os_dma_ch * channels
Definition: no_os_dma.h:148
stm32_dma_channel::per_data_alignment
enum stm32_dma_data_alignment per_data_alignment
Definition: stm32_dma.h:82
stm32_dma_channel::mem_increment
bool mem_increment
Definition: stm32_dma.h:76
stm32_hal.h
no_os_dma_xfer_desc::length
uint32_t length
Definition: no_os_dma.h:83
no_os_dma.h
Platform independent function definitions and data types for the DMA API.
stm32_dma_channel::dma_mode
enum stm32_dma_mode dma_mode
Definition: stm32_dma.h:84
no_os_dma_desc
Describes the state of the DMA controller.
Definition: no_os_dma.h:142