diff options
| author | Dario Nieuwenhuis <[email protected]> | 2024-03-19 21:38:54 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-03-19 21:38:54 +0100 |
| commit | 594d330a494a246bd2611e8793f34d08fde80b5c (patch) | |
| tree | 7ce08e22bb408729143882266219207177968c22 | |
| parent | ea25112f7d1ce27a7216ce6c3aab983dc3a0d7c0 (diff) | |
| parent | 5a879b3ed1617f49670f5d66e659a4d6c3e7b0fb (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.rs | 144 |
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))] | ||
| 389 | pub enum MasterClockDivider { | 390 | pub 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))] | ||
| 414 | pub 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 | |||
| 409 | impl MasterClockDivider { | 481 | impl 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. |
