make sound work
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
// -------------------------------------------------- //
|
||||
// This file is autogenerated by pioasm; do not edit! //
|
||||
// -------------------------------------------------- //
|
||||
|
||||
#pragma once
|
||||
|
||||
#if !PICO_NO_HARDWARE
|
||||
#include "hardware/pio.h"
|
||||
#endif
|
||||
|
||||
// --------- //
|
||||
// audio_i2s //
|
||||
// --------- //
|
||||
|
||||
#define audio_i2s_wrap_target 0
|
||||
#define audio_i2s_wrap 7
|
||||
|
||||
#define audio_i2s_offset_entry_point 7u
|
||||
|
||||
static const uint16_t audio_i2s_program_instructions[] = {
|
||||
// .wrap_target
|
||||
0x7001, // 0: out pins, 1 side 2
|
||||
0x1840, // 1: jmp x--, 0 side 3
|
||||
0x6001, // 2: out pins, 1 side 0
|
||||
0xe82e, // 3: set x, 14 side 1
|
||||
0x6001, // 4: out pins, 1 side 0
|
||||
0x0844, // 5: jmp x--, 4 side 1
|
||||
0x7001, // 6: out pins, 1 side 2
|
||||
0xf82e, // 7: set x, 14 side 3
|
||||
// .wrap
|
||||
};
|
||||
|
||||
#if !PICO_NO_HARDWARE
|
||||
static const struct pio_program audio_i2s_program = {
|
||||
.instructions = audio_i2s_program_instructions,
|
||||
.length = 8,
|
||||
.origin = -1,
|
||||
};
|
||||
|
||||
static inline pio_sm_config audio_i2s_program_get_default_config(uint offset) {
|
||||
pio_sm_config c = pio_get_default_sm_config();
|
||||
sm_config_set_wrap(&c, offset + audio_i2s_wrap_target, offset + audio_i2s_wrap);
|
||||
sm_config_set_sideset(&c, 2, false, false);
|
||||
return c;
|
||||
}
|
||||
|
||||
static inline void audio_i2s_program_init(PIO pio, uint sm, uint offset, uint data_pin, uint clock_pin_base) {
|
||||
pio_sm_config sm_config = audio_i2s_program_get_default_config(offset);
|
||||
sm_config_set_out_pins(&sm_config, data_pin, 1);
|
||||
sm_config_set_sideset_pins(&sm_config, clock_pin_base);
|
||||
sm_config_set_out_shift(&sm_config, false, true, 32);
|
||||
pio_sm_init(pio, sm, offset, &sm_config);
|
||||
uint pin_mask = (1u << data_pin) | (3u << clock_pin_base);
|
||||
pio_sm_set_pindirs_with_mask(pio, sm, pin_mask, pin_mask);
|
||||
pio_sm_set_pins(pio, sm, 0); // clear pins
|
||||
pio_sm_exec(pio, sm, pio_encode_jmp(offset + audio_i2s_offset_entry_point));
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user