dma.h
Go to the documentation of this file.
1 /********************************************************************************************************
2  * @file dma.h
3  *
4  * @brief This is the header file for TLSR8258
5  *
6  * @author Driver Group
7  * @date May 8, 2018
8  *
9  * @par Copyright (c) 2018, Telink Semiconductor (Shanghai) Co., Ltd.
10  * All rights reserved.
11  *
12  * The information contained herein is confidential property of Telink
13  * Semiconductor (Shanghai) Co., Ltd. and is available under the terms
14  * of Commercial License Agreement between Telink Semiconductor (Shanghai)
15  * Co., Ltd. and the licensee or the terms described here-in. This heading
16  * MUST NOT be removed from this file.
17  *
18  * Licensees are granted free, non-transferable use of the information in this
19  * file under Mutual Non-Disclosure Agreement. NO WARRENTY of ANY KIND is provided.
20  * @par History:
21  * 1.initial release(DEC. 26 2018)
22  *
23  * @version A001
24  *
25  *******************************************************************************************************/
26 
27 #ifndef DMA_H_
28 #define DMA_H_
29 
30 #include "compiler.h"
31 
32 
33 #define DMA_RFRX_LEN_HW_INFO 0 // 826x: 8
34 #define DMA_RFRX_OFFSET_HEADER 4 // 826x: 12
35 #define DMA_RFRX_OFFSET_RFLEN 5 // 826x: 13
36 #define DMA_RFRX_OFFSET_DATA 6 // 826x: 14
37 
38 
39 #define DMA_RFRX_OFFSET_CRC24(p) (p[DMA_RFRX_OFFSET_RFLEN]+6) //data len:3
40 #define DMA_RFRX_OFFSET_TIME_STAMP(p) (p[DMA_RFRX_OFFSET_RFLEN]+9) //data len:4
41 #define DMA_RFRX_OFFSET_FREQ_OFFSET(p) (p[DMA_RFRX_OFFSET_RFLEN]+13) //data len:2
42 #define DMA_RFRX_OFFSET_RSSI(p) (p[DMA_RFRX_OFFSET_RFLEN]+15) //data len:1, signed
43 
44 
45 
46 #define RFDMA_RX_DISABLE (reg_dma_chn_en &= (~FLD_DMA_CHN_RF_RX))
47 #define RFDMA_RX_ENABLE (reg_dma_chn_en |= (FLD_DMA_CHN_RF_RX))
48 
49 #define RFDMA_TX_DISABLE (reg_dma_chn_en &= (~FLD_DMA_CHN_RF_TX))
50 #define RFDMA_TX_ENABLE (reg_dma_chn_en |= (FLD_DMA_CHN_RF_TX))
51 
52 
53 typedef enum{
63 
69 static inline void dma_reset(void)
70 {
72  reg_rst1 &= (~FLD_RST1_DMA);
73 }
79 static inline void dma_irq_enable(unsigned int msk)
80 {
81  reg_dma_chn_irq_msk |= msk;
82 }
83 
89 static inline void dma_irq_disable(unsigned int msk)
90 {
91  reg_dma_chn_irq_msk &= ~msk;
92 }
93 
100 static inline void dma_chn_enable(unsigned char chn, unsigned int en)
101 {
102  if(en){
103  reg_dma_chn_en |= chn;
104  }
105  else{
106  reg_dma_chn_en &= ~chn;
107  }
108 }
109 
117 static inline void dma_chn_irq_enable(unsigned char chn, unsigned int en)
118 {
119  reg_dma_irq_status = chn;
120 
121  if(en){
122  reg_dma_chn_en |= chn;
123  reg_dma_chn_irq_msk |= chn;
124  }
125  else{
126  reg_dma_chn_en &= ~chn;
127  reg_dma_chn_irq_msk &= ~chn;
128  }
129 }
130 
137 static inline void dma_chn_irq_status_clr(unsigned char irq_status)
138 {
139  reg_dma_irq_status = irq_status;
140 }
141 
142 
149 static inline unsigned char dma_chn_irq_status_get(void)
150 {
151  return reg_dma_irq_status;
152 }
153 
159 static inline void dma_set_buff_size(DMA_chn_Typdef chn,unsigned int size)
160 {
161  reg_dma_size(chn) = (unsigned char)(size/16);
162 }
163 
164 #endif /* DMA_H_ */
Definition: dma.h:61
static void dma_irq_disable(unsigned int msk)
This function performs to enable DMA.
Definition: dma.h:89
static void dma_chn_enable(unsigned char chn, unsigned int en)
This function performs to enable DMA chnnel.
Definition: dma.h:100
Definition: dma.h:60
static void dma_irq_enable(unsigned int msk)
This function performs to enable DMA.
Definition: dma.h:79
Definition: dma.h:59
Definition: dma.h:55
Definition: dma.h:54
#define reg_dma_chn_en
Definition: register_8258.h:1163
static void dma_set_buff_size(DMA_chn_Typdef chn, unsigned int size)
This function serves to set the size of dma buffer.
Definition: dma.h:159
DMA_chn_Typdef
Definition: dma.h:53
#define reg_dma_chn_irq_msk
Definition: register_8258.h:1164
static void dma_chn_irq_enable(unsigned char chn, unsigned int en)
This function performs to enable DMA interrupt.
Definition: dma.h:117
#define reg_dma_size(v)
Definition: register_8258.h:1138
static void dma_chn_irq_status_clr(unsigned char irq_status)
Clear IRQ status of uart.
Definition: dma.h:137
Definition: register_8258.h:158
#define reg_rst1
Definition: register_8258.h:154
#define reg_dma_irq_status
Definition: register_8258.h:1170
Definition: dma.h:57
Definition: dma.h:58
static void dma_reset(void)
This function resets the DMA module.
Definition: dma.h:69
Definition: dma.h:56
static unsigned char dma_chn_irq_status_get(void)
Get IRQ status of uart.
Definition: dma.h:149