跳转至

应用开发*

1. 功能设置*

1.1. 管脚复用*

打开 boards\nationalchip\fornax_module_1v\board.c 文件

static const GX_PIN_CONFIG pin_table[] = {
//   id     func    | func 0      | func 1      | func 2    | func 3     | func 4     | func 5   | func 6 | func 7   |
    { 0,    0},  // | IDLE        | DAC_P       | UART1_TX  | PWM0       | I2S_OUT    | I2C_SDA  | PWM_PP | GPIO0    |
    { 1,    0},  // | IDLE        | DAC_N       | UART1_RX  | PWM1       | I2S_LR     | I2C_SCL  | PWM_NP | GPIO1    |
    { 2,    2},  // | SYS_I2C_SDA |             | UART0_RX  | PWM2       | JTAG_TMS   | I2C_SDA  | PWM_PP | GPIO2    |
    { 3,    2},  // | SYS_I2C_SCL |             | UART0_TX  | PWM3       | JTAG_TCK   | I2C_SCL  | PWM_NP | GPIO3    |
    { 4,    0},  // | RSTN        | CLK_IN      | CLK_OUT   |            | I2S_DIN    | JTAG_TMS |        | GPIO4    |
    { 5,    0},  // | JTAG_TMS    | I2S_DIN     | UART2_RX  | PWM5       | I2S_BCLK   | I2C_SDA  | IRC_TX | GPIO5    |
    { 6,    0},  // | JTAG_TCK    |             | UART2_TX  | PWM0       | I2S_MCLK   | I2C_SCL  | IRC_EN | GPIO6    |
    { 7,    2},  // | IDLE        | SPI2_CLK    | UART2_RX  | PWM1       | I2S_MCLK   | I2C_SDA  | IRC_RX | GPIO7    |
    { 8,    2},  // | IDLE        | SPI2_CS     | UART2_TX  | PWM2       | I2S_BCLK   | I2C_SCL  | IRC_TX | GPIO8    |
    { 9,    7},  // | IDLE        | SPI2_MISO   | UART2_CTS | PWM3       | I2S_DOUT   |          | IRC_RX | GPIO9    |
    {10,    0},  // | IDLE        | SPI2_MOSI   | UART2_RTS | PWM4       | I2S_LR     |          | IRC_EN | GPIO10   |
    {11,    0},  // | IDLE        | SPI2_CS     |           | PWM1       | MSPI1_CS   |          | PWM_PN | GPIO11   |
    {12,    0},  // | IDLE        | SPI2_CLK    |           | PWM2       | MSPI2_CLK  |          | PWM_NN | GPIO12   |
    {13,    0},  // | IDLE        | SPI2_MOSI   |           | PWM3       | MSPI1_MOSI |          |        | GPIO13   |
    {14,    0},  // | IDLE        | SPI2_MISO   |           | PWM4       | MSPI1_MISO | JTAG_TCK |        | GPIO14   |
    {15,    7},  // | IDLE        | I2S_BCLK    | UART2_RX  | PWM5       | MSPI1_WP   | I2C_SDA  | IRC_TX | GPIO15   |
    {16,    7},  // | BOOT2       | I2S_MCLK    | UART2_TX  | PWM0       | MSPI1_HOLD | I2C_SCL  | IRC_RX | GPIO16   |
};

id代表pin脚号。fun代表复用的功能,以0为起始索引。比如0代表复用为fun0,1代表复用为fun1。

这里是系统启动后,默认的管脚复用配置。在应用代码里,也可以根据需求,随时改变,见下面例子:

    padmux_set(0, 7); // pin0设置为GPIO
    padmux_set(1, 7); // pin1设置为GPIO

2. 配置选项*

执行:make menuconfig 打开配置选项

进入 MCU settings 可以设置打印开关,和打印使用的串口号。打印的波特率,默认是921600

自己想修改波特率的话,可以搜索宏CONFIG_MCU_ENABLE_PRINTF,找到下面的地方

void ovp_system_init(void)
{
    gx_icache_enable();
    gx_dcache_enable();

    board_init();

#ifdef CONFIG_MCU_ENABLE_PRINTF
    gx_uart_init(CONFIG_MCU_PRINT_UART_PORT_NUM, 921600);
#endif

如果要支持双备份升级,需要勾选 Enable dual bank upgrade

Time Profiler settings 用于算法和NPU模型的性能分析,一般用户开发无需关注

OVP Workmode Settings 默认是Has Offline Asr workmode,工作在离线唤醒模式下。Has Bypass workmode 不跑任何算法,一般用于录原始音场景

I/O Buffer Settings ,需要关注 REF Channel Source (ADC) ,建议使用外部ADC做回采(需要硬件支持)

这里可以设置麦克风的增益和硬件回采的增益,其它的设置不要随意修改

Olab Panda Settings > VMA Settings

降噪等级Denoise Level可以选择0,1,2,3,值越大降噪越厉害,但是声音失真度也会越高

AEC可以设置滤波器长度,默认1024,不建议修改

支持opus编码,编码可以支持16kbps和24kbps,编码帧长可以选择40ms和20ms(单声道16k 16bit PCM音频)

Enable DRC 默认12dB增益,可以根据云端识别要求调整(比如云端识别率对音量大小有要求的情况)

OVP Application Settings -> OVP Application Settings 里,Smartbot App 用于wifi大模型方案的app

Select flow control type 可以选择串口协议流控,或者GPIO流控

播放器设置,比如播放音量,是否使用外部功放以及外部功放的静音脚选择。播放支持PCM和OPUS格式两种选择,opus播放可以设置16K和8K采样率(目前只支持16K采样率的)