zoologist 发表于 前天 09:54

DFRobot 实现 ESP32 P4 USB音频设备的框架

ESP32 官方的 USB 框架是 TinyUSB, 这次带来的是使用 TinyUSB 在 IDF 下实现的虚拟USB麦克风。
代码内置了一个正弦波的采样数据,录音机打开之后会送出:

/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Unlicense OR CC0-1.0
*/

#include <stdio.h>
#include <math.h>
#include "sdkconfig.h"
#include "esp_err.h"
#include "esp_log.h"
#include "driver/uart.h"
#include "usb_device_uac.h"
#include "sine.h"

static const char *TAG = "usb_uac_main";

int audiobuffer=0;

static esp_err_t uac_device_output_cb(uint8_t *buf, size_t len, void *arg)
{
    //size_t bytes_written = 0;
    //bsp_extra_i2s_write(buf, len, &bytes_written, 0);
        ESP_LOGE(TAG, "ocb");
    return ESP_OK;
}

static esp_err_t uac_device_input_cb(uint8_t *buf, size_t len, size_t *bytes_read, void *arg)
{
       
        for (int i=0;i<len;i++) {
                buf=AudioData[(audiobuffer+i)%AUDIOLEN];
        }
        audiobuffer=(audiobuffer+len)%AUDIOLEN;
ESP_LOGE(TAG, "icb");
*bytes_read=len;
    return ESP_OK;
}

static void uac_device_set_mute_cb(uint32_t mute, void *arg)
{
    ESP_LOGI(TAG, "uac_device_set_mute_cb: %"PRIu32"", mute);
    //bsp_extra_codec_mute_set(mute);
}

static void uac_device_set_volume_cb(uint32_t volume, void *arg)
{
    ESP_LOGI(TAG, "uac_device_set_volume_cb: %"PRIu32"", volume);
    //bsp_extra_codec_volume_set(volume, NULL);
}

void app_main(void)
{
uart_config_t uart_config = {
        .baud_rate = 2000000,
        .data_bits = UART_DATA_8_BITS,
        .parity= UART_PARITY_DISABLE,
        .stop_bits=UART_STOP_BITS_1
};

uart_param_config(UART_NUM_0,&uart_config);

    uac_device_config_t config = {
      .output_cb = uac_device_output_cb,
      .input_cb = uac_device_input_cb,
      .set_mute_cb = uac_device_set_mute_cb,
      .set_volume_cb = uac_device_set_volume_cb,
      .cb_ctx = NULL,
    };

    uac_device_init(&config);
}


完整的代码:



测试的视频:

https://www.bilibili.com/video/BV1a7YizpEdr/?vd_source=cf6121716e06cb669a27c10276f9c920
页: [1]
查看完整版本: DFRobot 实现 ESP32 P4 USB音频设备的框架