Skip to content

Commit 25e8293

Browse files
authored
Merge pull request adafruit#10803 from jepler/issue10799
raspberrypi: Fix PDMIn
2 parents 50757ed + 5cda32b commit 25e8293

File tree

1 file changed

+3
-2
lines changed
  • ports/raspberrypi/common-hal/audiobusio

1 file changed

+3
-2
lines changed

ports/raspberrypi/common-hal/audiobusio/PDMIn.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ void common_hal_audiobusio_pdmin_construct(audiobusio_pdmin_obj_t *self,
4343
// Use the state machine to manage pins.
4444
common_hal_rp2pio_statemachine_construct(&self->state_machine,
4545
pdmin, MP_ARRAY_SIZE(pdmin),
46-
sample_rate * 32 * 2, // Frequency based on sample rate
46+
sample_rate * OVERSAMPLING * 2, // Frequency based on sample rate
4747
NULL, 0,
4848
NULL, 0, // may_exec
4949
NULL, 1, PIO_PINMASK32_NONE, PIO_PINMASK32_ALL, // out pin
@@ -64,7 +64,8 @@ void common_hal_audiobusio_pdmin_construct(audiobusio_pdmin_obj_t *self,
6464
PIO_FIFO_TYPE_DEFAULT,
6565
PIO_MOV_STATUS_DEFAULT, PIO_MOV_N_DEFAULT);
6666
uint32_t actual_frequency = common_hal_rp2pio_statemachine_get_frequency(&self->state_machine);
67-
if (actual_frequency < MIN_MIC_CLOCK) {
67+
if (actual_frequency < 2 * MIN_MIC_CLOCK) { // 2 PIO samples per audio clock
68+
common_hal_audiobusio_pdmin_deinit(self);
6869
mp_raise_ValueError(MP_ERROR_TEXT("sampling rate out of range"));
6970
}
7071

0 commit comments

Comments
 (0)