KDocs 研发资料库
  • 音频技术应用文档入口汇总
  • 杰理WINDOWS环境安装及其他事项
  • LINUX安装和编译
  • Linux环境编译SDK教程(ubuntu18.04)
  • 音频类补丁汇总表
  • 认证资料获取汇总(最新资料后台会更新)
  • 《Hi-Res申请指南v1.0》
  • FreeRTOS 开源协议版本
  • uCOS 开源协议版本信息
  • 各个模块关键资料汇总
  • 软件调试方法
  • Makefile编译
  • 提bug的规范
  • 常规设备使用指导
  • 对外特别发布开发注意点信息汇总
  • AD697X软件问题整理
  • AC700N软件问题整理
  • AC701X耳机软件问题整理
  • 951&961软件问题整理
  • AC104X软件问题整理
  • AC128N问题整理文档
  • 可视化工具调试问题整理
  • 耳机资料汇总
  • AC704N、 AC705N相关应用
  • AC695N&AC696N&AC608N音箱问题整理
  • JL701N音箱问题整理
  • AC692X软件问题整理
  • AC706N音箱问题整理
  • JL701N音箱问题整理(可视化工具SDK)
  • JL703N音箱问题整理
  • JL709N(JL689N)音箱问题整理
  • JL7094系列-入门到进阶开发指导
  • AC210N音箱问题整理
  • 无线麦系列版本支持指南
  • AW32N无线麦问题整理
  • lAD697X&JL701X 无线麦软件共性问题整理
  • AC706N无线麦问题整理
  • AW36N无线麦问题整理
  • AC710X无线麦问题整理
  • 唤醒源获取及唤醒IO设置
  • 电源
  • LVD
  • 长按复位配置方法
  • 低功耗应用
  • TIMER
  • UART
  • SPI
  • 内部FLASH空间添加用户自定义区域
  • IIC
  • GPIO
  • MCPWM
  • SD&U盘
  • 时钟&晶振
  • GPCNT
  • IO口crossbar映射功能
  • 文件系统使用总结
  • 复用应用
  • LINEIN_AUX相关应用
  • IIS音频接口应用
  • SPDIF模式相关(HDMI_ARC、光纤、同轴)
  • PDM LINK
  • 外设相关应用
  • 蓝牙相关
  • 杰理蓝牙距离调试文档
  • TWS耳机配对方式使用及生产把控指南
  • GFP谷歌快连及其认证流程指引
  • 蓝牙发射器(bt_emitter)相关
  • BLE应用
  • 关于提升BLE传输速率说明
  • BLE测试数据
  • MUSIC 模式相关应用
  • MIDI音乐实现
  • PC相关应用
  • FM相关应用
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20250107
  • fm应用详细设计说明书
  • 杰理FM硬件指南-20230315
  • ADC模块
  • AUDIO相关应用
  • 新Tools的音效调试使用
  • 混响应用使用说明
  • 音效调式
  • 音箱耳机低音小音量增强实现方法
  • DAC输出功率调试
  • DAC性能测试指南
  • 针对各类底噪、电流声分析流程
  • 录音相关应用
  • OPUS编解码相关
  • RTC相关应用
  • 升级相关
  • UI相关应用
  • 通话调试流程指南
  • 通话相关应用
  • 省电容mic使用手册
  • 如何测试验证手表通话系统的语音失真 V1.0
  • AC695X_AC696X_AD697X 常见通话问题处理参考资料
  • 通话调试问题确定步骤
  • 内置触摸调试指南
  • 低功耗内置触摸介绍V2.2
  • 触摸相关文档
  • AC697X、AC698X内置触摸调试及整改方法V1.0
  • 产测相关应用
  • AC63X BLE DUT测试介绍
  • 兆华序列使用简易说明
  • JL_1T2蓝牙测试盒音频文件更换说明
  • ENC相关应用入口汇总
  • ANC相关应用入口汇总
  • JL DMS通话调试手册-V3.9.4
  • ANC-ENC结构设计要点-20240407
  • 半入耳式ANC耳机器件选型与结构设计指南V1.0
  • JL 耳道自适应调试指南
  • ANC相关问题处理
  • ANC调试文档
  • 评估蓝牙耳机通话上行降噪性能的方法 V1.0 (2)
  • FCC 或者 BQB 认证相关应用
  • BQB profile 测试中常遇到的问题点汇总
  • 蓝牙参数整理20210811
  • 杰理科技认证问题参考
  • 无线音频产品开发指南
  • 无线麦系列从入门到进阶开发指导
  • 量产烧录相关说明
  • 一拖八烧录器远程过程调用说明
  • 量产相关建议
  • EffectTool(eq)调试工具说明文档
  • AC897AD697系列的EQ调试方法-V3
  • 杰理调音指南-20220622
  • 音效模块总结
  • 简要调音步骤指引(可视化)
  • 耳机充电与通信调试指南
  • 充电仓硬件调试指南
  • 充电仓软件问题整理
  • AC951常用说明
  • AC951_AC961_开发板使用说明V1.0
  • 彩屏仓AC982 入门指导及FAQ
  • 蓝牙音频APP相关应用
  • 手机APP的简介和开发流程
  • 蓝牙音频系列-硬件设计指南
  • 静电测试及整改方法-20220706
  • TWS耳机底噪整改指南V1.2
  • 杰理蓝牙距离调试文档
  • 蓝牙RF硬件设计与调试V1.1-20250219
  • AC695N_AC696N FM天线ESD静电防护措施说明V2.0_20241228
  • 音效调试指南
  • 无线话筒K歌音箱标准开发流程
  • 杰理科技 700N TWS耳机产品标准-202303
  • 杰理科技 701N 广播产品标准-202303
  • JL-HAT ANC高效产测自适应
  • 无线话筒测试板使用介绍
  • 一拖八频偏校准使用说明
  • 领夹麦产测工具使用介绍
  • Dongle量产测试说明
  • Dongle+Tws或头戴式 SDK通过工具绑定配对功能说明文档
  • 双麦ENC产测宏配置验证方法 V1.0
  • JL耳机方案麦克风声学测试指令_V1.0
  • JL耳机方案麦克风声学测试指令_V2.0
  • JL_ENC自动测试命令_V0.0.1
  • JL蓝牙测试盒用例说明
  • LDAC自测环境搭建_ubuntu
  • 延迟小板使用手册
  • 杰理库文件的制作及添加实现过程
  • 关于 AC635N&AC636N系列免晶振兼容性补丁 说明
  • 关于 AC63系列VM兼容性修复补丁_20250224 说明
  • 关于 AC632N &AE632N_ 蓝牙& 低功耗兼容性修复补丁 说明
  • AD698N和AC638N电压优化补丁V3说明
  • 关于 AC635N&AC636N漏电和E&G版兼容联合补丁 说明
  • AD698N和AC638N电压优化补丁V2说明
  • 702相关应用
  • 2024-4-30 发布歌词显示SDK开发注意事项
  • BQB RF & FCC 认证测试固件问题汇总及源码
  • BQB profile 测试中常遇到的问题点汇总
  • 进dut测试模式方法及固件
  • 704-频偏修改bin文件合集
  • 701手表BQB PROFILE认证注意事项
  • 认证的干扰规避整改
  • 海外CRA认证报告生成说明
  • JL700N可视化工具问题处理文档
  • JL701X可视化工具问题处理文档
  • JL701N_earphone_release_v1.6.0_ANC 低功耗问题补丁
  • JL708X可视化工具问题处理文档
  • JL709N可视化工具问题处理文档
  • JLstudio可视化工具使用说明
  • 一拖二-串口_蓝牙_app在线EQ、通话参数及调试方式和内置触摸调试
  • 可视化JL701M_DONGLE_SDK添加MIC为发射源
  • 可视化JL701M_DONGLE_SDK添加按键切换usb audio与MIC发射源
  • JL701M_DONGLE_SDK_1.0.0_dongle输入linein输出dac
  • 701可视化_a2dp_to_le_demo说明
  • 耳机系列demo汇总
  • JL7018F&JL7006F_7003F AUX IIS
  • 一键连接应用
  • 普通SDK动态开关一拖二功能
  • 蓝牙分析仪(EllisysBluetoothAnalyzer)抓包例程
  • TWS配对常见应用
  • APP自定义按键的demo
  • AC700N 播歌双EQ DEMO示例及说明
  • AC698V164 MIC与蓝牙音乐共同输出DAC demo
  • 添加第三方算法以及多算法授权流程
  • 空间音频配置方法
  • 普通高低电平TWS耳机控制通讯
  • 入耳检测状态更新demo解析
  • 资源优化(非可视化的SDK)
  • 资源优化(可视化SDK)
  • 翻译耳机、语音识别应用demo
  • 耳机抗干扰问题排查和优化
  • AC698D2 抗干扰优化
  • AC696X软件问题整理
  • AC695X软件问题整理
  • AC695X软件问题整理_1722249702
  • AC608X软件问题整理
  • JL701N_2T1_DUPLEX 应用软件问题汇总
  • le_audio_1.0.0_patch05 以及之前的版本IRkey 功能异常修改
  • AC706N-le_audio-200SDK有线_无线麦录音demo
  • jl701n_le_audio_v200patch02 IO串口升级修改串口单次发送字节长度的修改办法
  • 703创建IIS 输入dac输出音频流demo
  • 703将媒体流音频同时上传PC_mic录音demo实现
  • 703四路IIS输入输出demo
  • 底噪调试
  • AW328A烧录说明
  • 文档合集
  • AC706N_wireless_mic_release_PATCH_20240712 补丁 说明
  • AC706N_wireless_mic_release_PATCH_20240726 补丁 说明
  • AC706N_wireless_mic_release_V1.0.0、1.0.1、1.0.2 补丁 说明
  • AC706N_wireless_mic_release_V1.1.2 中的2T1应用 RX端不绑定配对,TX端实现绑定配对的修改方法
  • 各系列省晶振实现方法
  • iis tx rx说明文档
  • spdif信号
  • 蓝牙电话本
  • 安卓手机同步时间补丁
  • CDC配置
  • PC模式下增加Teams唤起功能
  • 杰理HDMIARC开发实现过程
  • AC701N patch06之前的版本用第三方算法节点实现新版本的pcm delay节点功能
  • (K歌音箱)各SDK音效配置相关说明
  • 长文件录音
  • 点阵屏歌词字库相关(蓝牙歌词,普通歌词)
  • 字模提取工具说明
  • 音箱可视化彩屏-入门到进阶开发指导
  • 彩屏LVGL UI设计及工具使用
  • 使用内部UI框架进行UI调试的系列步骤
  • AD101C使用强制升级工具spi 烧录不了问题处理(测试版本)
  • AD161扩展灯板说明文档
  • 歌词显示器开发注意项
  • 使用硬件数字增益控制通话下行音量(可视化)
  • 杰理小牛产测资料
  • ENC配置说明
  • 通话调试流程指引
  • ANC相关功能demo
  • 无线麦硬件资料汇总
  • 无线麦相关应用
  • 无线麦复杂功能补丁包汇总
  • 无线话筒形态SDK程序&开发经验&问题点分享
  • 双模式结合应用问题汇总
  • 无线麦距离优化案例
  • 无线麦系列中的双工形态(duplex)演变开发对讲机方案开发资料
  • 音箱入门到进阶指导文档(编写中)
  • 蓝牙耳机品控和生产技巧
  • 982过_欠压标志获取异常
  • 如何获取最新涂鸦SDK及库文件
  • 无线话筒K歌音响-调音标准流程
  • 无线话筒产测流程

