目的:使海思板的麦克风和扬声器工作起来;让更多的爱好者了解海思、加入海思。
目录
1 准备工作
1)音频能力
- 集成 Audio codec,支持 16bit 语音输入和输出
- 支持单声道 mic 差分输入,降低底噪
- 支持单端双声道输入
- 支持 I 2 S 接口,支持对接外部 Audio codec
2)检测板子
我的板子就是MIC同时接了AC_INL和AC_INR,最后录音数据都是0数据。最后AC_INR接地就ok了。
3)sample下audio编译
声音调试是基于样例sample下audio(依赖common文件夹)
Hi3516CV500_SDK_V2.0.1.1/smp/a7_linux/mpp/sample
make ARCH=arm CROSS_COMPILE=arm-himix200-linux-
2 麦克风调试
1)配置acap音频参数
AIO_ATTR_S stAioAttr;
stAioAttr.enSamplerate = AUDIO_SAMPLE_RATE_48000;
stAioAttr.enBitwidth = AUDIO_BIT_WIDTH_16;
stAioAttr.enWorkmode = AIO_MODE_I2S_MASTER;
stAioAttr.enSoundmode = AUDIO_SOUND_MODE_MONO;
stAioAttr.u32EXFlag = 0;
stAioAttr.u32FrmNum = 30;
stAioAttr.u32PtNumPerFrm = AACLC_SAMPLES_PER_FRAME;
stAioAttr.u32ChnCnt = 1;
stAioAttr.u32ClkSel = 0;
stAioAttr.enI2sType = AIO_I2STYPE_INNERCODEC;
2)启动ai(关闭重采样及不使用VQE)
/******************************************************************************
* function : Start Ai
******************************************************************************/
HI_S32 SAMPLE_COMM_AUDIO_StartAi(AUDIO_DEV AiDevId, HI_S32 s32AiChnCnt,
AIO_ATTR_S* pstAioAttr, AUDIO_SAMPLE_RATE_E enOutSampleRate, HI_BOOL bResampleEn, HI_VOID* pstAiVqeAttr, HI_U32 u32AiVqeType)
{
HI_S32 i;
HI_S32 s32Ret;
s32Ret = HI_MPI_AI_SetPubAttr(AiDevId, pstAioAttr);
if (s32Ret)
{
printf("%s: HI_MPI_AI_SetPubAttr(%d) failed with %#x\n", __FUNCTION__, AiDevId, s32Ret);
return s32Ret;
}
s32Ret = HI_MPI_AI_Enable(AiDevId);
if (s32Ret)
{
printf("%s: HI_MPI_AI_Enable(%d) failed with %#x\n", __FUNCTION__, AiDevId, s32Ret);
return s32Ret;
}
for (i = 0; i < s32AiChnCnt>>pstAioAttr->enSoundmode; i++)
{
s32Ret = HI_MPI_AI_EnableChn(AiDevId, i);
if (s32Ret)
{
printf("%s: HI_MPI_AI_EnableChn(%d,%d) failed with %#x\n&