如何用开发板实现修改音频参数功能
简介
Air724UG 内置3种音频输出模式,分别为扬声器(SPK)输出,耳机(HP)输出和听筒(RECEIVER)输出,mic输入有主麦和耳机的mic输入,本文介绍如何用Air724开发板,写入自己修改过的音频文件。
材料准备
- EVB_Air724UG_A13开发板一套,包括天线SIM卡,USB线。
- PC电脑,一副带mic的国标耳机,一个1w喇叭 ,a13 板上自带了一个差分的驻极体mic。如果用a11,a12开发板要外接一个mic。
- audio_calib.bin文件,生成过程参考。指南
- luat开发环境:环境搭建方法
步骤
LUAT固件更新音频文件
本文以demo\audioParam这个DEMO为例设置:输入是开发板上mic,输出是喇叭做演示。将准备好的音频参数文件和脚本一起烧录进开发板中。
sys.taskInit(function()
local USERNVM_DIR = "/usernvm"
local USERNVM_AUDIOCALIB_FILE_PATH = USERNVM_DIR.."/user_audio_calib.bin"
local USERNVM_AUDIOCALIB_SET_FILE_PATH = USERNVM_DIR.."/user_audio_calib_flag.bin"
if rtos.make_dir(USERNVM_DIR) then
if io.exists(USERNVM_AUDIOCALIB_SET_FILE_PATH) then
if io.exists(USERNVM_AUDIOCALIB_FILE_PATH) then
log.error("audioParam USERNVM_AUDIOCALIB_FILE_PATH error",USERNVM_AUDIOCALIB_FILE_PATH)
else
log.info("audioParam success")
end
else
os.remove(USERNVM_AUDIOCALIB_FILE_PATH)
local userAudioParam = io.readFile("/lua/audio_calib.bin")
io.writeFile(USERNVM_AUDIOCALIB_FILE_PATH,pack.pack("<i",userAudioParam:len()))
io.writeFile(USERNVM_AUDIOCALIB_FILE_PATH,userAudioParam,"ab")
io.writeFile(USERNVM_AUDIOCALIB_SET_FILE_PATH,"1")
log.info("audioParam write, restart later...")
sys.restart("audioParam")
end
else
log.error("audioParam make_dir error",USERNVM_DIR)
end
end)
-
在执行过程中lua脚本首先会创建一个"/usernvm"目录
-
在目录下创建一个音频参数文件,一个音频参数写入标志文件
-
文件准备就绪后设备执行重启动作,音频参数文件被设备吸收,音频参数写入标志文件存在。可用Audio Calibrator工具读取音频参数,另存为bin文件与原始文件进行对比确认是否写入成功。
AT固件更新音频文件
- 所用到的AT指令说明
创建目录:AT+FSMKDIR 创建usernvm目录;
创建文件:AT+FSCREATE 分别创建音频实体文件和标志文件;
写文件:AT+FSWRITE 分别写入音频实体文件和标志文件(标志文件固定写 “1” ,一个字符);
重启:AT+RESET 重启模块;
读文件:AT+FSREAD 分别读取音频实体文件和标志文件,根据上述更新原理判断是否更新成功。
- AT命令交互过程
AT+FSMKDIR=“\usernvm”
OK
AT+FSCREATE=“\usernvm\user_audio_calib.bin”
OK
AT+FSCREATE=“\usernvm\user_audio_calib_flag.bin”
OK
AT+FSWRITE=“\usernvm\user_audio_calib_flag.bin”,0,1,300
>
1
OK
AT+FSWRITE=“\usernvm\user_audio_calib.bin”,0,4,300
>
ABCD (实际数据就是 LEN[4] + DATA[10372])
OK
AT+FSLS=“\usernvm” (此命令非必要,只是方便用户查看是否真的写入了两个文件)
user_audio_calib.bin
user_audio_calib_flag.bin
OK
AT+RESET
//下面重启模块后如果格式正确,user_audio_calib.bin会被模块取走。可以列举\usernvm" 的所有文件。
//如果标志文件在, 音频文件不在了,就说明更新成功
AT+FSLS=“\usernvm” (如果用了这个指令,后面分别 FSREAD 两个文件可以忽略)
user_audio_calib.bin
user_audio_calib_flag.bin
OK
AT+FSREAD=“\usernvm\user_audio_calib.bin”,0,100,0
ABCD
OK
AT+FSREAD=“\usernvm\user_audio_calib_flag.bin”,0,100,0
1
OK
常见问题
- 识别不到AT口
解决方法:重装驱动文件 - ERROR 59
该参数只支持在通话中进行调节,进入到通话状态。 - 保存不了bin文件
先Write to FLASH再进行保存(Export from FLASH) - ota音频升级
脚本里要有升级流程,音频文件放到脚本一起制作成“4G远程升级文件”