AC210N音箱问题整理

📎 原始文档:https://www.kdocs.cn/l/cbJLPaQQ9Pes AC210N音箱问题整理
前言:本文档整理将以各个SDK遇到的共性问题做整理汇总,可直接根据所使用的sdk版本及功能快速索引相关问题点

开发注意点

  1. AC210N 系列开发需要使用CKEY,跟之前KEY不兼容 需要联系工程助理申请
    image
  2. AC210N 系列开发使用PB1需要注意 IO默认对电压1/2分压,还要开下拉
  3. 查看生成代码大小的方法
  • 查看编译信息中的 | FLASH_BIN_SIZE : 0xd0000 | image

共性问题

  1. AC210N_le_audio_1.2.0 带ckey的升级固件,使用测试盒升级会出现异常 根本原因:测试盒暂未兼容带ckey的AC210N的升级固件。
    处理方法:测试盒升级以下的临时版本1.3.5进行调试,最新版本会在5月底更新。
    1.3.5_test.rar
  2. AC210N_le_audio_1.2.0 配置单声道后播放右声道音频无声 处理方法:
    直接删除音频流程内的vocal_remover节点。如果需要用到该节点,需要等版本更新,新版本已修复该问题。
    image
  3. AC210N_le_audio_1.2.0 配置蓝牙PA不起作用 使用注意点:
    不带后台的方案:退出蓝牙需要把PA的使能关掉。
    带后台的方案:打开蓝牙初始化一次即可。不需要重复初始化。
    image

