1/*
2 * Copyright (c) 2021 Arm Limited and Contributors. All rights reserved.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 *
6 */
7
8#ifndef _PICO_PDM_MICROPHONE_H_
9#define _PICO_PDM_MICROPHONE_H_
10
11#include "hardware/pio.h"
12
13typedef void (*pdm_samples_ready_handler_t)(void);
14
15struct pdm_microphone_config {
16 uint gpio_data;
17 uint gpio_clk;
18 PIO pio;
19 uint pio_sm;
20 uint sample_rate;
21 uint sample_buffer_size;
22};
23
24int pdm_microphone_init(const struct pdm_microphone_config* config);
25void pdm_microphone_deinit();
26
27int pdm_microphone_start();
28void pdm_microphone_stop();
29
30void pdm_microphone_set_samples_ready_handler(pdm_samples_ready_handler_t handler);
31void pdm_microphone_set_filter_max_volume(uint8_t max_volume);
32void pdm_microphone_set_filter_gain(uint8_t gain);
33void pdm_microphone_set_filter_volume(uint16_t volume);
34
35int pdm_microphone_read(int16_t* buffer, size_t samples);
36
37#endif