tao_z
2022-05-25 1044ba0d2286698d0da28112bffc0f114bef2134
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
/**
  ******************************************************************************
  * @file     xl_spi.h
  * @author   software group
  * @brief    This file contains all the functions prototypes for the SPI 
  *           firmware library.
  ******************************************************************************
  * @attention
    *
  * 2019 by Chipways Communications,Inc. All Rights Reserved.
  * This software is supplied under the terms of a license
  * agreement or non-disclosure agreement with Chipways.
  * Passing on and copying of this document,and communication
  * of its contents is not permitted without prior written
  * authorization.
  *
  * <h2><center>&copy; COPYRIGHT 2019 Chipways</center></h2>
  ******************************************************************************
  */
#ifndef XL_SPI_H_
#define XL_SPI_H_
 
#ifdef __cplusplus
extern "C" {
#endif
 
/* Includes ---------------------------------------------------------------*/
#include "XL6600.h"
/* Register define ------------------------------------------------------------*/
/* CTRLR0 Bit Fields */
#define SPI_CTRLR0_DFS_MASK                    0xFu
#define SPI_CTRLR0_DFS_SHIFT                   0
#define SPI_CTRLR0_SCPH_MASK                   0x40u
#define SPI_CTRLR0_SCPH_SHIFT                  6
#define SPI_CTRLR0_SCPOL_MASK                  0x80u
#define SPI_CTRLR0_SCPOL_SHIFT                 7
#define SPI_CTRLR0_TMOD_MASK                   0x300u
#define SPI_CTRLR0_TMOD_SHIFT                  8
#define SPI_CTRLR0_SLVOE_MASK                  0x400u
#define SPI_CTRLR0_SLVOE_SHIFT                 10
#define SPI_CTRLR0_SRL_MASK                    0x800u
#define SPI_CTRLR0_SRL_SHIFT                   11
    
/* CTRLR1 Bit Fields */
#define SPI_CTRLR1_NDF_MASK                    0xFFFFu
#define SPI_CTRLR1_NDF_SHIFT                   0
 
/* SPIENR Bit Fields */      
#define SPI_SPIENR_SPIE_MASK                   0x1u
#define SPI_SPIENR_SPIE_SHIFT                  0
 
/* SER Bit Fields */
#define SPI_SER_SSEF_MASK                      0x1u
#define SPI_SER_SSEF_SHIFT                     0
 
/* BAUDR Bit Fields */
#define SPI_BAUDR_SCKDV_MASK                   0xFFFFu
#define SPI_BAUDR_SCKDV_SHIFT                  0
 
/* TXFTLR Bit Fields */
#define SPI_TXFTLR_TFTL_MASK                   0xFu
#define SPI_TXFTLR_TFTL_SHIFT                  0
 
/* RXFTLR Bit Fields */
#define SPI_RXFTLR_RFTL_MASK                   0xFu
#define SPI_RXFTLR_RFTL_SHIFT                  0
 
/* TXFLR Bit Fields */
#define SPI_TXFLR_TFL_MASK                     0x1Fu
#define SPI_TXFLR_TFL_SHIFT                    0
 
/* RXFLR Bit Fields */
#define SPI_RXFLR_RFL_MASK                     0x1Fu
#define SPI_RXFLR_RFL_SHIFT                    0
 
 /* SR Bit Fields */
#define SPI_SR_BUSY_MASK                       0x1u
#define SPI_SR_BUSY_SHIFT                      0
#define SPI_SR_TFNF_MASK                       0x2u
#define SPI_SR_TFNF_SHIFT                      1
#define SPI_SR_TFE_MASK                        0x4u
#define SPI_SR_TFE_SHIFT                       2
#define SPI_SR_RFNE_MASK                       0x8u
#define SPI_SR_RFNE_SHIFT                      3
#define SPI_SR_RFF_MASK                        0x10u
#define SPI_SR_RFF_SHIFT                       4
#define SPI_SR_TXE_MASK                        0x20u
#define SPI_SR_TXE_SHIFT                       5
#define SPI_SR_DCOL_MASK                       0x40u
#define SPI_SR_DCOL_SHIFT                      6
 
 /* IMR Bit Fields */
#define SPI_IMR_TXEIM_MASK                     0x1u
#define SPI_IMR_TXEIM_SHIFT                    0
#define SPI_IMR_TXOIM_MASK                     0x2u
#define SPI_IMR_TXOIM_SHIFT                    1
#define SPI_IMR_RXUIM_MASK                     0x4u
#define SPI_IMR_RXUIM_SHIFT                    2
#define SPI_IMR_RXOIM_MASK                     0x8u
#define SPI_IMR_RXOIM_SHIFT                    3
#define SPI_IMR_RXFIM_MASK                     0x10u
#define SPI_IMR_RXFIM_SHIFT                    4
 
 /* ISR Bit Fields */
#define SPI_ISR_TXEIS_MASK                     0x1u
#define SPI_ISR_TXEIS_SHIFT                    0
#define SPI_ISR_TXOIS_MASK                     0x2u
#define SPI_ISR_TXOIS_SHIFT                    1
#define SPI_ISR_RXUIS_MASK                     0x4u
#define SPI_ISR_RXUIS_SHIFT                    2
#define SPI_ISR_RXOIS_MASK                     0x8u
#define SPI_ISR_RXOIS_SHIFT                    3
#define SPI_ISR_RXFIS_MASK                     0x10u
#define SPI_ISR_RXFIS_SHIFT                    4
 
 /* RISR Bit Fields */
#define SPI_RISR_TXEIR_MASK                    0x1u
#define SPI_RISR_TXEIR_SHIFT                   0
#define SPI_RISR_TXOIR_MASK                    0x2u
#define SPI_RISR_TXOIR_SHIFT                   1
#define SPI_RISR_RXUIR_MASK                    0x4u
#define SPI_RISR_RXUIR_SHIFT                   2
#define SPI_RISR_RXOIR_MASK                    0x8u
#define SPI_RISR_RXOIR_SHIFT                   3
#define SPI_RISR_RXFIR_MASK                    0x10u
#define SPI_RISR_RXFIR_SHIFT                   4
 
 /* TXOICR Bit Fields */
#define SPI_TXOICR_CTXOI_MASK                  0x1u
#define SPI_TXOICR_CTXOI_SHIFT                 0
 
 /* RXOICR Bit Fields */
#define SPI_RXOICR_CRXOI_MASK                  0x1u
#define SPI_RXOICR_CRXOI_SHIFT                 0
 
 /* RXUICR Bit Fields */
#define SPI_RXUICR_CRXUI_MASK                  0x1u
#define SPI_RXUICR_CRXUI_SHIFT                 0
 
 /* ICR Bit Fields */
#define SPI_ICR_CI_MASK                        0x1u
#define SPI_ICR_CI_SHIFT                       0
 
 /* DMACR Bit Fields */
#define SPI_DMACR_RDMAE_MASK                   0x1u
#define SPI_DMACR_RDMAE_SHIFT                  0
#define SPI_DMACR_TDMAE_MASK                   0x2u
#define SPI_DMACR_TDMAE_SHIFT                  1
 
 /* DMATDLR Bit Fields */
#define SPI_DMATDLR_DMATDL_MASK                0xFu
#define SPI_DMATDLR_DMATDL_SHIFT               0
#define SPI_DMATDLR_DMATDL_WIDTH               4
 
 /* DMARDLR Bit Fields */
#define SPI_DMARDLR_DMARDL_MASK                0xFu
#define SPI_DMARDLR_DMARDL_SHIFT               0
 
 /* DR Bit Fields */
#define SPI_DR_DR_MASK                         0xFFFFu
#define SPI_DR_DR_SHIFT                        0
 
 /* MODE Bit Fields */
#define SPI_MODE_MSTR_MASK                     0x1u
#define SPI_MODE_MSTR_SHIFT                    0
 
 /* MODE Bit Fields */
#define SPI_MODE_PACK_MASK                     0x2u
#define SPI_MODE_PACK_SHIFT                    1
 
 
/** SPI - Register Layout Typedef */
typedef struct {
 __IO uint32_t  CTRLR0;                          /*!< SPI¿ØÖƼĴæÆ÷0, offset:0x0*/
 __IO uint32_t  CTRLR1;                          /*!< SPI¿ØÖƼĴæÆ÷1, offset:0x04*/
 __IO uint32_t  SPIENR;                          /*!< SPIʹÄܼĴæÆ÷, offset:0x08*/
      uint32_t  RESERVED_0[1];                  
 __IO uint32_t  SER;                             /*!< SPI´Ó»úʹÄܼĴæÆ÷, offset:0x10*/
 __IO uint32_t  BAUDR;                           /*!< SPI²¨ÌØÂÊÑ¡Ôñ¼Ä´æÆ÷, offset:0x14*/
 __IO uint32_t  TXFTLR;                          /*!< SPI·¢ËÍFIFOãÐÖµÉèÖüĴæÆ÷, offset:0x18*/
 __IO uint32_t  RXFTLR;                          /*!< SPI½ÓÊÕFIFOãÐÖµÉèÖüĴæÆ÷, offset:0x1C*/
 __I  uint32_t  TXFLR;                           /*!< SPI·¢ËÍFIFOãÐÖµ¼Ä´æÆ÷, offset:0x20*/
 __I  uint32_t  RXFLR;                           /*!< SPI½ÓÊÕFIFOãÐÖµ¼Ä´æÆ÷, offset:0x24*/
 __I  uint32_t  SR;                              /*!< SPI״̬¼Ä´æÆ÷, offset:0x28*/
 __IO uint32_t  IMR;                             /*!< SPIÖÐ¶ÏÆÁ±Î¼Ä´æÆ÷, offset:0x2C*/
 __I  uint32_t  ISR;                             /*!< SPIÖжÏ״̬¼Ä´æÆ÷, offset:0x30*/
 __I  uint32_t  RISR;                            /*!< SPIԭʼÖжÏ״̬¼Ä´æÆ÷, offset:0x34*/
 __I  uint32_t  TXOICR;                          /*!< SPI·¢ËÍFIFOÒç³öÖжÏÇåÁã¼Ä´æÆ÷, offset:0x38*/
 __I  uint32_t  RXOICR;                          /*!< SPI½ÓÊÕFIFOÒç³öÖжÏÇåÁã¼Ä´æÆ÷, offset:0x3C*/