summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Shawcroft <scott@adafruit.com>2019-11-25 16:59:08 -0800
committerGitHub <noreply@github.com>2019-11-25 16:59:08 -0800
commite5dd78d393d492d52dfd0817547219f378f6dbee (patch)
tree8b660907d8dcd9add1424c55c522162b629d0725
parent2653455ded4e8ffb0c0a78bcb998b3ff784152d2 (diff)
parent1ee35fd6fde6ef6e1aa9fd8d5d15cfd821f2a83d (diff)
Merge pull request #2324 from jepler/nrf-i2s-channels-widths
nrf: assign channel width and count correctly
-rw-r--r--ports/nrf/common-hal/audiobusio/I2SOut.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/ports/nrf/common-hal/audiobusio/I2SOut.c b/ports/nrf/common-hal/audiobusio/I2SOut.c
index f10590da1..ead92b000 100644
--- a/ports/nrf/common-hal/audiobusio/I2SOut.c
+++ b/ports/nrf/common-hal/audiobusio/I2SOut.c
@@ -245,12 +245,20 @@ void common_hal_audiobusio_i2sout_play(audiobusio_i2sout_obj_t* self,
uint32_t max_buffer_length;
bool single_buffer, samples_signed;
- audiosample_get_buffer_structure(sample, /* single channel */ false,
+ audiosample_get_buffer_structure(sample, /* single channel */ true,
&single_buffer, &samples_signed, &max_buffer_length,
&self->channel_count);
self->single_buffer = single_buffer;
self->samples_signed = samples_signed;
+
+ NRF_I2S->CONFIG.SWIDTH = self->bytes_per_sample == 1
+ ? I2S_CONFIG_SWIDTH_SWIDTH_8Bit
+ : I2S_CONFIG_SWIDTH_SWIDTH_16Bit;
+ NRF_I2S->CONFIG.CHANNELS = self->channel_count == 1
+ ? I2S_CONFIG_CHANNELS_CHANNELS_Left
+ : I2S_CONFIG_CHANNELS_CHANNELS_Stereo;
+
choose_i2s_clocking(self, sample_rate);
/* Allocate buffers based on a maximum duration
* This duration was chosen empirically based on what would
@@ -274,9 +282,6 @@ void common_hal_audiobusio_i2sout_play(audiobusio_i2sout_obj_t* self,
self->stopping = false;
i2s_buffer_fill(self);
- NRF_I2S->CONFIG.CHANNELS = self->channel_count == 1 ? I2S_CONFIG_CHANNELS_CHANNELS_Left : I2S_CONFIG_CHANNELS_CHANNELS_Stereo;
-
-
NRF_I2S->RXTXD.MAXCNT = self->buffer_length / 4;
NRF_I2S->ENABLE = I2S_ENABLE_ENABLE_Enabled;