替换掉原来的蓝牙PA控制函数
1.3.0 SDK版本 该函数已经加进SDK


#include "gpio.h"

void rf_pa_io_set(u8 tx_io, u8 rx_io, u8 en)
{
    static u8 last_en = 0xff;
    if (last_en == en) {
        printf("The PA of rf_pa_io has been switched on!!!!!!!!!!!!!!!!\n");
        return;
    }
    last_en = en;
    if (en) {
        gpio_och_sel_output_signal(tx_io, OCH_WL_AMPE);
        gpio_och_sel_output_signal(rx_io, OCH_WL_LNAE);
    } else {
        gpio_och_disable_output_signal(tx_io, OCH_WL_AMPE);
        gpio_och_disable_output_signal(rx_io, OCH_WL_LNAE);
    }
    gpio_hw_set_direction(IO_PORT_SPILT(tx_io), 0);
    gpio_hw_write(tx_io, 0);
    gpio_hw_set_direction(IO_PORT_SPILT(rx_io), 0);
    gpio_hw_write(rx_io, 0);

}

  1. AC210N_le_audio_1.3.2beta.01 媒体使用2.1声道音频流没声音 媒体使用2.1声道音频流dac没有声音
    image 修改:
    image
  2. AC210N 不带DMA的UART2串口API配置使用问题 AC210的uart2硬件没有DMA,也没有uart空闲中断,因此系统忙时容易丢中断。
    底层库函数设计baud只支持9600或以下
    image 库里面的uart2驱动只支持 固定帧长 接收,.frame_size。
    当接收的数据量累计等于设置的frame_size,才会读取返回、或者触发中断。
    image
  3. AC210N_le_audio_1.3.1 开auracast时手机抢播会触发死机 问题描述:设备开启一拖二和音频抢播,然后连接两台手机,其中一台播放再进入Aurocast,再用另一台手机播放抢播会出现死机。
    处理方法:
    需要在截图这里加个&,建议直接更新到最新的1.4.0版本,已修复该问题。
    image
  4. AC210N_le_audio_1.3.1-经典蓝牙自定义HID-编译不通过-底层库缺少函数实现bt_sdp_create_diy_hid_service 解决方案:
  • 使用AC210N_le_audio_1.4.0版本或者以上,已经修复了这个编译报错问题

  • 参考这个提供的hid_user.c进行二次开发,需要注意到API接口命名有所变化。 比如原来的bt_sdp_create_diy_hid_service函数,要改为 bt_sdp_create_diy_hid_service_overwrite
    hid_user.c

