aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorChristian Perez Llamas <[email protected]>2022-11-13 02:48:07 +0100
committerChristian Perez Llamas <[email protected]>2022-11-13 02:48:07 +0100
commit4fe834db2f491179edf28105faf79d6fc89785c6 (patch)
treed3cd8953613f86930a01c3d8cb8cfc42caa54031 /examples
parent17857bc18fee95be07ee0c51687d2eb109e5aea6 (diff)
Mono channels
Diffstat (limited to 'examples')
-rw-r--r--examples/nrf/src/bin/i2s.rs12
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
9use defmt::{error, info}; 9use defmt::{error, info};
10use embassy_executor::Spawner; 10use embassy_executor::Spawner;
11use embassy_nrf::i2s::{MckFreq, Mode, Ratio, MODE_MASTER_16000, MODE_MASTER_8000}; 11use embassy_nrf::i2s::{MckFreq, Mode, Ratio, MODE_MASTER_16000, MODE_MASTER_8000, Channels};
12use embassy_nrf::pac::ficr::info; 12use embassy_nrf::pac::ficr::info;
13use embassy_nrf::{i2s, interrupt}; 13use embassy_nrf::{i2s, interrupt};
14use {defmt_rtt as _, panic_probe as _}; 14use {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