diff options
| author | Christian Perez Llamas <[email protected]> | 2022-11-13 02:48:07 +0100 |
|---|---|---|
| committer | Christian Perez Llamas <[email protected]> | 2022-11-13 02:48:07 +0100 |
| commit | 4fe834db2f491179edf28105faf79d6fc89785c6 (patch) | |
| tree | d3cd8953613f86930a01c3d8cb8cfc42caa54031 /examples | |
| parent | 17857bc18fee95be07ee0c51687d2eb109e5aea6 (diff) | |
Mono channels
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/nrf/src/bin/i2s.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/examples/nrf/src/bin/i2s.rs b/examples/nrf/src/bin/i2s.rs index 33b5398d9..4b6f8ab2d 100644 --- a/examples/nrf/src/bin/i2s.rs +++ b/examples/nrf/src/bin/i2s.rs | |||
| @@ -8,7 +8,7 @@ use core::f32::consts::PI; | |||
| 8 | 8 | ||
| 9 | use defmt::{error, info}; | 9 | use defmt::{error, info}; |
| 10 | use embassy_executor::Spawner; | 10 | use embassy_executor::Spawner; |
| 11 | use embassy_nrf::i2s::{MckFreq, Mode, Ratio, MODE_MASTER_16000, MODE_MASTER_8000}; | 11 | use embassy_nrf::i2s::{MckFreq, Mode, Ratio, MODE_MASTER_16000, MODE_MASTER_8000, Channels}; |
| 12 | use embassy_nrf::pac::ficr::info; | 12 | use embassy_nrf::pac::ficr::info; |
| 13 | use embassy_nrf::{i2s, interrupt}; | 13 | use embassy_nrf::{i2s, interrupt}; |
| 14 | use {defmt_rtt as _, panic_probe as _}; | 14 | use {defmt_rtt as _, panic_probe as _}; |
| @@ -37,6 +37,7 @@ async fn main(_spawner: Spawner) { | |||
| 37 | freq: MckFreq::_32MDiv10, | 37 | freq: MckFreq::_32MDiv10, |
| 38 | ratio: Ratio::_256x, | 38 | ratio: Ratio::_256x, |
| 39 | }; // 12500 Hz | 39 | }; // 12500 Hz |
| 40 | config.channels = Channels::Left; | ||
| 40 | let sample_rate = config.mode.sample_rate().expect("I2S Master"); | 41 | let sample_rate = config.mode.sample_rate().expect("I2S Master"); |
| 41 | let inv_sample_rate = 1.0 / sample_rate as f32; | 42 | let inv_sample_rate = 1.0 / sample_rate as f32; |
| 42 | 43 | ||
| @@ -46,25 +47,24 @@ async fn main(_spawner: Spawner) { | |||
| 46 | let mut i2s = i2s::I2S::new(p.I2S, irq, p.P0_28, p.P0_29, p.P0_31, p.P0_11, p.P0_30, config); | 47 | let mut i2s = i2s::I2S::new(p.I2S, irq, p.P0_28, p.P0_29, p.P0_31, p.P0_11, p.P0_30, config); |
| 47 | 48 | ||
| 48 | const BUF_SAMPLES: usize = 500; | 49 | const BUF_SAMPLES: usize = 500; |
| 49 | const BUF_SIZE: usize = BUF_SAMPLES * 2; | 50 | const BUF_SIZE: usize = BUF_SAMPLES; |
| 50 | let mut buf = AlignedBuffer([0i16; BUF_SIZE]); | 51 | let mut buf = AlignedBuffer([0i16; BUF_SIZE]); |
| 51 | 52 | ||
| 52 | let mut carrier = SineOsc::new(); | 53 | let mut carrier = SineOsc::new(); |
| 53 | carrier.set_frequency(240.0, inv_sample_rate); | 54 | carrier.set_frequency(16.0, inv_sample_rate); |
| 54 | 55 | ||
| 55 | // let mut modulator = SineOsc::new(); | 56 | // let mut modulator = SineOsc::new(); |
| 56 | // modulator.set_frequency(0.01, inv_sample_rate); | 57 | // modulator.set_frequency(0.01, inv_sample_rate); |
| 57 | // modulator.set_amplitude(0.2); | 58 | // modulator.set_amplitude(0.2); |
| 58 | 59 | ||
| 59 | let mut generate = |buf: &mut [i16]| { | 60 | let mut generate = |buf: &mut [i16]| { |
| 60 | for sample in buf.as_mut().chunks_mut(2) { | 61 | for sample in buf.as_mut() { |
| 61 | let signal = carrier.generate(); | 62 | let signal = carrier.generate(); |
| 62 | // let modulation = bipolar_to_unipolar(modulator.generate()); | 63 | // let modulation = bipolar_to_unipolar(modulator.generate()); |
| 63 | // carrier.set_frequency(200.0 + 100.0 * modulation, inv_sample_rate); | 64 | // carrier.set_frequency(200.0 + 100.0 * modulation, inv_sample_rate); |
| 64 | // carrier.set_amplitude((modulation); | 65 | // carrier.set_amplitude((modulation); |
| 65 | let value = (i16::MAX as f32 * signal) as i16; | 66 | let value = (i16::MAX as f32 * signal) as i16; |
| 66 | sample[0] = value; | 67 | *sample = value; |
| 67 | sample[1] = value; | ||
| 68 | } | 68 | } |
| 69 | }; | 69 | }; |
| 70 | 70 | ||
