SAM4SD32 (SAM4S-EK2)
Loading...
Searching...
No Matches
component_spi.h
Go to the documentation of this file.
1
31/*
32 * Support and FAQ: visit <a href="https://www.microchip.com/support/">Microchip Support</a>
33 */
34
35#ifndef _SAM4S_SPI_COMPONENT_
36#define _SAM4S_SPI_COMPONENT_
37
38/* ============================================================================= */
40/* ============================================================================= */
43
44#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
46typedef struct {
47 __O uint32_t SPI_CR;
48 __IO uint32_t SPI_MR;
49 __I uint32_t SPI_RDR;
50 __O uint32_t SPI_TDR;
51 __I uint32_t SPI_SR;
52 __O uint32_t SPI_IER;
53 __O uint32_t SPI_IDR;
54 __I uint32_t SPI_IMR;
55 __I uint32_t Reserved1[4];
56 __IO uint32_t SPI_CSR[4];
57 __I uint32_t Reserved2[41];
58 __IO uint32_t SPI_WPMR;
59 __I uint32_t SPI_WPSR;
60 __I uint32_t Reserved3[5];
61 __IO uint32_t SPI_RPR;
62 __IO uint32_t SPI_RCR;
63 __IO uint32_t SPI_TPR;
64 __IO uint32_t SPI_TCR;
65 __IO uint32_t SPI_RNPR;
66 __IO uint32_t SPI_RNCR;
67 __IO uint32_t SPI_TNPR;
68 __IO uint32_t SPI_TNCR;
69 __O uint32_t SPI_PTCR;
70 __I uint32_t SPI_PTSR;
71} Spi;
72#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
73/* -------- SPI_CR : (SPI Offset: 0x00) Control Register -------- */
74#define SPI_CR_SPIEN (0x1u << 0)
75#define SPI_CR_SPIDIS (0x1u << 1)
76#define SPI_CR_SWRST (0x1u << 7)
77#define SPI_CR_LASTXFER (0x1u << 24)
78/* -------- SPI_MR : (SPI Offset: 0x04) Mode Register -------- */
79#define SPI_MR_MSTR (0x1u << 0)
80#define SPI_MR_PS (0x1u << 1)
81#define SPI_MR_PCSDEC (0x1u << 2)
82#define SPI_MR_MODFDIS (0x1u << 4)
83#define SPI_MR_WDRBT (0x1u << 5)
84#define SPI_MR_LLB (0x1u << 7)
85#define SPI_MR_PCS_Pos 16
86#define SPI_MR_PCS_Msk (0xfu << SPI_MR_PCS_Pos)
87#define SPI_MR_PCS(value) ((SPI_MR_PCS_Msk & ((value) << SPI_MR_PCS_Pos)))
88#define SPI_MR_DLYBCS_Pos 24
89#define SPI_MR_DLYBCS_Msk (0xffu << SPI_MR_DLYBCS_Pos)
90#define SPI_MR_DLYBCS(value) ((SPI_MR_DLYBCS_Msk & ((value) << SPI_MR_DLYBCS_Pos)))
91/* -------- SPI_RDR : (SPI Offset: 0x08) Receive Data Register -------- */
92#define SPI_RDR_RD_Pos 0
93#define SPI_RDR_RD_Msk (0xffffu << SPI_RDR_RD_Pos)
94#define SPI_RDR_PCS_Pos 16
95#define SPI_RDR_PCS_Msk (0xfu << SPI_RDR_PCS_Pos)
96/* -------- SPI_TDR : (SPI Offset: 0x0C) Transmit Data Register -------- */
97#define SPI_TDR_TD_Pos 0
98#define SPI_TDR_TD_Msk (0xffffu << SPI_TDR_TD_Pos)
99#define SPI_TDR_TD(value) ((SPI_TDR_TD_Msk & ((value) << SPI_TDR_TD_Pos)))
100#define SPI_TDR_PCS_Pos 16
101#define SPI_TDR_PCS_Msk (0xfu << SPI_TDR_PCS_Pos)
102#define SPI_TDR_PCS(value) ((SPI_TDR_PCS_Msk & ((value) << SPI_TDR_PCS_Pos)))
103#define SPI_TDR_LASTXFER (0x1u << 24)
104/* -------- SPI_SR : (SPI Offset: 0x10) Status Register -------- */
105#define SPI_SR_RDRF (0x1u << 0)
106#define SPI_SR_TDRE (0x1u << 1)
107#define SPI_SR_MODF (0x1u << 2)
108#define SPI_SR_OVRES (0x1u << 3)
109#define SPI_SR_ENDRX (0x1u << 4)
110#define SPI_SR_ENDTX (0x1u << 5)
111#define SPI_SR_RXBUFF (0x1u << 6)
112#define SPI_SR_TXBUFE (0x1u << 7)
113#define SPI_SR_NSSR (0x1u << 8)
114#define SPI_SR_TXEMPTY (0x1u << 9)
115#define SPI_SR_UNDES (0x1u << 10)
116#define SPI_SR_SPIENS (0x1u << 16)
117/* -------- SPI_IER : (SPI Offset: 0x14) Interrupt Enable Register -------- */
118#define SPI_IER_RDRF (0x1u << 0)
119#define SPI_IER_TDRE (0x1u << 1)
120#define SPI_IER_MODF (0x1u << 2)
121#define SPI_IER_OVRES (0x1u << 3)
122#define SPI_IER_ENDRX (0x1u << 4)
123#define SPI_IER_ENDTX (0x1u << 5)
124#define SPI_IER_RXBUFF (0x1u << 6)
125#define SPI_IER_TXBUFE (0x1u << 7)
126#define SPI_IER_NSSR (0x1u << 8)
127#define SPI_IER_TXEMPTY (0x1u << 9)
128#define SPI_IER_UNDES (0x1u << 10)
129/* -------- SPI_IDR : (SPI Offset: 0x18) Interrupt Disable Register -------- */
130#define SPI_IDR_RDRF (0x1u << 0)
131#define SPI_IDR_TDRE (0x1u << 1)
132#define SPI_IDR_MODF (0x1u << 2)
133#define SPI_IDR_OVRES (0x1u << 3)
134#define SPI_IDR_ENDRX (0x1u << 4)
135#define SPI_IDR_ENDTX (0x1u << 5)
136#define SPI_IDR_RXBUFF (0x1u << 6)
137#define SPI_IDR_TXBUFE (0x1u << 7)
138#define SPI_IDR_NSSR (0x1u << 8)
139#define SPI_IDR_TXEMPTY (0x1u << 9)
140#define SPI_IDR_UNDES (0x1u << 10)
141/* -------- SPI_IMR : (SPI Offset: 0x1C) Interrupt Mask Register -------- */
142#define SPI_IMR_RDRF (0x1u << 0)
143#define SPI_IMR_TDRE (0x1u << 1)
144#define SPI_IMR_MODF (0x1u << 2)
145#define SPI_IMR_OVRES (0x1u << 3)
146#define SPI_IMR_ENDRX (0x1u << 4)
147#define SPI_IMR_ENDTX (0x1u << 5)
148#define SPI_IMR_RXBUFF (0x1u << 6)
149#define SPI_IMR_TXBUFE (0x1u << 7)
150#define SPI_IMR_NSSR (0x1u << 8)
151#define SPI_IMR_TXEMPTY (0x1u << 9)
152#define SPI_IMR_UNDES (0x1u << 10)
153/* -------- SPI_CSR[4] : (SPI Offset: 0x30) Chip Select Register -------- */
154#define SPI_CSR_CPOL (0x1u << 0)
155#define SPI_CSR_NCPHA (0x1u << 1)
156#define SPI_CSR_CSNAAT (0x1u << 2)
157#define SPI_CSR_CSAAT (0x1u << 3)
158#define SPI_CSR_BITS_Pos 4
159#define SPI_CSR_BITS_Msk (0xfu << SPI_CSR_BITS_Pos)
160#define SPI_CSR_BITS_8_BIT (0x0u << 4)
161#define SPI_CSR_BITS_9_BIT (0x1u << 4)
162#define SPI_CSR_BITS_10_BIT (0x2u << 4)
163#define SPI_CSR_BITS_11_BIT (0x3u << 4)
164#define SPI_CSR_BITS_12_BIT (0x4u << 4)
165#define SPI_CSR_BITS_13_BIT (0x5u << 4)
166#define SPI_CSR_BITS_14_BIT (0x6u << 4)
167#define SPI_CSR_BITS_15_BIT (0x7u << 4)
168#define SPI_CSR_BITS_16_BIT (0x8u << 4)
169#define SPI_CSR_SCBR_Pos 8
170#define SPI_CSR_SCBR_Msk (0xffu << SPI_CSR_SCBR_Pos)
171#define SPI_CSR_SCBR(value) ((SPI_CSR_SCBR_Msk & ((value) << SPI_CSR_SCBR_Pos)))
172#define SPI_CSR_DLYBS_Pos 16
173#define SPI_CSR_DLYBS_Msk (0xffu << SPI_CSR_DLYBS_Pos)
174#define SPI_CSR_DLYBS(value) ((SPI_CSR_DLYBS_Msk & ((value) << SPI_CSR_DLYBS_Pos)))
175#define SPI_CSR_DLYBCT_Pos 24
176#define SPI_CSR_DLYBCT_Msk (0xffu << SPI_CSR_DLYBCT_Pos)
177#define SPI_CSR_DLYBCT(value) ((SPI_CSR_DLYBCT_Msk & ((value) << SPI_CSR_DLYBCT_Pos)))
178/* -------- SPI_WPMR : (SPI Offset: 0xE4) Write Protection Control Register -------- */
179#define SPI_WPMR_WPEN (0x1u << 0)
180#define SPI_WPMR_WPKEY_Pos 8
181#define SPI_WPMR_WPKEY_Msk (0xffffffu << SPI_WPMR_WPKEY_Pos)
182#define SPI_WPMR_WPKEY_PASSWD (0x535049u << 8)
183/* -------- SPI_WPSR : (SPI Offset: 0xE8) Write Protection Status Register -------- */
184#define SPI_WPSR_WPVS (0x1u << 0)
185#define SPI_WPSR_WPVSRC_Pos 8
186#define SPI_WPSR_WPVSRC_Msk (0xffu << SPI_WPSR_WPVSRC_Pos)
187/* -------- SPI_RPR : (SPI Offset: 0x100) Receive Pointer Register -------- */
188#define SPI_RPR_RXPTR_Pos 0
189#define SPI_RPR_RXPTR_Msk (0xffffffffu << SPI_RPR_RXPTR_Pos)
190#define SPI_RPR_RXPTR(value) ((SPI_RPR_RXPTR_Msk & ((value) << SPI_RPR_RXPTR_Pos)))
191/* -------- SPI_RCR : (SPI Offset: 0x104) Receive Counter Register -------- */
192#define SPI_RCR_RXCTR_Pos 0
193#define SPI_RCR_RXCTR_Msk (0xffffu << SPI_RCR_RXCTR_Pos)
194#define SPI_RCR_RXCTR(value) ((SPI_RCR_RXCTR_Msk & ((value) << SPI_RCR_RXCTR_Pos)))
195/* -------- SPI_TPR : (SPI Offset: 0x108) Transmit Pointer Register -------- */
196#define SPI_TPR_TXPTR_Pos 0
197#define SPI_TPR_TXPTR_Msk (0xffffffffu << SPI_TPR_TXPTR_Pos)
198#define SPI_TPR_TXPTR(value) ((SPI_TPR_TXPTR_Msk & ((value) << SPI_TPR_TXPTR_Pos)))
199/* -------- SPI_TCR : (SPI Offset: 0x10C) Transmit Counter Register -------- */
200#define SPI_TCR_TXCTR_Pos 0
201#define SPI_TCR_TXCTR_Msk (0xffffu << SPI_TCR_TXCTR_Pos)
202#define SPI_TCR_TXCTR(value) ((SPI_TCR_TXCTR_Msk & ((value) << SPI_TCR_TXCTR_Pos)))
203/* -------- SPI_RNPR : (SPI Offset: 0x110) Receive Next Pointer Register -------- */
204#define SPI_RNPR_RXNPTR_Pos 0
205#define SPI_RNPR_RXNPTR_Msk (0xffffffffu << SPI_RNPR_RXNPTR_Pos)
206#define SPI_RNPR_RXNPTR(value) ((SPI_RNPR_RXNPTR_Msk & ((value) << SPI_RNPR_RXNPTR_Pos)))
207/* -------- SPI_RNCR : (SPI Offset: 0x114) Receive Next Counter Register -------- */
208#define SPI_RNCR_RXNCTR_Pos 0
209#define SPI_RNCR_RXNCTR_Msk (0xffffu << SPI_RNCR_RXNCTR_Pos)
210#define SPI_RNCR_RXNCTR(value) ((SPI_RNCR_RXNCTR_Msk & ((value) << SPI_RNCR_RXNCTR_Pos)))
211/* -------- SPI_TNPR : (SPI Offset: 0x118) Transmit Next Pointer Register -------- */
212#define SPI_TNPR_TXNPTR_Pos 0
213#define SPI_TNPR_TXNPTR_Msk (0xffffffffu << SPI_TNPR_TXNPTR_Pos)
214#define SPI_TNPR_TXNPTR(value) ((SPI_TNPR_TXNPTR_Msk & ((value) << SPI_TNPR_TXNPTR_Pos)))
215/* -------- SPI_TNCR : (SPI Offset: 0x11C) Transmit Next Counter Register -------- */
216#define SPI_TNCR_TXNCTR_Pos 0
217#define SPI_TNCR_TXNCTR_Msk (0xffffu << SPI_TNCR_TXNCTR_Pos)
218#define SPI_TNCR_TXNCTR(value) ((SPI_TNCR_TXNCTR_Msk & ((value) << SPI_TNCR_TXNCTR_Pos)))
219/* -------- SPI_PTCR : (SPI Offset: 0x120) Transfer Control Register -------- */
220#define SPI_PTCR_RXTEN (0x1u << 0)
221#define SPI_PTCR_RXTDIS (0x1u << 1)
222#define SPI_PTCR_TXTEN (0x1u << 8)
223#define SPI_PTCR_TXTDIS (0x1u << 9)
224/* -------- SPI_PTSR : (SPI Offset: 0x124) Transfer Status Register -------- */
225#define SPI_PTSR_RXTEN (0x1u << 0)
226#define SPI_PTSR_TXTEN (0x1u << 8)
227
229
230
231#endif /* _SAM4S_SPI_COMPONENT_ */
Spi hardware registers.
__IO uint32_t SPI_TNPR
(Spi Offset: 0x118) Transmit Next Pointer Register
__O uint32_t SPI_PTCR
(Spi Offset: 0x120) Transfer Control Register
__IO uint32_t SPI_TNCR
(Spi Offset: 0x11C) Transmit Next Counter Register
__I uint32_t Reserved1[4]
__O uint32_t SPI_IER
(Spi Offset: 0x14) Interrupt Enable Register
__I uint32_t SPI_PTSR
(Spi Offset: 0x124) Transfer Status Register
__IO uint32_t SPI_TPR
(Spi Offset: 0x108) Transmit Pointer Register
__IO uint32_t SPI_RPR
(Spi Offset: 0x100) Receive Pointer Register
__IO uint32_t SPI_RCR
(Spi Offset: 0x104) Receive Counter Register
__IO uint32_t SPI_MR
(Spi Offset: 0x04) Mode Register
__O uint32_t SPI_IDR
(Spi Offset: 0x18) Interrupt Disable Register
__O uint32_t SPI_TDR
(Spi Offset: 0x0C) Transmit Data Register
__I uint32_t SPI_IMR
(Spi Offset: 0x1C) Interrupt Mask Register
__IO uint32_t SPI_WPMR
(Spi Offset: 0xE4) Write Protection Control Register
__IO uint32_t SPI_CSR[4]
(Spi Offset: 0x30) Chip Select Register
__I uint32_t Reserved3[5]
__I uint32_t Reserved2[41]
__IO uint32_t SPI_RNPR
(Spi Offset: 0x110) Receive Next Pointer Register
__O uint32_t SPI_CR
(Spi Offset: 0x00) Control Register
__I uint32_t SPI_WPSR
(Spi Offset: 0xE8) Write Protection Status Register
__I uint32_t SPI_SR
(Spi Offset: 0x10) Status Register
__IO uint32_t SPI_RNCR
(Spi Offset: 0x114) Receive Next Counter Register
__IO uint32_t SPI_TCR
(Spi Offset: 0x10C) Transmit Counter Register
__I uint32_t SPI_RDR
(Spi Offset: 0x08) Receive Data Register