aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2024-03-19 21:38:54 +0100
committerGitHub <[email protected]>2024-03-19 21:38:54 +0100
commit594d330a494a246bd2611e8793f34d08fde80b5c (patch)
tree7ce08e22bb408729143882266219207177968c22
parentea25112f7d1ce27a7216ce6c3aab983dc3a0d7c0 (diff)
parent5a879b3ed1617f49670f5d66e659a4d6c3e7b0fb (diff)
Merge pull request #2710 from adamgreig/stm32-sai
STM32: SAI: Fix MCKDIV for SAI v3/v4
-rw-r--r--embassy-stm32/src/sai/mod.rs144
1 files changed, 143 insertions, 1 deletions
diff --git a/embassy-stm32/src/sai/mod.rs b/embassy-stm32/src/sai/mod.rs
index 02f96f8a9..294620031 100644
--- a/embassy-stm32/src/sai/mod.rs
+++ b/embassy-stm32/src/sai/mod.rs
@@ -386,6 +386,7 @@ impl OutputDrive {
386/// Master clock divider. 386/// Master clock divider.
387#[derive(Copy, Clone, PartialEq)] 387#[derive(Copy, Clone, PartialEq)]
388#[allow(missing_docs)] 388#[allow(missing_docs)]
389#[cfg(any(sai_v1, sai_v2))]
389pub enum MasterClockDivider { 390pub enum MasterClockDivider {
390 MasterClockDisabled, 391 MasterClockDisabled,
391 Div1, 392 Div1,
@@ -406,8 +407,79 @@ pub enum MasterClockDivider {
406 Div30, 407 Div30,
407} 408}
408 409
410/// Master clock divider.
411#[derive(Copy, Clone, PartialEq)]
412#[allow(missing_docs)]
413#[cfg(any(sai_v3_2pdm, sai_v3_4pdm, sai_v4_2pdm, sai_v4_4pdm))]
414pub enum MasterClockDivider {
415 MasterClockDisabled,
416 Div1,
417 Div2,
418 Div3,
419 Div4,
420 Div5,
421 Div6,
422 Div7,
423 Div8,
424 Div9,
425 Div10,
426 Div11,
427 Div12,
428 Div13,
429 Div14,
430 Div15,
431 Div16,
432 Div17,
433 Div18,
434 Div19,
435 Div20,
436 Div21,
437 Div22,
438 Div23,
439 Div24,
440 Div25,
441 Div26,
442 Div27,
443 Div28,
444 Div29,
445 Div30,
446 Div31,
447 Div32,
448 Div33,
449 Div34,
450 Div35,
451 Div36,
452 Div37,
453 Div38,
454 Div39,
455 Div40,
456 Div41,
457 Div42,
458 Div43,
459 Div44,
460 Div45,
461 Div46,
462 Div47,
463 Div48,
464 Div49,
465 Div50,
466 Div51,
467 Div52,
468 Div53,
469 Div54,
470 Div55,
471 Div56,
472 Div57,
473 Div58,
474 Div59,
475 Div60,
476 Div61,
477 Div62,
478 Div63,
479}
480
409impl MasterClockDivider { 481impl MasterClockDivider {
410 #[cfg(any(sai_v1, sai_v2, sai_v3_2pdm, sai_v3_4pdm, sai_v4_2pdm, sai_v4_4pdm))] 482 #[cfg(any(sai_v1, sai_v2))]
411 const fn mckdiv(&self) -> u8 { 483 const fn mckdiv(&self) -> u8 {
412 match self { 484 match self {
413 MasterClockDivider::MasterClockDisabled => 0, 485 MasterClockDivider::MasterClockDisabled => 0,
@@ -429,6 +501,76 @@ impl MasterClockDivider {
429 MasterClockDivider::Div30 => 15, 501 MasterClockDivider::Div30 => 15,
430 } 502 }
431 } 503 }
504
505 #[cfg(any(sai_v3_2pdm, sai_v3_4pdm, sai_v4_2pdm, sai_v4_4pdm))]
506 const fn mckdiv(&self) -> u8 {
507 match self {
508 MasterClockDivider::MasterClockDisabled => 0,
509 MasterClockDivider::Div1 => 1,
510 MasterClockDivider::Div2 => 2,
511 MasterClockDivider::Div3 => 3,
512 MasterClockDivider::Div4 => 4,
513 MasterClockDivider::Div5 => 5,
514 MasterClockDivider::Div6 => 6,
515 MasterClockDivider::Div7 => 7,
516 MasterClockDivider::Div8 => 8,
517 MasterClockDivider::Div9 => 9,
518 MasterClockDivider::Div10 => 10,
519 MasterClockDivider::Div11 => 11,
520 MasterClockDivider::Div12 => 12,
521 MasterClockDivider::Div13 => 13,
522 MasterClockDivider::Div14 => 14,
523 MasterClockDivider::Div15 => 15,
524 MasterClockDivider::Div16 => 16,
525 MasterClockDivider::Div17 => 17,
526 MasterClockDivider::Div18 => 18,
527 MasterClockDivider::Div19 => 19,
528 MasterClockDivider::Div20 => 20,
529 MasterClockDivider::Div21 => 21,
530 MasterClockDivider::Div22 => 22,
531 MasterClockDivider::Div23 => 23,
532 MasterClockDivider::Div24 => 24,
533 MasterClockDivider::Div25 => 25,
534 MasterClockDivider::Div26 => 26,
535 MasterClockDivider::Div27 => 27,
536 MasterClockDivider::Div28 => 28,
537 MasterClockDivider::Div29 => 29,
538 MasterClockDivider::Div30 => 30,
539 MasterClockDivider::Div31 => 31,
540 MasterClockDivider::Div32 => 32,
541 MasterClockDivider::Div33 => 33,
542 MasterClockDivider::Div34 => 34,
543 MasterClockDivider::Div35 => 35,
544 MasterClockDivider::Div36 => 36,
545 MasterClockDivider::Div37 => 37,
546 MasterClockDivider::Div38 => 38,
547 MasterClockDivider::Div39 => 39,
548 MasterClockDivider::Div40 => 40,
549 MasterClockDivider::Div41 => 41,
550 MasterClockDivider::Div42 => 42,
551 MasterClockDivider::Div43 => 43,
552 MasterClockDivider::Div44 => 44,
553 MasterClockDivider::Div45 => 45,
554 MasterClockDivider::Div46 => 46,
555 MasterClockDivider::Div47 => 47,
556 MasterClockDivider::Div48 => 48,
557 MasterClockDivider::Div49 => 49,
558 MasterClockDivider::Div50 => 50,
559 MasterClockDivider::Div51 => 51,
560 MasterClockDivider::Div52 => 52,
561 MasterClockDivider::Div53 => 53,
562 MasterClockDivider::Div54 => 54,
563 MasterClockDivider::Div55 => 55,
564 MasterClockDivider::Div56 => 56,
565 MasterClockDivider::Div57 => 57,
566 MasterClockDivider::Div58 => 58,
567 MasterClockDivider::Div59 => 59,
568 MasterClockDivider::Div60 => 60,
569 MasterClockDivider::Div61 => 61,
570 MasterClockDivider::Div62 => 62,
571 MasterClockDivider::Div63 => 63,
572 }
573 }
432} 574}
433 575
434/// [`SAI`] configuration. 576/// [`SAI`] configuration.