1#[doc = "Register `i2s_pcm_clkd` reader"]
2pub type R = crate::R<I2S_PCM_CLKD_SPEC>;
3#[doc = "Register `i2s_pcm_clkd` writer"]
4pub type W = crate::W<I2S_PCM_CLKD_SPEC>;
5#[doc = "Field `mclkdiv` reader - MCLK Divide ratio from PLL_AUDIO"]
6pub type MCLKDIV_R = crate::FieldReader<MCLKDIV_A>;
7#[doc = "MCLK Divide ratio from PLL_AUDIO\n\nValue on reset: 0"]
8#[derive(Clone, Copy, Debug, PartialEq, Eq)]
9#[repr(u8)]
10pub enum MCLKDIV_A {
11 #[doc = "1: Divide by 1"]
12 DIV_1 = 1,
13 #[doc = "2: Divide by 2"]
14 DIV_2 = 2,
15 #[doc = "3: Divide by 4"]
16 DIV_4 = 3,
17 #[doc = "4: Divide by 6"]
18 DIV_6 = 4,
19 #[doc = "5: Divide by 8"]
20 DIV_8 = 5,
21 #[doc = "6: Divide by 12"]
22 DIV_12 = 6,
23 #[doc = "7: Divide by 16"]
24 DIV_16 = 7,
25 #[doc = "8: Divide by 24"]
26 DIV_24 = 8,
27 #[doc = "9: Divide by 32"]
28 DIV_32 = 9,
29 #[doc = "10: Divide by 48"]
30 DIV_48 = 10,
31 #[doc = "11: Divide by 64"]
32 DIV_64 = 11,
33 #[doc = "12: Divide by 96"]
34 DIV_96 = 12,
35 #[doc = "13: Divide by 128"]
36 DIV_128 = 13,
37 #[doc = "14: Divide by 176"]
38 DIV_176 = 14,
39 #[doc = "15: Divide by 192"]
40 DIV_192 = 15,
41}
42impl From<MCLKDIV_A> for u8 {
43 #[inline(always)]
44 fn from(variant: MCLKDIV_A) -> Self {
45 variant as _
46 }
47}
48impl crate::FieldSpec for MCLKDIV_A {
49 type Ux = u8;
50}
51impl MCLKDIV_R {
52 #[doc = "Get enumerated values variant"]
53 #[inline(always)]
54 pub const fn variant(&self) -> MCLKDIV_A {
55 match self.bits {
56 1 => MCLKDIV_A::DIV_1,
57 2 => MCLKDIV_A::DIV_2,
58 3 => MCLKDIV_A::DIV_4,
59 4 => MCLKDIV_A::DIV_6,
60 5 => MCLKDIV_A::DIV_8,
61 6 => MCLKDIV_A::DIV_12,
62 7 => MCLKDIV_A::DIV_16,
63 8 => MCLKDIV_A::DIV_24,
64 9 => MCLKDIV_A::DIV_32,
65 10 => MCLKDIV_A::DIV_48,
66 11 => MCLKDIV_A::DIV_64,
67 12 => MCLKDIV_A::DIV_96,
68 13 => MCLKDIV_A::DIV_128,
69 14 => MCLKDIV_A::DIV_176,
70 15 => MCLKDIV_A::DIV_192,
71 _ => unreachable!(),
72 }
73 }
74 #[doc = "Divide by 1"]
75 #[inline(always)]
76 pub fn is_div_1(&self) -> bool {
77 *self == MCLKDIV_A::DIV_1
78 }
79 #[doc = "Divide by 2"]
80 #[inline(always)]
81 pub fn is_div_2(&self) -> bool {
82 *self == MCLKDIV_A::DIV_2
83 }
84 #[doc = "Divide by 4"]
85 #[inline(always)]
86 pub fn is_div_4(&self) -> bool {
87 *self == MCLKDIV_A::DIV_4
88 }
89 #[doc = "Divide by 6"]
90 #[inline(always)]
91 pub fn is_div_6(&self) -> bool {
92 *self == MCLKDIV_A::DIV_6
93 }
94 #[doc = "Divide by 8"]
95 #[inline(always)]
96 pub fn is_div_8(&self) -> bool {
97 *self == MCLKDIV_A::DIV_8
98 }
99 #[doc = "Divide by 12"]
100 #[inline(always)]
101 pub fn is_div_12(&self) -> bool {
102 *self == MCLKDIV_A::DIV_12
103 }
104 #[doc = "Divide by 16"]
105 #[inline(always)]
106 pub fn is_div_16(&self) -> bool {
107 *self == MCLKDIV_A::DIV_16
108 }
109 #[doc = "Divide by 24"]
110 #[inline(always)]
111 pub fn is_div_24(&self) -> bool {
112 *self == MCLKDIV_A::DIV_24
113 }
114 #[doc = "Divide by 32"]
115 #[inline(always)]
116 pub fn is_div_32(&self) -> bool {
117 *self == MCLKDIV_A::DIV_32
118 }
119 #[doc = "Divide by 48"]
120 #[inline(always)]
121 pub fn is_div_48(&self) -> bool {
122 *self == MCLKDIV_A::DIV_48
123 }
124 #[doc = "Divide by 64"]
125 #[inline(always)]
126 pub fn is_div_64(&self) -> bool {
127 *self == MCLKDIV_A::DIV_64
128 }
129 #[doc = "Divide by 96"]
130 #[inline(always)]
131 pub fn is_div_96(&self) -> bool {
132 *self == MCLKDIV_A::DIV_96
133 }
134 #[doc = "Divide by 128"]
135 #[inline(always)]
136 pub fn is_div_128(&self) -> bool {
137 *self == MCLKDIV_A::DIV_128
138 }
139 #[doc = "Divide by 176"]
140 #[inline(always)]
141 pub fn is_div_176(&self) -> bool {
142 *self == MCLKDIV_A::DIV_176
143 }
144 #[doc = "Divide by 192"]
145 #[inline(always)]
146 pub fn is_div_192(&self) -> bool {
147 *self == MCLKDIV_A::DIV_192
148 }
149}
150#[doc = "Field `mclkdiv` writer - MCLK Divide ratio from PLL_AUDIO"]
151pub type MCLKDIV_W<'a, REG> = crate::FieldWriter<'a, REG, 4, MCLKDIV_A>;
152impl<'a, REG> MCLKDIV_W<'a, REG>
153where
154 REG: crate::Writable + crate::RegisterSpec,
155 REG::Ux: From<u8>,
156{
157 #[doc = "Divide by 1"]
158 #[inline(always)]
159 pub fn div_1(self) -> &'a mut crate::W<REG> {
160 self.variant(MCLKDIV_A::DIV_1)
161 }
162 #[doc = "Divide by 2"]
163 #[inline(always)]
164 pub fn div_2(self) -> &'a mut crate::W<REG> {
165 self.variant(MCLKDIV_A::DIV_2)
166 }
167 #[doc = "Divide by 4"]
168 #[inline(always)]
169 pub fn div_4(self) -> &'a mut crate::W<REG> {
170 self.variant(MCLKDIV_A::DIV_4)
171 }
172 #[doc = "Divide by 6"]
173 #[inline(always)]
174 pub fn div_6(self) -> &'a mut crate::W<REG> {
175 self.variant(MCLKDIV_A::DIV_6)
176 }
177 #[doc = "Divide by 8"]
178 #[inline(always)]
179 pub fn div_8(self) -> &'a mut crate::W<REG> {
180 self.variant(MCLKDIV_A::DIV_8)
181 }
182 #[doc = "Divide by 12"]
183 #[inline(always)]
184 pub fn div_12(self) -> &'a mut crate::W<REG> {
185 self.variant(MCLKDIV_A::DIV_12)
186 }
187 #[doc = "Divide by 16"]
188 #[inline(always)]
189 pub fn div_16(self) -> &'a mut crate::W<REG> {
190 self.variant(MCLKDIV_A::DIV_16)
191 }
192 #[doc = "Divide by 24"]
193 #[inline(always)]
194 pub fn div_24(self) -> &'a mut crate::W<REG> {
195 self.variant(MCLKDIV_A::DIV_24)
196 }
197 #[doc = "Divide by 32"]
198 #[inline(always)]
199 pub fn div_32(self) -> &'a mut crate::W<REG> {
200 self.variant(MCLKDIV_A::DIV_32)
201 }
202 #[doc = "Divide by 48"]
203 #[inline(always)]
204 pub fn div_48(self) -> &'a mut crate::W<REG> {
205 self.variant(MCLKDIV_A::DIV_48)
206 }
207 #[doc = "Divide by 64"]
208 #[inline(always)]
209 pub fn div_64(self) -> &'a mut crate::W<REG> {
210 self.variant(MCLKDIV_A::DIV_64)
211 }
212 #[doc = "Divide by 96"]
213 #[inline(always)]
214 pub fn div_96(self) -> &'a mut crate::W<REG> {
215 self.variant(MCLKDIV_A::DIV_96)
216 }
217 #[doc = "Divide by 128"]
218 #[inline(always)]
219 pub fn div_128(self) -> &'a mut crate::W<REG> {
220 self.variant(MCLKDIV_A::DIV_128)
221 }
222 #[doc = "Divide by 176"]
223 #[inline(always)]
224 pub fn div_176(self) -> &'a mut crate::W<REG> {
225 self.variant(MCLKDIV_A::DIV_176)
226 }
227 #[doc = "Divide by 192"]
228 #[inline(always)]
229 pub fn div_192(self) -> &'a mut crate::W<REG> {
230 self.variant(MCLKDIV_A::DIV_192)
231 }
232}
233#[doc = "Field `bclkdiv` reader - BCLK Divide ratio from PLL_AUDIO"]
234pub type BCLKDIV_R = crate::FieldReader<BCLKDIV_A>;
235#[doc = "BCLK Divide ratio from PLL_AUDIO\n\nValue on reset: 0"]
236#[derive(Clone, Copy, Debug, PartialEq, Eq)]
237#[repr(u8)]
238pub enum BCLKDIV_A {
239 #[doc = "1: Divide by 1"]
240 DIV_1 = 1,
241 #[doc = "2: Divide by 2"]
242 DIV_2 = 2,
243 #[doc = "3: Divide by 4"]
244 DIV_4 = 3,
245 #[doc = "4: Divide by 6"]
246 DIV_6 = 4,
247 #[doc = "5: Divide by 8"]
248 DIV_8 = 5,
249 #[doc = "6: Divide by 12"]
250 DIV_12 = 6,
251 #[doc = "7: Divide by 16"]
252 DIV_16 = 7,
253 #[doc = "8: Divide by 24"]
254 DIV_24 = 8,
255 #[doc = "9: Divide by 32"]
256 DIV_32 = 9,
257 #[doc = "10: Divide by 48"]
258 DIV_48 = 10,
259 #[doc = "11: Divide by 64"]
260 DIV_64 = 11,
261 #[doc = "12: Divide by 96"]
262 DIV_96 = 12,
263 #[doc = "13: Divide by 128"]
264 DIV_128 = 13,
265 #[doc = "14: Divide by 176"]
266 DIV_176 = 14,
267 #[doc = "15: Divide by 192"]
268 DIV_192 = 15,
269}
270impl From<BCLKDIV_A> for u8 {
271 #[inline(always)]
272 fn from(variant: BCLKDIV_A) -> Self {
273 variant as _
274 }
275}
276impl crate::FieldSpec for BCLKDIV_A {
277 type Ux = u8;
278}
279impl BCLKDIV_R {
280 #[doc = "Get enumerated values variant"]
281 #[inline(always)]
282 pub const fn variant(&self) -> BCLKDIV_A {
283 match self.bits {
284 1 => BCLKDIV_A::DIV_1,
285 2 => BCLKDIV_A::DIV_2,
286 3 => BCLKDIV_A::DIV_4,
287 4 => BCLKDIV_A::DIV_6,
288 5 => BCLKDIV_A::DIV_8,
289 6 => BCLKDIV_A::DIV_12,
290 7 => BCLKDIV_A::DIV_16,
291 8 => BCLKDIV_A::DIV_24,
292 9 => BCLKDIV_A::DIV_32,
293 10 => BCLKDIV_A::DIV_48,
294 11 => BCLKDIV_A::DIV_64,
295 12 => BCLKDIV_A::DIV_96,
296 13 => BCLKDIV_A::DIV_128,
297 14 => BCLKDIV_A::DIV_176,
298 15 => BCLKDIV_A::DIV_192,
299 _ => unreachable!(),
300 }
301 }
302 #[doc = "Divide by 1"]
303 #[inline(always)]
304 pub fn is_div_1(&self) -> bool {
305 *self == BCLKDIV_A::DIV_1
306 }
307 #[doc = "Divide by 2"]
308 #[inline(always)]
309 pub fn is_div_2(&self) -> bool {
310 *self == BCLKDIV_A::DIV_2
311 }
312 #[doc = "Divide by 4"]
313 #[inline(always)]
314 pub fn is_div_4(&self) -> bool {
315 *self == BCLKDIV_A::DIV_4
316 }
317 #[doc = "Divide by 6"]
318 #[inline(always)]
319 pub fn is_div_6(&self) -> bool {
320 *self == BCLKDIV_A::DIV_6
321 }
322 #[doc = "Divide by 8"]
323 #[inline(always)]
324 pub fn is_div_8(&self) -> bool {
325 *self == BCLKDIV_A::DIV_8
326 }
327 #[doc = "Divide by 12"]
328 #[inline(always)]
329 pub fn is_div_12(&self) -> bool {
330 *self == BCLKDIV_A::DIV_12
331 }
332 #[doc = "Divide by 16"]
333 #[inline(always)]
334 pub fn is_div_16(&self) -> bool {
335 *self == BCLKDIV_A::DIV_16
336 }
337 #[doc = "Divide by 24"]
338 #[inline(always)]
339 pub fn is_div_24(&self) -> bool {
340 *self == BCLKDIV_A::DIV_24
341 }
342 #[doc = "Divide by 32"]
343 #[inline(always)]
344 pub fn is_div_32(&self) -> bool {
345 *self == BCLKDIV_A::DIV_32
346 }
347 #[doc = "Divide by 48"]
348 #[inline(always)]
349 pub fn is_div_48(&self) -> bool {
350 *self == BCLKDIV_A::DIV_48
351 }
352 #[doc = "Divide by 64"]
353 #[inline(always)]
354 pub fn is_div_64(&self) -> bool {
355 *self == BCLKDIV_A::DIV_64
356 }
357 #[doc = "Divide by 96"]
358 #[inline(always)]
359 pub fn is_div_96(&self) -> bool {
360 *self == BCLKDIV_A::DIV_96
361 }
362 #[doc = "Divide by 128"]
363 #[inline(always)]
364 pub fn is_div_128(&self) -> bool {
365 *self == BCLKDIV_A::DIV_128
366 }
367 #[doc = "Divide by 176"]
368 #[inline(always)]
369 pub fn is_div_176(&self) -> bool {
370 *self == BCLKDIV_A::DIV_176
371 }
372 #[doc = "Divide by 192"]
373 #[inline(always)]
374 pub fn is_div_192(&self) -> bool {
375 *self == BCLKDIV_A::DIV_192
376 }
377}
378#[doc = "Field `bclkdiv` writer - BCLK Divide ratio from PLL_AUDIO"]
379pub type BCLKDIV_W<'a, REG> = crate::FieldWriter<'a, REG, 4, BCLKDIV_A>;
380impl<'a, REG> BCLKDIV_W<'a, REG>
381where
382 REG: crate::Writable + crate::RegisterSpec,
383 REG::Ux: From<u8>,
384{
385 #[doc = "Divide by 1"]
386 #[inline(always)]
387 pub fn div_1(self) -> &'a mut crate::W<REG> {
388 self.variant(BCLKDIV_A::DIV_1)
389 }
390 #[doc = "Divide by 2"]
391 #[inline(always)]
392 pub fn div_2(self) -> &'a mut crate::W<REG> {
393 self.variant(BCLKDIV_A::DIV_2)
394 }
395 #[doc = "Divide by 4"]
396 #[inline(always)]
397 pub fn div_4(self) -> &'a mut crate::W<REG> {
398 self.variant(BCLKDIV_A::DIV_4)
399 }
400 #[doc = "Divide by 6"]
401 #[inline(always)]
402 pub fn div_6(self) -> &'a mut crate::W<REG> {
403 self.variant(BCLKDIV_A::DIV_6)
404 }
405 #[doc = "Divide by 8"]
406 #[inline(always)]
407 pub fn div_8(self) -> &'a mut crate::W<REG> {
408 self.variant(BCLKDIV_A::DIV_8)
409 }
410 #[doc = "Divide by 12"]
411 #[inline(always)]
412 pub fn div_12(self) -> &'a mut crate::W<REG> {
413 self.variant(BCLKDIV_A::DIV_12)
414 }
415 #[doc = "Divide by 16"]
416 #[inline(always)]
417 pub fn div_16(self) -> &'a mut crate::W<REG> {
418 self.variant(BCLKDIV_A::DIV_16)
419 }
420 #[doc = "Divide by 24"]
421 #[inline(always)]
422 pub fn div_24(self) -> &'a mut crate::W<REG> {
423 self.variant(BCLKDIV_A::DIV_24)
424 }
425 #[doc = "Divide by 32"]
426 #[inline(always)]
427 pub fn div_32(self) -> &'a mut crate::W<REG> {
428 self.variant(BCLKDIV_A::DIV_32)
429 }
430 #[doc = "Divide by 48"]
431 #[inline(always)]
432 pub fn div_48(self) -> &'a mut crate::W<REG> {
433 self.variant(BCLKDIV_A::DIV_48)
434 }
435 #[doc = "Divide by 64"]
436 #[inline(always)]
437 pub fn div_64(self) -> &'a mut crate::W<REG> {
438 self.variant(BCLKDIV_A::DIV_64)
439 }
440 #[doc = "Divide by 96"]
441 #[inline(always)]
442 pub fn div_96(self) -> &'a mut crate::W<REG> {
443 self.variant(BCLKDIV_A::DIV_96)
444 }
445 #[doc = "Divide by 128"]
446 #[inline(always)]
447 pub fn div_128(self) -> &'a mut crate::W<REG> {
448 self.variant(BCLKDIV_A::DIV_128)
449 }
450 #[doc = "Divide by 176"]
451 #[inline(always)]
452 pub fn div_176(self) -> &'a mut crate::W<REG> {
453 self.variant(BCLKDIV_A::DIV_176)
454 }
455 #[doc = "Divide by 192"]
456 #[inline(always)]
457 pub fn div_192(self) -> &'a mut crate::W<REG> {
458 self.variant(BCLKDIV_A::DIV_192)
459 }
460}
461#[doc = "Field `mclko_en` reader - MCLK Output Enable\n\nNote: Whether in slave or master mode, when this bit is set to ‘1’, MCLK should be output."]
462pub type MCLKO_EN_R = crate::BitReader<MCLKO_EN_A>;
463#[doc = "MCLK Output Enable\n\nNote: Whether in slave or master mode, when this bit is set to ‘1’, MCLK should be output.\n\nValue on reset: 0"]
464#[derive(Clone, Copy, Debug, PartialEq, Eq)]
465pub enum MCLKO_EN_A {
466 #[doc = "0: Disable MCLK Output"]
467 DISABLE = 0,
468 #[doc = "1: Enable MCLK Output"]
469 ENABLE = 1,
470}
471impl From<MCLKO_EN_A> for bool {
472 #[inline(always)]
473 fn from(variant: MCLKO_EN_A) -> Self {
474 variant as u8 != 0
475 }
476}
477impl MCLKO_EN_R {
478 #[doc = "Get enumerated values variant"]
479 #[inline(always)]
480 pub const fn variant(&self) -> MCLKO_EN_A {
481 match self.bits {
482 false => MCLKO_EN_A::DISABLE,
483 true => MCLKO_EN_A::ENABLE,
484 }
485 }
486 #[doc = "Disable MCLK Output"]
487 #[inline(always)]
488 pub fn is_disable(&self) -> bool {
489 *self == MCLKO_EN_A::DISABLE
490 }
491 #[doc = "Enable MCLK Output"]
492 #[inline(always)]
493 pub fn is_enable(&self) -> bool {
494 *self == MCLKO_EN_A::ENABLE
495 }
496}
497#[doc = "Field `mclko_en` writer - MCLK Output Enable\n\nNote: Whether in slave or master mode, when this bit is set to ‘1’, MCLK should be output."]
498pub type MCLKO_EN_W<'a, REG> = crate::BitWriter<'a, REG, MCLKO_EN_A>;
499impl<'a, REG> MCLKO_EN_W<'a, REG>
500where
501 REG: crate::Writable + crate::RegisterSpec,
502{
503 #[doc = "Disable MCLK Output"]
504 #[inline(always)]
505 pub fn disable(self) -> &'a mut crate::W<REG> {
506 self.variant(MCLKO_EN_A::DISABLE)
507 }
508 #[doc = "Enable MCLK Output"]
509 #[inline(always)]
510 pub fn enable(self) -> &'a mut crate::W<REG> {
511 self.variant(MCLKO_EN_A::ENABLE)
512 }
513}
514impl R {
515 #[doc = "Bits 0:3 - MCLK Divide ratio from PLL_AUDIO"]
516 #[inline(always)]
517 pub fn mclkdiv(&self) -> MCLKDIV_R {
518 MCLKDIV_R::new((self.bits & 0x0f) as u8)
519 }
520 #[doc = "Bits 4:7 - BCLK Divide ratio from PLL_AUDIO"]
521 #[inline(always)]
522 pub fn bclkdiv(&self) -> BCLKDIV_R {
523 BCLKDIV_R::new(((self.bits >> 4) & 0x0f) as u8)
524 }
525 #[doc = "Bit 8 - MCLK Output Enable\n\nNote: Whether in slave or master mode, when this bit is set to ‘1’, MCLK should be output."]
526 #[inline(always)]
527 pub fn mclko_en(&self) -> MCLKO_EN_R {
528 MCLKO_EN_R::new(((self.bits >> 8) & 1) != 0)
529 }
530}
531impl W {
532 #[doc = "Bits 0:3 - MCLK Divide ratio from PLL_AUDIO"]
533 #[inline(always)]
534 #[must_use]
535 pub fn mclkdiv(&mut self) -> MCLKDIV_W<I2S_PCM_CLKD_SPEC> {
536 MCLKDIV_W::new(self, 0)
537 }
538 #[doc = "Bits 4:7 - BCLK Divide ratio from PLL_AUDIO"]
539 #[inline(always)]
540 #[must_use]
541 pub fn bclkdiv(&mut self) -> BCLKDIV_W<I2S_PCM_CLKD_SPEC> {
542 BCLKDIV_W::new(self, 4)
543 }
544 #[doc = "Bit 8 - MCLK Output Enable\n\nNote: Whether in slave or master mode, when this bit is set to ‘1’, MCLK should be output."]
545 #[inline(always)]
546 #[must_use]
547 pub fn mclko_en(&mut self) -> MCLKO_EN_W<I2S_PCM_CLKD_SPEC> {
548 MCLKO_EN_W::new(self, 8)
549 }
550 #[doc = r" Writes raw bits to the register."]
551 #[doc = r""]
552 #[doc = r" # Safety"]
553 #[doc = r""]
554 #[doc = r" Passing incorrect value can cause undefined behaviour. See reference manual"]
555 #[inline(always)]
556 pub unsafe fn bits(&mut self, bits: u32) -> &mut Self {
557 self.bits = bits;
558 self
559 }
560}
561#[doc = "I2S/PCM Clock Divide Register\n\nYou can [`read`](crate::generic::Reg::read) this register and get [`i2s_pcm_clkd::R`](R). You can [`reset`](crate::generic::Reg::reset), [`write`](crate::generic::Reg::write), [`write_with_zero`](crate::generic::Reg::write_with_zero) this register using [`i2s_pcm_clkd::W`](W). You can also [`modify`](crate::generic::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api)."]
562pub struct I2S_PCM_CLKD_SPEC;
563impl crate::RegisterSpec for I2S_PCM_CLKD_SPEC {
564 type Ux = u32;
565}
566#[doc = "`read()` method returns [`i2s_pcm_clkd::R`](R) reader structure"]
567impl crate::Readable for I2S_PCM_CLKD_SPEC {}
568#[doc = "`write(|w| ..)` method takes [`i2s_pcm_clkd::W`](W) writer structure"]
569impl crate::Writable for I2S_PCM_CLKD_SPEC {
570 const ZERO_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
571 const ONE_TO_MODIFY_FIELDS_BITMAP: Self::Ux = 0;
572}
573#[doc = "`reset()` method sets i2s_pcm_clkd to value 0"]
574impl crate::Resettable for I2S_PCM_CLKD_SPEC {
575 const RESET_VALUE: Self::Ux = 0;
576}