Загрузка данных


static uint8_t zephyr_audio_in_bufs[ZEPHYR_AUDIO_BLOCK_SIZE * 2];
static uint8_t zephyr_audio_out_bufs[ZEPHYR_AUDIO_BLOCK_SIZE * 2];


void audio_dev_close_in_stream() {
    zephyr_adc.buf = &zephyr_audio_in_bufs[0];
    zephyr_i2s_close_stream(zephyr_hw_in.i2s_stream);
}

static void zephyr_audio_in_update_buffer(int buf_index) {
    zephyr_adc.buf = &zephyr_audio_in_bufs[0] + buf_index * ZEPHYR_AUDIO_BLOCK_SIZE;
    Pa_StartStream(zephyr_hw_in.stream);
}

void BSP_AUDIO_IN_HalfTransfer_CallBack(void) {
	if (zephyr_hw_in.zephyr_audio_running) {
		zephyr_audio_in_update_buffer(0);
	}
}

void BSP_AUDIO_IN_TransferComplete_CallBack(void) {
	if (zephyr_hw_in.zephyr_audio_running) {
		zephyr_audio_in_update_buffer(1);
	}
}

....
            ret = i2s_buf_read(i2s_dev_rx, buf, &block_size);
            //printf("I2S_READ: %p size %u ret=%d\n",buf,block_size,ret);
            if (ret < 0)
            {
                printf("I2S_IN: Failed to read data: %d\n", ret);
                //break;
            }
            else
            {
                //printf("I2S_IN: Read data size=%u\n",block_size);
                if(half_transfer)
                {
                    BSP_AUDIO_IN_HalfTransfer_CallBack();
                    buf += ZEPHYR_AUDIO_BLOCK_SIZE;
                    half_transfer = 0;
                }
                else
                {
                    BSP_AUDIO_IN_TransferComplete_CallBack();
                    buf = i2s_stream->i2s_buf;
                    half_transfer = 1;
                }
            }
slab буфера перенёс в dtcm, переносить ли статические буфера zephyr_audio_in_bufsбzephyr_audio_out_bufs