问题处理

  1. 外挂FLASH下载的IO供电口不受控 image 处理办法:更换loader.bin
    br31loader处理外挂FLASH下载.7z
  2. AC210升级工具合成带有固件的固件升级程序无法打开正常使用。 image 处理办法:换新的固件升级程序。
    固件升级程序_1.4.48.d(修改AC210合并固件升级程序异常).7z
  3. AC210N_le_audio_1.4.1 ADkey 开内置上拉, 无效问题处理 大家配内置上拉的时候,要注意填写正确的上拉电阻。不然会不起作用。
    5K -> 50
    10K -> 100
    200K -> 2000
    imageimageimage
  4. AC210N_le_audio_1.4.0 FM发射需要FM-TX和DAC同时出声音 修改音频流
    imageimageimage
  5. 概率出现打印auto_abandon_a2dp_data无声问题 原因:
  • 一般是由于 a2dp解码器在跑,但是却没有对应的音频流运行去消耗buf,从而导致的

  • 如果是正常单箱模式,那么可能是a2dp_player没有创建成功所导致

// 参考修复代码,或者需要自行从源头上排查自身业务的合理性
        if (get_a2dp_decoder_status() == 1 && !g_play_addr_vaild()) {
            if (addr)
                a2dp_player_open(addr);
        }
  • 如果是广播模式,那么可能是le_audio_player没有创建成功所导致,打印查看相关音频流创建是否成功或者是否有调用到
    • 或者确认只要a2dp解码器在运行,那么也要打开le_audio_player_open。从而解决无声的问题

