kopia lustrzana https://github.com/raspberrypi/pico-extras
A few fixes for RP2350B I2S
With this, I do get a waveform from the pico-playground sine_wave demo using PICO_AUDIO_I2S_DATA_PIN=40 PICO_AUDIO_I2S_CLOCK_PIN_BASE=41pull/91/head
rodzic
f05d4f7371
commit
0b7be7c7fc
|
@ -52,9 +52,15 @@ const audio_format_t *audio_i2s_setup(const audio_format_t *intended_audio_forma
|
|||
gpio_set_function(config->clock_pin_base, func);
|
||||
gpio_set_function(config->clock_pin_base + 1, func);
|
||||
|
||||
#if PICO_PIO_VERSION > 0
|
||||
if(config->data_pin >= 32 || config->clock_pin_base + 1 >= 32) {
|
||||
pio_set_gpio_base(audio_pio, 16);
|
||||
}
|
||||
#endif
|
||||
uint8_t sm = shared_state.pio_sm = config->pio_sm;
|
||||
pio_sm_claim(audio_pio, sm);
|
||||
|
||||
|
||||
uint offset = pio_add_program(audio_pio, &audio_i2s_program);
|
||||
|
||||
audio_i2s_program_init(audio_pio, sm, offset, config->data_pin, config->clock_pin_base);
|
||||
|
|
|
@ -54,8 +54,8 @@ static inline void audio_i2s_program_init(PIO pio, uint sm, uint offset, uint da
|
|||
|
||||
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);
|
||||
uint64_t pin_mask = (1ull << data_pin) | (3ull << clock_pin_base);
|
||||
pio_sm_set_pindirs_with_mask64(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));
|
||||
|
|
Ładowanie…
Reference in New Issue