SAM4SD32 (SAM4S-EK2)
Loading...
Searching...
No Matches
component_twi.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_TWI_COMPONENT_
36#define _SAM4S_TWI_COMPONENT_
37
38/* ============================================================================= */
40/* ============================================================================= */
43
44#if !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__))
46typedef struct {
47 __O uint32_t TWI_CR;
48 __IO uint32_t TWI_MMR;
49 __IO uint32_t TWI_SMR;
50 __IO uint32_t TWI_IADR;
51 __IO uint32_t TWI_CWGR;
52 __I uint32_t Reserved1[3];
53 __I uint32_t TWI_SR;
54 __O uint32_t TWI_IER;
55 __O uint32_t TWI_IDR;
56 __I uint32_t TWI_IMR;
57 __I uint32_t TWI_RHR;
58 __O uint32_t TWI_THR;
59 __I uint32_t Reserved2[50];
60 __IO uint32_t TWI_RPR;
61 __IO uint32_t TWI_RCR;
62 __IO uint32_t TWI_TPR;
63 __IO uint32_t TWI_TCR;
64 __IO uint32_t TWI_RNPR;
65 __IO uint32_t TWI_RNCR;
66 __IO uint32_t TWI_TNPR;
67 __IO uint32_t TWI_TNCR;
68 __O uint32_t TWI_PTCR;
69 __I uint32_t TWI_PTSR;
70} Twi;
71#endif /* !(defined(__ASSEMBLY__) || defined(__IAR_SYSTEMS_ASM__)) */
72/* -------- TWI_CR : (TWI Offset: 0x00) Control Register -------- */
73#define TWI_CR_START (0x1u << 0)
74#define TWI_CR_STOP (0x1u << 1)
75#define TWI_CR_MSEN (0x1u << 2)
76#define TWI_CR_MSDIS (0x1u << 3)
77#define TWI_CR_SVEN (0x1u << 4)
78#define TWI_CR_SVDIS (0x1u << 5)
79#define TWI_CR_QUICK (0x1u << 6)
80#define TWI_CR_SWRST (0x1u << 7)
81/* -------- TWI_MMR : (TWI Offset: 0x04) Master Mode Register -------- */
82#define TWI_MMR_IADRSZ_Pos 8
83#define TWI_MMR_IADRSZ_Msk (0x3u << TWI_MMR_IADRSZ_Pos)
84#define TWI_MMR_IADRSZ_NONE (0x0u << 8)
85#define TWI_MMR_IADRSZ_1_BYTE (0x1u << 8)
86#define TWI_MMR_IADRSZ_2_BYTE (0x2u << 8)
87#define TWI_MMR_IADRSZ_3_BYTE (0x3u << 8)
88#define TWI_MMR_MREAD (0x1u << 12)
89#define TWI_MMR_DADR_Pos 16
90#define TWI_MMR_DADR_Msk (0x7fu << TWI_MMR_DADR_Pos)
91#define TWI_MMR_DADR(value) ((TWI_MMR_DADR_Msk & ((value) << TWI_MMR_DADR_Pos)))
92/* -------- TWI_SMR : (TWI Offset: 0x08) Slave Mode Register -------- */
93#define TWI_SMR_SADR_Pos 16
94#define TWI_SMR_SADR_Msk (0x7fu << TWI_SMR_SADR_Pos)
95#define TWI_SMR_SADR(value) ((TWI_SMR_SADR_Msk & ((value) << TWI_SMR_SADR_Pos)))
96/* -------- TWI_IADR : (TWI Offset: 0x0C) Internal Address Register -------- */
97#define TWI_IADR_IADR_Pos 0
98#define TWI_IADR_IADR_Msk (0xffffffu << TWI_IADR_IADR_Pos)
99#define TWI_IADR_IADR(value) ((TWI_IADR_IADR_Msk & ((value) << TWI_IADR_IADR_Pos)))
100/* -------- TWI_CWGR : (TWI Offset: 0x10) Clock Waveform Generator Register -------- */
101#define TWI_CWGR_CLDIV_Pos 0
102#define TWI_CWGR_CLDIV_Msk (0xffu << TWI_CWGR_CLDIV_Pos)
103#define TWI_CWGR_CLDIV(value) ((TWI_CWGR_CLDIV_Msk & ((value) << TWI_CWGR_CLDIV_Pos)))
104#define TWI_CWGR_CHDIV_Pos 8
105#define TWI_CWGR_CHDIV_Msk (0xffu << TWI_CWGR_CHDIV_Pos)
106#define TWI_CWGR_CHDIV(value) ((TWI_CWGR_CHDIV_Msk & ((value) << TWI_CWGR_CHDIV_Pos)))
107#define TWI_CWGR_CKDIV_Pos 16
108#define TWI_CWGR_CKDIV_Msk (0x7u << TWI_CWGR_CKDIV_Pos)
109#define TWI_CWGR_CKDIV(value) ((TWI_CWGR_CKDIV_Msk & ((value) << TWI_CWGR_CKDIV_Pos)))
110/* -------- TWI_SR : (TWI Offset: 0x20) Status Register -------- */
111#define TWI_SR_TXCOMP (0x1u << 0)
112#define TWI_SR_RXRDY (0x1u << 1)
113#define TWI_SR_TXRDY (0x1u << 2)
114#define TWI_SR_SVREAD (0x1u << 3)
115#define TWI_SR_SVACC (0x1u << 4)
116#define TWI_SR_GACC (0x1u << 5)
117#define TWI_SR_OVRE (0x1u << 6)
118#define TWI_SR_NACK (0x1u << 8)
119#define TWI_SR_ARBLST (0x1u << 9)
120#define TWI_SR_SCLWS (0x1u << 10)
121#define TWI_SR_EOSACC (0x1u << 11)
122#define TWI_SR_ENDRX (0x1u << 12)
123#define TWI_SR_ENDTX (0x1u << 13)
124#define TWI_SR_RXBUFF (0x1u << 14)
125#define TWI_SR_TXBUFE (0x1u << 15)
126/* -------- TWI_IER : (TWI Offset: 0x24) Interrupt Enable Register -------- */
127#define TWI_IER_TXCOMP (0x1u << 0)
128#define TWI_IER_RXRDY (0x1u << 1)
129#define TWI_IER_TXRDY (0x1u << 2)
130#define TWI_IER_SVACC (0x1u << 4)
131#define TWI_IER_GACC (0x1u << 5)
132#define TWI_IER_OVRE (0x1u << 6)
133#define TWI_IER_NACK (0x1u << 8)
134#define TWI_IER_ARBLST (0x1u << 9)
135#define TWI_IER_SCL_WS (0x1u << 10)
136#define TWI_IER_EOSACC (0x1u << 11)
137#define TWI_IER_ENDRX (0x1u << 12)
138#define TWI_IER_ENDTX (0x1u << 13)
139#define TWI_IER_RXBUFF (0x1u << 14)
140#define TWI_IER_TXBUFE (0x1u << 15)
141/* -------- TWI_IDR : (TWI Offset: 0x28) Interrupt Disable Register -------- */
142#define TWI_IDR_TXCOMP (0x1u << 0)
143#define TWI_IDR_RXRDY (0x1u << 1)
144#define TWI_IDR_TXRDY (0x1u << 2)
145#define TWI_IDR_SVACC (0x1u << 4)
146#define TWI_IDR_GACC (0x1u << 5)
147#define TWI_IDR_OVRE (0x1u << 6)
148#define TWI_IDR_NACK (0x1u << 8)
149#define TWI_IDR_ARBLST (0x1u << 9)
150#define TWI_IDR_SCL_WS (0x1u << 10)
151#define TWI_IDR_EOSACC (0x1u << 11)
152#define TWI_IDR_ENDRX (0x1u << 12)
153#define TWI_IDR_ENDTX (0x1u << 13)
154#define TWI_IDR_RXBUFF (0x1u << 14)
155#define TWI_IDR_TXBUFE (0x1u << 15)
156/* -------- TWI_IMR : (TWI Offset: 0x2C) Interrupt Mask Register -------- */
157#define TWI_IMR_TXCOMP (0x1u << 0)
158#define TWI_IMR_RXRDY (0x1u << 1)
159#define TWI_IMR_TXRDY (0x1u << 2)
160#define TWI_IMR_SVACC (0x1u << 4)
161#define TWI_IMR_GACC (0x1u << 5)
162#define TWI_IMR_OVRE (0x1u << 6)
163#define TWI_IMR_NACK (0x1u << 8)
164#define TWI_IMR_ARBLST (0x1u << 9)
165#define TWI_IMR_SCL_WS (0x1u << 10)
166#define TWI_IMR_EOSACC (0x1u << 11)
167#define TWI_IMR_ENDRX (0x1u << 12)
168#define TWI_IMR_ENDTX (0x1u << 13)
169#define TWI_IMR_RXBUFF (0x1u << 14)
170#define TWI_IMR_TXBUFE (0x1u << 15)
171/* -------- TWI_RHR : (TWI Offset: 0x30) Receive Holding Register -------- */
172#define TWI_RHR_RXDATA_Pos 0
173#define TWI_RHR_RXDATA_Msk (0xffu << TWI_RHR_RXDATA_Pos)
174/* -------- TWI_THR : (TWI Offset: 0x34) Transmit Holding Register -------- */
175#define TWI_THR_TXDATA_Pos 0
176#define TWI_THR_TXDATA_Msk (0xffu << TWI_THR_TXDATA_Pos)
177#define TWI_THR_TXDATA(value) ((TWI_THR_TXDATA_Msk & ((value) << TWI_THR_TXDATA_Pos)))
178/* -------- TWI_RPR : (TWI Offset: 0x100) Receive Pointer Register -------- */
179#define TWI_RPR_RXPTR_Pos 0
180#define TWI_RPR_RXPTR_Msk (0xffffffffu << TWI_RPR_RXPTR_Pos)
181#define TWI_RPR_RXPTR(value) ((TWI_RPR_RXPTR_Msk & ((value) << TWI_RPR_RXPTR_Pos)))
182/* -------- TWI_RCR : (TWI Offset: 0x104) Receive Counter Register -------- */
183#define TWI_RCR_RXCTR_Pos 0
184#define TWI_RCR_RXCTR_Msk (0xffffu << TWI_RCR_RXCTR_Pos)
185#define TWI_RCR_RXCTR(value) ((TWI_RCR_RXCTR_Msk & ((value) << TWI_RCR_RXCTR_Pos)))
186/* -------- TWI_TPR : (TWI Offset: 0x108) Transmit Pointer Register -------- */
187#define TWI_TPR_TXPTR_Pos 0
188#define TWI_TPR_TXPTR_Msk (0xffffffffu << TWI_TPR_TXPTR_Pos)
189#define TWI_TPR_TXPTR(value) ((TWI_TPR_TXPTR_Msk & ((value) << TWI_TPR_TXPTR_Pos)))
190/* -------- TWI_TCR : (TWI Offset: 0x10C) Transmit Counter Register -------- */
191#define TWI_TCR_TXCTR_Pos 0
192#define TWI_TCR_TXCTR_Msk (0xffffu << TWI_TCR_TXCTR_Pos)
193#define TWI_TCR_TXCTR(value) ((TWI_TCR_TXCTR_Msk & ((value) << TWI_TCR_TXCTR_Pos)))
194/* -------- TWI_RNPR : (TWI Offset: 0x110) Receive Next Pointer Register -------- */
195#define TWI_RNPR_RXNPTR_Pos 0
196#define TWI_RNPR_RXNPTR_Msk (0xffffffffu << TWI_RNPR_RXNPTR_Pos)
197#define TWI_RNPR_RXNPTR(value) ((TWI_RNPR_RXNPTR_Msk & ((value) << TWI_RNPR_RXNPTR_Pos)))
198/* -------- TWI_RNCR : (TWI Offset: 0x114) Receive Next Counter Register -------- */
199#define TWI_RNCR_RXNCTR_Pos 0
200#define TWI_RNCR_RXNCTR_Msk (0xffffu << TWI_RNCR_RXNCTR_Pos)
201#define TWI_RNCR_RXNCTR(value) ((TWI_RNCR_RXNCTR_Msk & ((value) << TWI_RNCR_RXNCTR_Pos)))
202/* -------- TWI_TNPR : (TWI Offset: 0x118) Transmit Next Pointer Register -------- */
203#define TWI_TNPR_TXNPTR_Pos 0
204#define TWI_TNPR_TXNPTR_Msk (0xffffffffu << TWI_TNPR_TXNPTR_Pos)
205#define TWI_TNPR_TXNPTR(value) ((TWI_TNPR_TXNPTR_Msk & ((value) << TWI_TNPR_TXNPTR_Pos)))
206/* -------- TWI_TNCR : (TWI Offset: 0x11C) Transmit Next Counter Register -------- */
207#define TWI_TNCR_TXNCTR_Pos 0
208#define TWI_TNCR_TXNCTR_Msk (0xffffu << TWI_TNCR_TXNCTR_Pos)
209#define TWI_TNCR_TXNCTR(value) ((TWI_TNCR_TXNCTR_Msk & ((value) << TWI_TNCR_TXNCTR_Pos)))
210/* -------- TWI_PTCR : (TWI Offset: 0x120) Transfer Control Register -------- */
211#define TWI_PTCR_RXTEN (0x1u << 0)
212#define TWI_PTCR_RXTDIS (0x1u << 1)
213#define TWI_PTCR_TXTEN (0x1u << 8)
214#define TWI_PTCR_TXTDIS (0x1u << 9)
215/* -------- TWI_PTSR : (TWI Offset: 0x124) Transfer Status Register -------- */
216#define TWI_PTSR_RXTEN (0x1u << 0)
217#define TWI_PTSR_TXTEN (0x1u << 8)
218
220
221
222#endif /* _SAM4S_TWI_COMPONENT_ */
Twi hardware registers.
__I uint32_t TWI_SR
(Twi Offset: 0x20) Status Register
__IO uint32_t TWI_RCR
(Twi Offset: 0x104) Receive Counter Register
__I uint32_t TWI_RHR
(Twi Offset: 0x30) Receive Holding Register
__IO uint32_t TWI_CWGR
(Twi Offset: 0x10) Clock Waveform Generator Register
__I uint32_t TWI_PTSR
(Twi Offset: 0x124) Transfer Status Register
__IO uint32_t TWI_RNPR
(Twi Offset: 0x110) Receive Next Pointer Register
__IO uint32_t TWI_RNCR
(Twi Offset: 0x114) Receive Next Counter Register
__IO uint32_t TWI_IADR
(Twi Offset: 0x0C) Internal Address Register
__IO uint32_t TWI_TCR
(Twi Offset: 0x10C) Transmit Counter Register
__O uint32_t TWI_PTCR
(Twi Offset: 0x120) Transfer Control Register
__IO uint32_t TWI_RPR
(Twi Offset: 0x100) Receive Pointer Register
__IO uint32_t TWI_TPR
(Twi Offset: 0x108) Transmit Pointer Register
__I uint32_t Reserved1[3]
__O uint32_t TWI_IDR
(Twi Offset: 0x28) Interrupt Disable Register
__IO uint32_t TWI_TNCR
(Twi Offset: 0x11C) Transmit Next Counter Register
__O uint32_t TWI_CR
(Twi Offset: 0x00) Control Register
__O uint32_t TWI_IER
(Twi Offset: 0x24) Interrupt Enable Register
__I uint32_t Reserved2[50]
__IO uint32_t TWI_MMR
(Twi Offset: 0x04) Master Mode Register
__O uint32_t TWI_THR
(Twi Offset: 0x34) Transmit Holding Register
__I uint32_t TWI_IMR
(Twi Offset: 0x2C) Interrupt Mask Register
__IO uint32_t TWI_TNPR
(Twi Offset: 0x118) Transmit Next Pointer Register
__IO uint32_t TWI_SMR
(Twi Offset: 0x08) Slave Mode Register