资料下载

案例分享:

  1. AC210N_le_audio_1.2.0 无限循环播放提示音 目前只支持mp3格式提示音循环播放
    Files · feature_无限循环播放提示音 · JL-Studio / Leaudio / 210N / AC210_le_audio_1.0.0 · GitLab
    主要修改如下:
    imageimageimage

  2. AC210N_le_audio_1.3.1 内部flash自定义区的读写 dmeo:内置flash自定义区

  3. 挂载路径与文件名: imageimage

  4. 获取自定义区域的flash对应的地址 image 初始化之后info_data_init把每个自定义区对应的flash起始地址保存在flash_addr中

  5. 文件读写接口 tzflash_write、tzflash_read

  6. AC210N_le_audio_1.3.1 播放内部flash自定义区的提示音 demo:播放flash自定义区提示音

  7. AC210N_le_audio_1.3.2beta01 程序调节"ReverbEcho封装节点"参数 dmeo:调节ReverbEcho封装节点参数
    介绍:
    ReverbEcho封装节点:将Reverb、Echo、原声三条通路多节点封装成一个节点,简化流程图,优化运行效率
    image 节点配置截图:
    image 注意点:
    image

  8. AC210N_le_audio_1.4.0 外挂flash与sd卡一样做当作设备来播放里面的歌曲 dmeo:feature_140_play_ex_flash_dev

    1. 生成fat文件系统img
      • 工具:FAT镜像文件生成工具_1.0.11.exe
      • 生成的文件保存到download.bat所在目录下,并重命名为fat.img
      • 其他相关资料:SPI.otlimage
    2. usb强制工具下载代码同时下载fat文件系统到外挂flash
      • 配置ini的spi引脚 isd_config_rule.c中配置(有些sdk有两个配置,需要删除一个)
//外部FLASH 硬件连接配置
#if (defined CONFIG_EXTERN_FLASH_SIZE) || ((defined TCFG_NORFLASH_DEV_ENABLE) && TCFG_NORFLASH_DEV_ENABLE)
EX_FLASH = PB10_1A_NULL;    //CS_pin / spi (0/1/2) /port(A/B) / power_io
EX_FLASH_IO = 2_PB07_PB08_PB09_PC05_PC00;    //data_width / CLK_pin / DO_pin / DI_pin / D2_pin / D3_pin   当data_width为4的时候,D2_pin和D3_pin才有效
#endif
    - download.c添加下载命令
        - 使能下载
