atsam4e16e_pac/
usart1.rs

1#[doc = r"Register block"]
2#[repr(C)]
3pub struct RegisterBlock {
4    _reserved_0_cr: [u8; 0x04],
5    _reserved_1_mr: [u8; 0x04],
6    _reserved_2_ier: [u8; 0x04],
7    _reserved_3_idr: [u8; 0x04],
8    _reserved_4_imr: [u8; 0x04],
9    _reserved_5_csr: [u8; 0x04],
10    #[doc = "0x18 - Receive Holding Register"]
11    pub rhr: RHR,
12    #[doc = "0x1c - Transmit Holding Register"]
13    pub thr: THR,
14    #[doc = "0x20 - Baud Rate Generator Register"]
15    pub brgr: BRGR,
16    #[doc = "0x24 - Receiver Time-out Register"]
17    pub rtor: RTOR,
18    #[doc = "0x28 - Transmitter Timeguard Register"]
19    pub ttgr: TTGR,
20    _reserved11: [u8; 0x14],
21    #[doc = "0x40 - FI DI Ratio Register"]
22    pub fidi: FIDI,
23    #[doc = "0x44 - Number of Errors Register"]
24    pub ner: NER,
25    _reserved13: [u8; 0x04],
26    #[doc = "0x4c - IrDA Filter Register"]
27    pub if_: IF,
28    #[doc = "0x50 - Manchester Configuration Register"]
29    pub man: MAN,
30    _reserved15: [u8; 0x90],
31    #[doc = "0xe4 - Write Protection Mode Register"]
32    pub wpmr: WPMR,
33    #[doc = "0xe8 - Write Protection Status Register"]
34    pub wpsr: WPSR,
35    _reserved17: [u8; 0x14],
36    #[doc = "0x100 - Receive Pointer Register"]
37    pub rpr: RPR,
38    #[doc = "0x104 - Receive Counter Register"]
39    pub rcr: RCR,
40    #[doc = "0x108 - Transmit Pointer Register"]
41    pub tpr: TPR,
42    #[doc = "0x10c - Transmit Counter Register"]
43    pub tcr: TCR,
44    #[doc = "0x110 - Receive Next Pointer Register"]
45    pub rnpr: RNPR,
46    #[doc = "0x114 - Receive Next Counter Register"]
47    pub rncr: RNCR,
48    #[doc = "0x118 - Transmit Next Pointer Register"]
49    pub tnpr: TNPR,
50    #[doc = "0x11c - Transmit Next Counter Register"]
51    pub tncr: TNCR,
52    #[doc = "0x120 - Transfer Control Register"]
53    pub ptcr: PTCR,
54    #[doc = "0x124 - Transfer Status Register"]
55    pub ptsr: PTSR,
56}
57impl RegisterBlock {
58    #[doc = "0x00 - Control Register"]
59    #[inline(always)]
60    pub const fn spi_mode_cr_spi_mode(&self) -> &SPI_MODE_CR_SPI_MODE {
61        unsafe { &*(self as *const Self).cast::<u8>().add(0usize).cast() }
62    }
63    #[doc = "0x00 - Control Register"]
64    #[inline(always)]
65    pub const fn cr(&self) -> &CR {
66        unsafe { &*(self as *const Self).cast::<u8>().add(0usize).cast() }
67    }
68    #[doc = "0x04 - Mode Register"]
69    #[inline(always)]
70    pub const fn spi_mode_mr_spi_mode(&self) -> &SPI_MODE_MR_SPI_MODE {
71        unsafe { &*(self as *const Self).cast::<u8>().add(4usize).cast() }
72    }
73    #[doc = "0x04 - Mode Register"]
74    #[inline(always)]
75    pub const fn mr(&self) -> &MR {
76        unsafe { &*(self as *const Self).cast::<u8>().add(4usize).cast() }
77    }
78    #[doc = "0x08 - Interrupt Enable Register"]
79    #[inline(always)]
80    pub const fn spi_mode_ier_spi_mode(&self) -> &SPI_MODE_IER_SPI_MODE {
81        unsafe { &*(self as *const Self).cast::<u8>().add(8usize).cast() }
82    }
83    #[doc = "0x08 - Interrupt Enable Register"]
84    #[inline(always)]
85    pub const fn ier(&self) -> &IER {
86        unsafe { &*(self as *const Self).cast::<u8>().add(8usize).cast() }
87    }
88    #[doc = "0x0c - Interrupt Disable Register"]
89    #[inline(always)]
90    pub const fn spi_mode_idr_spi_mode(&self) -> &SPI_MODE_IDR_SPI_MODE {
91        unsafe { &*(self as *const Self).cast::<u8>().add(12usize).cast() }
92    }
93    #[doc = "0x0c - Interrupt Disable Register"]
94    #[inline(always)]
95    pub const fn idr(&self) -> &IDR {
96        unsafe { &*(self as *const Self).cast::<u8>().add(12usize).cast() }
97    }
98    #[doc = "0x10 - Interrupt Mask Register"]
99    #[inline(always)]
100    pub const fn spi_mode_imr_spi_mode(&self) -> &SPI_MODE_IMR_SPI_MODE {
101        unsafe { &*(self as *const Self).cast::<u8>().add(16usize).cast() }
102    }
103    #[doc = "0x10 - Interrupt Mask Register"]
104    #[inline(always)]
105    pub const fn imr(&self) -> &IMR {
106        unsafe { &*(self as *const Self).cast::<u8>().add(16usize).cast() }
107    }
108    #[doc = "0x14 - Channel Status Register"]
109    #[inline(always)]
110    pub const fn spi_mode_csr_spi_mode(&self) -> &SPI_MODE_CSR_SPI_MODE {
111        unsafe { &*(self as *const Self).cast::<u8>().add(20usize).cast() }
112    }
113    #[doc = "0x14 - Channel Status Register"]
114    #[inline(always)]
115    pub const fn csr(&self) -> &CSR {
116        unsafe { &*(self as *const Self).cast::<u8>().add(20usize).cast() }
117    }
118}
119#[doc = "CR (w) register accessor: an alias for `Reg<CR_SPEC>`"]
120pub type CR = crate::Reg<cr::CR_SPEC>;
121#[doc = "Control Register"]
122pub mod cr;
123#[doc = "SPI_MODE_CR_SPI_MODE (w) register accessor: an alias for `Reg<SPI_MODE_CR_SPI_MODE_SPEC>`"]
124pub type SPI_MODE_CR_SPI_MODE = crate::Reg<spi_mode_cr_spi_mode::SPI_MODE_CR_SPI_MODE_SPEC>;
125#[doc = "Control Register"]
126pub mod spi_mode_cr_spi_mode;
127#[doc = "MR (rw) register accessor: an alias for `Reg<MR_SPEC>`"]
128pub type MR = crate::Reg<mr::MR_SPEC>;
129#[doc = "Mode Register"]
130pub mod mr;
131#[doc = "SPI_MODE_MR_SPI_MODE (rw) register accessor: an alias for `Reg<SPI_MODE_MR_SPI_MODE_SPEC>`"]
132pub type SPI_MODE_MR_SPI_MODE = crate::Reg<spi_mode_mr_spi_mode::SPI_MODE_MR_SPI_MODE_SPEC>;
133#[doc = "Mode Register"]
134pub mod spi_mode_mr_spi_mode;
135#[doc = "IER (w) register accessor: an alias for `Reg<IER_SPEC>`"]
136pub type IER = crate::Reg<ier::IER_SPEC>;
137#[doc = "Interrupt Enable Register"]
138pub mod ier;
139#[doc = "SPI_MODE_IER_SPI_MODE (w) register accessor: an alias for `Reg<SPI_MODE_IER_SPI_MODE_SPEC>`"]
140pub type SPI_MODE_IER_SPI_MODE = crate::Reg<spi_mode_ier_spi_mode::SPI_MODE_IER_SPI_MODE_SPEC>;
141#[doc = "Interrupt Enable Register"]
142pub mod spi_mode_ier_spi_mode;
143#[doc = "IDR (w) register accessor: an alias for `Reg<IDR_SPEC>`"]
144pub type IDR = crate::Reg<idr::IDR_SPEC>;
145#[doc = "Interrupt Disable Register"]
146pub mod idr;
147#[doc = "SPI_MODE_IDR_SPI_MODE (w) register accessor: an alias for `Reg<SPI_MODE_IDR_SPI_MODE_SPEC>`"]
148pub type SPI_MODE_IDR_SPI_MODE = crate::Reg<spi_mode_idr_spi_mode::SPI_MODE_IDR_SPI_MODE_SPEC>;
149#[doc = "Interrupt Disable Register"]
150pub mod spi_mode_idr_spi_mode;
151#[doc = "IMR (r) register accessor: an alias for `Reg<IMR_SPEC>`"]
152pub type IMR = crate::Reg<imr::IMR_SPEC>;
153#[doc = "Interrupt Mask Register"]
154pub mod imr;
155#[doc = "SPI_MODE_IMR_SPI_MODE (r) register accessor: an alias for `Reg<SPI_MODE_IMR_SPI_MODE_SPEC>`"]
156pub type SPI_MODE_IMR_SPI_MODE = crate::Reg<spi_mode_imr_spi_mode::SPI_MODE_IMR_SPI_MODE_SPEC>;
157#[doc = "Interrupt Mask Register"]
158pub mod spi_mode_imr_spi_mode;
159#[doc = "CSR (r) register accessor: an alias for `Reg<CSR_SPEC>`"]
160pub type CSR = crate::Reg<csr::CSR_SPEC>;
161#[doc = "Channel Status Register"]
162pub mod csr;
163#[doc = "SPI_MODE_CSR_SPI_MODE (r) register accessor: an alias for `Reg<SPI_MODE_CSR_SPI_MODE_SPEC>`"]
164pub type SPI_MODE_CSR_SPI_MODE = crate::Reg<spi_mode_csr_spi_mode::SPI_MODE_CSR_SPI_MODE_SPEC>;
165#[doc = "Channel Status Register"]
166pub mod spi_mode_csr_spi_mode;
167#[doc = "RHR (r) register accessor: an alias for `Reg<RHR_SPEC>`"]
168pub type RHR = crate::Reg<rhr::RHR_SPEC>;
169#[doc = "Receive Holding Register"]
170pub mod rhr;
171#[doc = "THR (w) register accessor: an alias for `Reg<THR_SPEC>`"]
172pub type THR = crate::Reg<thr::THR_SPEC>;
173#[doc = "Transmit Holding Register"]
174pub mod thr;
175#[doc = "BRGR (rw) register accessor: an alias for `Reg<BRGR_SPEC>`"]
176pub type BRGR = crate::Reg<brgr::BRGR_SPEC>;
177#[doc = "Baud Rate Generator Register"]
178pub mod brgr;
179#[doc = "RTOR (rw) register accessor: an alias for `Reg<RTOR_SPEC>`"]
180pub type RTOR = crate::Reg<rtor::RTOR_SPEC>;
181#[doc = "Receiver Time-out Register"]
182pub mod rtor;
183#[doc = "TTGR (rw) register accessor: an alias for `Reg<TTGR_SPEC>`"]
184pub type TTGR = crate::Reg<ttgr::TTGR_SPEC>;
185#[doc = "Transmitter Timeguard Register"]
186pub mod ttgr;
187#[doc = "FIDI (rw) register accessor: an alias for `Reg<FIDI_SPEC>`"]
188pub type FIDI = crate::Reg<fidi::FIDI_SPEC>;
189#[doc = "FI DI Ratio Register"]
190pub mod fidi;
191#[doc = "NER (r) register accessor: an alias for `Reg<NER_SPEC>`"]
192pub type NER = crate::Reg<ner::NER_SPEC>;
193#[doc = "Number of Errors Register"]
194pub mod ner;
195#[doc = "IF (rw) register accessor: an alias for `Reg<IF_SPEC>`"]
196pub type IF = crate::Reg<if_::IF_SPEC>;
197#[doc = "IrDA Filter Register"]
198pub mod if_;
199#[doc = "MAN (rw) register accessor: an alias for `Reg<MAN_SPEC>`"]
200pub type MAN = crate::Reg<man::MAN_SPEC>;
201#[doc = "Manchester Configuration Register"]
202pub mod man;
203#[doc = "WPMR (rw) register accessor: an alias for `Reg<WPMR_SPEC>`"]
204pub type WPMR = crate::Reg<wpmr::WPMR_SPEC>;
205#[doc = "Write Protection Mode Register"]
206pub mod wpmr;
207#[doc = "WPSR (r) register accessor: an alias for `Reg<WPSR_SPEC>`"]
208pub type WPSR = crate::Reg<wpsr::WPSR_SPEC>;
209#[doc = "Write Protection Status Register"]
210pub mod wpsr;
211#[doc = "RPR (rw) register accessor: an alias for `Reg<RPR_SPEC>`"]
212pub type RPR = crate::Reg<rpr::RPR_SPEC>;
213#[doc = "Receive Pointer Register"]
214pub mod rpr;
215#[doc = "RCR (rw) register accessor: an alias for `Reg<RCR_SPEC>`"]
216pub type RCR = crate::Reg<rcr::RCR_SPEC>;
217#[doc = "Receive Counter Register"]
218pub mod rcr;
219#[doc = "TPR (rw) register accessor: an alias for `Reg<TPR_SPEC>`"]
220pub type TPR = crate::Reg<tpr::TPR_SPEC>;
221#[doc = "Transmit Pointer Register"]
222pub mod tpr;
223#[doc = "TCR (rw) register accessor: an alias for `Reg<TCR_SPEC>`"]
224pub type TCR = crate::Reg<tcr::TCR_SPEC>;
225#[doc = "Transmit Counter Register"]
226pub mod tcr;
227#[doc = "RNPR (rw) register accessor: an alias for `Reg<RNPR_SPEC>`"]
228pub type RNPR = crate::Reg<rnpr::RNPR_SPEC>;
229#[doc = "Receive Next Pointer Register"]
230pub mod rnpr;
231#[doc = "RNCR (rw) register accessor: an alias for `Reg<RNCR_SPEC>`"]
232pub type RNCR = crate::Reg<rncr::RNCR_SPEC>;
233#[doc = "Receive Next Counter Register"]
234pub mod rncr;
235#[doc = "TNPR (rw) register accessor: an alias for `Reg<TNPR_SPEC>`"]
236pub type TNPR = crate::Reg<tnpr::TNPR_SPEC>;
237#[doc = "Transmit Next Pointer Register"]
238pub mod tnpr;
239#[doc = "TNCR (rw) register accessor: an alias for `Reg<TNCR_SPEC>`"]
240pub type TNCR = crate::Reg<tncr::TNCR_SPEC>;
241#[doc = "Transmit Next Counter Register"]
242pub mod tncr;
243#[doc = "PTCR (w) register accessor: an alias for `Reg<PTCR_SPEC>`"]
244pub type PTCR = crate::Reg<ptcr::PTCR_SPEC>;
245#[doc = "Transfer Control Register"]
246pub mod ptcr;
247#[doc = "PTSR (r) register accessor: an alias for `Reg<PTSR_SPEC>`"]
248pub type PTSR = crate::Reg<ptsr::PTSR_SPEC>;
249#[doc = "Transfer Status Register"]
250pub mod ptsr;