imxrt_ral/blocks/imxrt1021/
cmp.rs

1#[doc = "High-Speed Comparator (CMP), Voltage Reference (VREF) Digital-to-Analog Converter (DAC), and Analog Mux (ANMUX)"]
2#[repr(C)]
3pub struct RegisterBlock {
4    #[doc = "CMP Control Register 0"]
5    pub CR0: crate::RWRegister<u8>,
6    #[doc = "CMP Control Register 1"]
7    pub CR1: crate::RWRegister<u8>,
8    #[doc = "CMP Filter Period Register"]
9    pub FPR: crate::RWRegister<u8>,
10    #[doc = "CMP Status and Control Register"]
11    pub SCR: crate::RWRegister<u8>,
12    #[doc = "DAC Control Register"]
13    pub DACCR: crate::RWRegister<u8>,
14    #[doc = "MUX Control Register"]
15    pub MUXCR: crate::RWRegister<u8>,
16}
17#[doc = "CMP Control Register 0"]
18pub mod CR0 {
19    #[doc = "Comparator hard block hysteresis control"]
20    pub mod HYSTCTR {
21        pub const offset: u8 = 0;
22        pub const mask: u8 = 0x03 << offset;
23        pub mod R {}
24        pub mod W {}
25        pub mod RW {
26            #[doc = "Level 0"]
27            pub const HYSTCTR_0: u8 = 0;
28            #[doc = "Level 1"]
29            pub const HYSTCTR_1: u8 = 0x01;
30            #[doc = "Level 2"]
31            pub const HYSTCTR_2: u8 = 0x02;
32            #[doc = "Level 3"]
33            pub const HYSTCTR_3: u8 = 0x03;
34        }
35    }
36    #[doc = "Filter Sample Count"]
37    pub mod FILTER_CNT {
38        pub const offset: u8 = 4;
39        pub const mask: u8 = 0x07 << offset;
40        pub mod R {}
41        pub mod W {}
42        pub mod RW {
43            #[doc = "Filter is disabled. If SE = 1, then COUT is a logic 0. This is not a legal state, and is not recommended. If SE = 0, COUT = COUTA."]
44            pub const FILTER_CNT_0: u8 = 0;
45            #[doc = "One sample must agree. The comparator output is simply sampled."]
46            pub const FILTER_CNT_1: u8 = 0x01;
47            #[doc = "2 consecutive samples must agree."]
48            pub const FILTER_CNT_2: u8 = 0x02;
49            #[doc = "3 consecutive samples must agree."]
50            pub const FILTER_CNT_3: u8 = 0x03;
51            #[doc = "4 consecutive samples must agree."]
52            pub const FILTER_CNT_4: u8 = 0x04;
53            #[doc = "5 consecutive samples must agree."]
54            pub const FILTER_CNT_5: u8 = 0x05;
55            #[doc = "6 consecutive samples must agree."]
56            pub const FILTER_CNT_6: u8 = 0x06;
57            #[doc = "7 consecutive samples must agree."]
58            pub const FILTER_CNT_7: u8 = 0x07;
59        }
60    }
61}
62#[doc = "CMP Control Register 1"]
63pub mod CR1 {
64    #[doc = "Comparator Module Enable"]
65    pub mod EN {
66        pub const offset: u8 = 0;
67        pub const mask: u8 = 0x01 << offset;
68        pub mod R {}
69        pub mod W {}
70        pub mod RW {
71            #[doc = "Analog Comparator is disabled."]
72            pub const EN_0: u8 = 0;
73            #[doc = "Analog Comparator is enabled."]
74            pub const EN_1: u8 = 0x01;
75        }
76    }
77    #[doc = "Comparator Output Pin Enable"]
78    pub mod OPE {
79        pub const offset: u8 = 1;
80        pub const mask: u8 = 0x01 << offset;
81        pub mod R {}
82        pub mod W {}
83        pub mod RW {
84            #[doc = "CMPO is not available on the associated CMPO output pin. If the comparator does not own the pin, this field has no effect."]
85            pub const OPE_0: u8 = 0;
86            #[doc = "CMPO is available on the associated CMPO output pin. The comparator output (CMPO) is driven out on the associated CMPO output pin if the comparator owns the pin. If the comparator does not own the field, this bit has no effect."]
87            pub const OPE_1: u8 = 0x01;
88        }
89    }
90    #[doc = "Comparator Output Select"]
91    pub mod COS {
92        pub const offset: u8 = 2;
93        pub const mask: u8 = 0x01 << offset;
94        pub mod R {}
95        pub mod W {}
96        pub mod RW {
97            #[doc = "Set the filtered comparator output (CMPO) to equal COUT."]
98            pub const COS_0: u8 = 0;
99            #[doc = "Set the unfiltered comparator output (CMPO) to equal COUTA."]
100            pub const COS_1: u8 = 0x01;
101        }
102    }
103    #[doc = "Comparator INVERT"]
104    pub mod INV {
105        pub const offset: u8 = 3;
106        pub const mask: u8 = 0x01 << offset;
107        pub mod R {}
108        pub mod W {}
109        pub mod RW {
110            #[doc = "Does not invert the comparator output."]
111            pub const INV_0: u8 = 0;
112            #[doc = "Inverts the comparator output."]
113            pub const INV_1: u8 = 0x01;
114        }
115    }
116    #[doc = "Power Mode Select"]
117    pub mod PMODE {
118        pub const offset: u8 = 4;
119        pub const mask: u8 = 0x01 << offset;
120        pub mod R {}
121        pub mod W {}
122        pub mod RW {
123            #[doc = "Low-Speed (LS) Comparison mode selected. In this mode, CMP has slower output propagation delay and lower current consumption."]
124            pub const PMODE_0: u8 = 0;
125            #[doc = "High-Speed (HS) Comparison mode selected. In this mode, CMP has faster output propagation delay and higher current consumption."]
126            pub const PMODE_1: u8 = 0x01;
127        }
128    }
129    #[doc = "Windowing Enable"]
130    pub mod WE {
131        pub const offset: u8 = 6;
132        pub const mask: u8 = 0x01 << offset;
133        pub mod R {}
134        pub mod W {}
135        pub mod RW {
136            #[doc = "Windowing mode is not selected."]
137            pub const WE_0: u8 = 0;
138            #[doc = "Windowing mode is selected."]
139            pub const WE_1: u8 = 0x01;
140        }
141    }
142    #[doc = "Sample Enable"]
143    pub mod SE {
144        pub const offset: u8 = 7;
145        pub const mask: u8 = 0x01 << offset;
146        pub mod R {}
147        pub mod W {}
148        pub mod RW {
149            #[doc = "Sampling mode is not selected."]
150            pub const SE_0: u8 = 0;
151            #[doc = "Sampling mode is selected."]
152            pub const SE_1: u8 = 0x01;
153        }
154    }
155}
156#[doc = "CMP Filter Period Register"]
157pub mod FPR {
158    #[doc = "Filter Sample Period"]
159    pub mod FILT_PER {
160        pub const offset: u8 = 0;
161        pub const mask: u8 = 0xff << offset;
162        pub mod R {}
163        pub mod W {}
164        pub mod RW {}
165    }
166}
167#[doc = "CMP Status and Control Register"]
168pub mod SCR {
169    #[doc = "Analog Comparator Output"]
170    pub mod COUT {
171        pub const offset: u8 = 0;
172        pub const mask: u8 = 0x01 << offset;
173        pub mod R {}
174        pub mod W {}
175        pub mod RW {}
176    }
177    #[doc = "Analog Comparator Flag Falling"]
178    pub mod CFF {
179        pub const offset: u8 = 1;
180        pub const mask: u8 = 0x01 << offset;
181        pub mod R {}
182        pub mod W {}
183        pub mod RW {
184            #[doc = "Falling-edge on COUT has not been detected."]
185            pub const CFF_0: u8 = 0;
186            #[doc = "Falling-edge on COUT has occurred."]
187            pub const CFF_1: u8 = 0x01;
188        }
189    }
190    #[doc = "Analog Comparator Flag Rising"]
191    pub mod CFR {
192        pub const offset: u8 = 2;
193        pub const mask: u8 = 0x01 << offset;
194        pub mod R {}
195        pub mod W {}
196        pub mod RW {
197            #[doc = "Rising-edge on COUT has not been detected."]
198            pub const CFR_0: u8 = 0;
199            #[doc = "Rising-edge on COUT has occurred."]
200            pub const CFR_1: u8 = 0x01;
201        }
202    }
203    #[doc = "Comparator Interrupt Enable Falling"]
204    pub mod IEF {
205        pub const offset: u8 = 3;
206        pub const mask: u8 = 0x01 << offset;
207        pub mod R {}
208        pub mod W {}
209        pub mod RW {
210            #[doc = "Interrupt is disabled."]
211            pub const IEF_0: u8 = 0;
212            #[doc = "Interrupt is enabled."]
213            pub const IEF_1: u8 = 0x01;
214        }
215    }
216    #[doc = "Comparator Interrupt Enable Rising"]
217    pub mod IER {
218        pub const offset: u8 = 4;
219        pub const mask: u8 = 0x01 << offset;
220        pub mod R {}
221        pub mod W {}
222        pub mod RW {
223            #[doc = "Interrupt is disabled."]
224            pub const IER_0: u8 = 0;
225            #[doc = "Interrupt is enabled."]
226            pub const IER_1: u8 = 0x01;
227        }
228    }
229    #[doc = "DMA Enable Control"]
230    pub mod DMAEN {
231        pub const offset: u8 = 6;
232        pub const mask: u8 = 0x01 << offset;
233        pub mod R {}
234        pub mod W {}
235        pub mod RW {
236            #[doc = "DMA is disabled."]
237            pub const DMAEN_0: u8 = 0;
238            #[doc = "DMA is enabled."]
239            pub const DMAEN_1: u8 = 0x01;
240        }
241    }
242}
243#[doc = "DAC Control Register"]
244pub mod DACCR {
245    #[doc = "DAC Output Voltage Select"]
246    pub mod VOSEL {
247        pub const offset: u8 = 0;
248        pub const mask: u8 = 0x3f << offset;
249        pub mod R {}
250        pub mod W {}
251        pub mod RW {}
252    }
253    #[doc = "Supply Voltage Reference Source Select"]
254    pub mod VRSEL {
255        pub const offset: u8 = 6;
256        pub const mask: u8 = 0x01 << offset;
257        pub mod R {}
258        pub mod W {}
259        pub mod RW {
260            #[doc = "Vin1 is selected as resistor ladder network supply reference."]
261            pub const VRSEL_0: u8 = 0;
262            #[doc = "Vin2 is selected as resistor ladder network supply reference."]
263            pub const VRSEL_1: u8 = 0x01;
264        }
265    }
266    #[doc = "DAC Enable"]
267    pub mod DACEN {
268        pub const offset: u8 = 7;
269        pub const mask: u8 = 0x01 << offset;
270        pub mod R {}
271        pub mod W {}
272        pub mod RW {
273            #[doc = "DAC is disabled."]
274            pub const DACEN_0: u8 = 0;
275            #[doc = "DAC is enabled."]
276            pub const DACEN_1: u8 = 0x01;
277        }
278    }
279}
280#[doc = "MUX Control Register"]
281pub mod MUXCR {
282    #[doc = "Minus Input Mux Control"]
283    pub mod MSEL {
284        pub const offset: u8 = 0;
285        pub const mask: u8 = 0x07 << offset;
286        pub mod R {}
287        pub mod W {}
288        pub mod RW {
289            #[doc = "IN0"]
290            pub const MSEL_0: u8 = 0;
291            #[doc = "IN1"]
292            pub const MSEL_1: u8 = 0x01;
293            #[doc = "IN2"]
294            pub const MSEL_2: u8 = 0x02;
295            #[doc = "IN3"]
296            pub const MSEL_3: u8 = 0x03;
297            #[doc = "IN4"]
298            pub const MSEL_4: u8 = 0x04;
299            #[doc = "IN5"]
300            pub const MSEL_5: u8 = 0x05;
301            #[doc = "IN6"]
302            pub const MSEL_6: u8 = 0x06;
303            #[doc = "IN7"]
304            pub const MSEL_7: u8 = 0x07;
305        }
306    }
307    #[doc = "Plus Input Mux Control"]
308    pub mod PSEL {
309        pub const offset: u8 = 3;
310        pub const mask: u8 = 0x07 << offset;
311        pub mod R {}
312        pub mod W {}
313        pub mod RW {
314            #[doc = "IN0"]
315            pub const PSEL_0: u8 = 0;
316            #[doc = "IN1"]
317            pub const PSEL_1: u8 = 0x01;
318            #[doc = "IN2"]
319            pub const PSEL_2: u8 = 0x02;
320            #[doc = "IN3"]
321            pub const PSEL_3: u8 = 0x03;
322            #[doc = "IN4"]
323            pub const PSEL_4: u8 = 0x04;
324            #[doc = "IN5"]
325            pub const PSEL_5: u8 = 0x05;
326            #[doc = "IN6"]
327            pub const PSEL_6: u8 = 0x06;
328            #[doc = "IN7"]
329            pub const PSEL_7: u8 = 0x07;
330        }
331    }
332}