#define FLASH_DEV_FATFS_DOWNLOAD_EN         1//是否支持下载功能,如果不支持下载功能,则不需要挂载到电脑上,可以节省flash空间
        - 文件系统在flash中的起始地址配置(不是特殊情况设置为0)
#define CONFIG_EXTERN_FLASH_RES_START_ADDR  0x100//起始地址
        - 打标签:使用isd_download.exe -ex_flash下载的文件系统必须要使用packres.exe打上标签之后才能被识别到
//文件系统打标签
#if ((defined FLASH_DEV_FATFS_DOWNLOAD_EN) && FLASH_DEV_FATFS_DOWNLOAD_EN)
packres.exe -n res -o res.bin fat.img CONFIG_EXTERN_FLASH_RES_START_ADDR -normal
set UEXFILE= -ex_flash res.bin 
#endif

image

3. 外置flash挂载为一个设备
- 在app_config.h中添加添加相关宏定义
#define FLASH_SIZE_256K (0x40000)
#define FLASH_SIZE_512K (0x80000)
#define FLASH_SIZE_1M   (0x100000)

#define TCFG_NORFLASH_EX_DEV_ENABLE         1 //是否开启norflash extern设备支持
#define CONFIG_EXTERN_FLASH_SIZE            (FLASH_SIZE_1M*4)//配置外挂FLASH大小
#define CONFIG_EXTERN_FLASH_RES_START_ADDR  0x0//起始地址

// #define TCFG_FLASH_EXDEV_FLASH_READ_WIDTH    2// flash线宽 由工具配置
#define TCFG_FLASH_EXDEV_SPI_CS_PORT         IO_PORTB_10// CS片选IO
#define TCFG_FLASH_EXDEV_SPI_HW_NUM          1          // 硬件SPI号 工具配置优先
#define TCFG_EX_FLASH_POWER_IO               IO_PORTC_08// flash电源IO

#define TCFG_PC_DEV_MANAGER_ENABLE          1 //是否开启PC设备管理器支持
#define FLASH_DEV_FATFS_DOWNLOAD_EN         1//是否支持下载功能,如果不支持下载功能,则不需要挂载到电脑上,可以节省flash空间
#define FLASH_DEV_MUSIC_EN                  1//是否支持音乐功能
#define FLASH_DEV_FATFS_LOGO                "ex_fat"   //设备 logo
#define FLASH_DEV_FATFS_NAME                FLASH_DEV_FATFS_LOGO//"ex_fatfs"   //设备名称
#define FLASH_DEV_FATFS_TYPE                "fat"   //fs_type
#define FLASH_DEV_FATFS_STORAGE_PATH        "storage/ex_fat" //app区:/app 扩展区: /EXT_RESERVED
#define FLASH_DEV_FATFS_ROOT_PATH           FLASH_DEV_FATFS_STORAGE_PATH "/C" //app区:/app 扩展区: /EXT_RESERVED

#if ((defined TCFG_PC_DEV_MANAGER_ENABLE) && TCFG_PC_DEV_MANAGER_ENABLE)
//其他设备比如sd卡也需要pc设备管理器支持,如果没有开启这个宏,sd卡设备不会在pc模式下挂载到电脑上被识别成U盘
#define TCFG_USB_ISERIALNUMBER             1 //是否开启多磁盘支持,开启之后USB_ISERIALNUMBER会置3
#endif

