Arduino TKJHAT
Arduino library for Pico HAT extension board
Loading...
Searching...
No Matches
pdm_microphone.pio.h
1// -------------------------------------------------- //
2// This file is autogenerated by pioasm; do not edit! //
3// -------------------------------------------------- //
4
5#pragma once
6
7#if !PICO_NO_HARDWARE
8#include "hardware/pio.h"
9#endif
10
11// ------------------- //
12// pdm_microphone_data //
13// ------------------- //
14
15#define pdm_microphone_data_wrap_target 0
16#define pdm_microphone_data_wrap 3
17#define pdm_microphone_data_pio_version 0
18
19static const uint16_t pdm_microphone_data_program_instructions[] = {
20 // .wrap_target
21 0xa042, // 0: nop side 0
22 0x4001, // 1: in pins, 1 side 0
23 0x9040, // 2: push iffull noblock side 1
24 0xb042, // 3: nop side 1
25 // .wrap
26};
27
28#if !PICO_NO_HARDWARE
29static const struct pio_program pdm_microphone_data_program = {
30 .instructions = pdm_microphone_data_program_instructions,
31 .length = 4,
32 .origin = -1,
33 .pio_version = pdm_microphone_data_pio_version,
34#if PICO_PIO_VERSION > 0
35 .used_gpio_ranges = 0x0
36#endif
37};
38
39static inline pio_sm_config pdm_microphone_data_program_get_default_config(uint offset) {
40 pio_sm_config c = pio_get_default_sm_config();
41 sm_config_set_wrap(&c, offset + pdm_microphone_data_wrap_target, offset + pdm_microphone_data_wrap);
42 sm_config_set_sideset(&c, 1, false, false);
43 return c;
44}
45
46static inline void pdm_microphone_data_init(PIO pio, uint sm, uint offset, float clk_div, uint data_pin, uint clk_pin) {
47 pio_sm_set_consecutive_pindirs(pio, sm, data_pin, 1, false);
48 pio_sm_set_consecutive_pindirs(pio, sm, clk_pin, 1, true);
49 pio_sm_config c = pdm_microphone_data_program_get_default_config(offset);
50 sm_config_set_sideset_pins(&c, clk_pin);
51 sm_config_set_in_pins(&c, data_pin);
52 pio_gpio_init(pio, clk_pin);
53 pio_gpio_init(pio, data_pin);
54 sm_config_set_in_shift(&c, false, false, 8);
55 sm_config_set_fifo_join(&c, PIO_FIFO_JOIN_RX);
56 sm_config_set_clkdiv(&c, clk_div);
57 pio_sm_init(pio, sm, offset, &c);
58}
59
60#endif
61