- 在dev_reg.c中配置外置flash路径相关信息
const struct __dev_reg dev_reg[] = {
#if TCFG_NORFLASH_EX_DEV_ENABLE
    //flash sfc fat
    {
        /*logo*/            FLASH_DEV_FATFS_LOGO,
        /*name*/            FLASH_DEV_FATFS_NAME,
        /*storage_path*/    FLASH_DEV_FATFS_STORAGE_PATH,
        /*root_path*/        FLASH_DEV_FATFS_ROOT_PATH,
        /*fs_type*/            FLASH_DEV_FATFS_TYPE,
    },
#endif
- 在device_config.c 配置外置flash硬件信息

image


#if TCFG_NORFLASH_EX_DEV_ENABLE
    NORFLASH_DEV_PLATFORM_DATA_BEGIN(norflash_norfs_ex_dev_data)
    .spi_hw_num     = TCFG_FLASH_EXDEV_SPI_HW_NUM,
    .spi_cs_port    = TCFG_FLASH_EXDEV_SPI_CS_PORT,

//工具配置优先
#if (defined(TCFG_FLASH_DEV_SPI_HW_NUM) && (TCFG_FLASH_DEV_SPI_HW_NUM == 1))
    .spi_pdata      = &spix_p_data[1],
#elif(defined(TCFG_FLASH_DEV_SPI_HW_NUM) && (TCFG_FLASH_DEV_SPI_HW_NUM == 2))
    .spi_pdata      = &spix_p_data[2],
#elif(defined(TCFG_FLASH_EXDEV_SPI_HW_NUM) && (TCFG_FLASH_EXDEV_SPI_HW_NUM == 1))
    .spi_pdata      = &spix_p_data[1],
#elif(defined(TCFG_FLASH_EXDEV_SPI_HW_NUM) && (TCFG_FLASH_EXDEV_SPI_HW_NUM == 2))
    .spi_pdata      = &spix_p_data[2],
#endif

#if (defined(CONFIG_EXTERN_FLASH_RES_START_ADDR))
    .start_addr     = CONFIG_EXTERN_FLASH_RES_START_ADDR,
#else
    .start_addr     = 0,
#endif
#if (defined(CONFIG_EXTERN_FLASH_SIZE))
    .size           = CONFIG_EXTERN_FLASH_SIZE,
#else
    .size           = 2 * 1024 * 1024,
#endif
    NORFLASH_DEV_PLATFORM_DATA_END()
#endif
- 在device_config.c中注册外置flash设备

把设备名称、设备硬件信息、设备驱动接口关联起来


REGISTER_DEVICES(device_table) = {
#if TCFG_NORFLASH_EX_DEV_ENABLE
    {FLASH_DEV_FATFS_LOGO,&norflash_dev_ops,(void *)&norflash_norfs_ex_dev_data},
#endif
- 在device_config.c中开机时把外置flash挂载为一个设备
static void dev_manager_task(void *p)
{
    int res;
    int msg[16] = {0};
    ///过滤隐藏 和 .开头名名的字文件
    hidden_file(1);
    ///设备初始化,
    devices_init();

#if TCFG_SD_ALWAY_ONLINE_ENABLE
#if (defined(TCFG_SD0_ENABLE) && (TCFG_SD0_ENABLE))
    sdmmc_dev_force_online("sd0");
    int err = dev_manager_add("sd0");
#elif (defined(TCFG_SD1_ENABLE) && (TCFG_SD1_ENABLE))
    sdmmc_dev_force_online("sd1");
    int err = dev_manager_add("sd1");
#endif
    if (err != 0) {
        printf("sd add fail\n");
    }
#endif

#if TCFG_NORFLASH_EX_DEV_ENABLE
{
    int ret = dev_manager_add(FLASH_DEV_FATFS_LOGO);
    g_printf("%s add ret = %d\n", FLASH_DEV_FATFS_LOGO,ret);
    #if((defined(FLASH_DEV_MUSIC_EN))&&FLASH_DEV_MUSIC_EN)
    dev_manager_set_valid_by_logo(FLASH_DEV_FATFS_LOGO, 1);///将设备设置为无效设备
    #else
    dev_manager_set_valid_by_logo(FLASH_DEV_FATFS_LOGO, 0);///将设备设置为无效设备
    #endif
}
#endif
4. PC模式下通过磁盘管理器管理外置flash
- 在msd.c中增加pc可以管理个数
inline static u8 __get_max_msd_dev()
{
    u8 cnt = 0;

#if TCFG_PC_DEV_MANAGER_ENABLE
    cnt++;
#endif
- 进pc之后把外置flash挂载到电脑磁盘
void usb_start(const usb_dev usbfd)
{
    log_info("enter usb slave mode");
    u32 class = 0;

#if TCFG_USB_SLAVE_MSD_ENABLE
    class |= MASSSTORAGE_CLASS;
#endif
#if TCFG_USB_SLAVE_AUDIO_SPK_ENABLE
    class |= SPEAKER_CLASS;
#endif
#if TCFG_USB_SLAVE_AUDIO_MIC_ENABLE
    class |= MIC_CLASS;
#endif
#if TCFG_USB_SLAVE_HID_ENABLE
    class |= HID_CLASS;
#endif
#if TCFG_USB_SLAVE_CDC_ENABLE
    class |= CDC_CLASS;
#endif
#if TCFG_USB_CUSTOM_HID_ENABLE
    class |= CUSTOM_HID_CLASS;
#endif
#if TCFG_USB_SLAVE_MTP_ENABLE
    class |= MTP_CLASS;
#endif
#if TCFG_USB_SLAVE_MIDI_ENABLE
    class |= MIDI_CLASS;
#endif
#if TCFG_USB_SLAVE_PRINTER_ENABLE
    class |= PRINTER_CLASS;
#endif
#if TCFG_USB_APPLE_DOCK_EN
    class |= IAP_CLASS;
#endif
#if TCFG_USB_WEBUSB_ENABLE
    class |= WEBUSB_CLASS;
#endif
    g_printf("USB_DEVICE_CLASS_CONFIG:%x", class);
    usb_device_mode(usbfd, class);

#if TCFG_PC_DEV_MANAGER_ENABLE
    dev_manager_set_valid_by_logo(FLASH_DEV_FATFS_LOGO, 1);
    msd_register_disk(FLASH_DEV_FATFS_LOGO, NULL);
#endif
  1. TWS碰一碰快捷连接 备注:碰一碰功能,需要有一个机器发起配对。(发起配对后,才会根据RSSI值进行连接)
    #define CONFIG_TWS_CONN_WITH_RSSI 1
    #define CONFIG_TWS_CONN_RSSI_LEVEL -30 //根据需要的配对距离调节
  2. 硬件DAC为单声道TWS主从实时切换声道 硬件dac为单声道输出,TWS的主从声道调换,效果如下:
    主为R从为L切换之后主为L从为R
    feature_硬件dac单声道_tws时切换dac数据的声道
    切换接口的调用:
    case APP_MSG_TWS_CHANNEL_SWITCH:
        r_printf("app msg tws channel switch\n");
        bt_tws_channel_switch();
        break;

DAC为单声道:
image

媒体音频流:
image

  1. AC210N_le_audio_1.3.1 使能发送端切模式不重置广播配置,打开auracast,从BT切换到Linein模式的时候死机 原因:函数指针与函数实现不匹配,函数指针只传入了一级指针,但函数实现是二级指针。导致访问非法地址死机
    修改如下:
    image
  2. AC210N_le_audio_1.4.0普通io口做串口从机升级(双备份) Files · feature_140_普通io做串口从机升级 · JL-Studio / Leaudio / 210N / AC210_le_audio_1.0.0 · GitLab
    主要修改如下:
  3. 开普通io串口升级功能 image
  4. 编译报找不到对应接口,添加编译c文件 image
  5. 修改编译报错 image
  6. 串口升级通信不成功(小机没有回包)修改串口升级使用的串口号 image
  7. pc串口升级工具连接小机升级时报超时 SerialUpdateDemo-20260716.exe
    image

本文档包含以下子页面

Prev
JL7094系列-入门到进阶开发指导
Next
无线麦系列版本支持指南