SPDIF模式相关(HDMI_ARC、光纤、同轴)
📎 原始文档:https://www.kdocs.cn/l/cneli0w3tiZO SPDIF模式相关(HDMI_ARC、光纤、同轴)
1、三种输入简介
(1)HDMI_ARC输入
参考硬件原理图:

程序配置:
根据硬件配置口:
CEC,SPDIF是必须的,硬件需要与程序配置一致; CEC口:普通IO口即可
SPDIF口:根据数据手册选配
HDMI_DET,IIC接口可以选配, HDMI_DET:插入检测,检测到HDMI端口插入后重启CEC初始化(也可以拔出退出spdif模式,插 入则跳转到spdif模式),可以避免热拔插后无声
HDMI_DET功能可以参考程序LINEIN检测的流程
IIC接口:获取电视HDMI接到机器的端口号,一般电视都会通过IIC下发端口号,有些电视(测试过 一台小米电视)会通过CEC读取机器从IIC获取到的端口号,读取错误直接无音频数据,为 了提高兼容性建议加
【金山文档】 hdmi_dcc(IIC部分程序,具体添加可以参考下文DEMO程序)
https://kdocs.cn/l/ctTGHQMRNWto
注意点:
- IIC口可以选配,有IIC接口可以增加兼容性,建议加上;
- 程序注释的硬件IIC接口有可能CLK,DAT脚是相反的,建议看芯片datasheet,或者直接使用软件IIC功能;
- 建议加入插入检测,参照linein插入检测添加,在拔出时退出spdif模式,插入时重新进入spdif模式,主要是重新初始化CEC,避免有些拔出后电视发CEC指令长时间不回导致的重新插入HDMI无声
AC695N_soundbox_sdk_release_3.1.0_HDMI_ARC_DEMO程序
链接:https://pan.baidu.com/s/1jjpUjGnSFGWSwrgTfepYGg
提取码:8888
HDMI-ARC一般调试步骤:
打开打印,查看程序是否有跑到cec command,验证是否CEC接线以及通信正常

添加IIC这块后,查看IIC的通信是否正常
红圈圈出为HDMI的端口号,一般为0x10,0x20,0x30;出现异常检查IIC接线问题,看注意点第二点前两点正常的情况下,一般能进入到SPDIF解码播放的过程,出现如下打印内容

如果出现此情况打印则检查电视是否为PCM格式输出,目前SDK只支持此格式:
4.如果以上三点都正常,然后还是出现无声,哒哒哒等问题,请检查硬件;
如果涉及电视兼容性问题请联系我们处理,尽量把电视也带过来。
HDMI_ARC扩展知识
- HDMI_ARC功能介绍 HDMI ARC功能分析与协议打通过程
[https://zhuanlan.zhihu.com/p/80772947] - 常见CEC command解释: https://blog.csdn.net/weixin_43442683/article/details/107376618
(2)光纤输入
参考硬件原理图:

程序配置:
根据硬件配置口,此处以695举例:
注意点:
- 程序注意配置对口即可,出问题时先量配置的口有无输入,无输入则检查硬件
(3)同轴输入
参考硬件原理图:

程序配置
根据硬件配置口,此处以695举例:
注意点:
- 程序注意配置对口即可,出问题时先量配置的口有无输入,无输入则检查硬件
demo程序:
【金山文档】 AC695N_soundbox_sdk_release_3.1.0_spdif_demo
https://kdocs.cn/l/cr2R3t6ofFty
2、各类功能介绍
1.播放暂停功能
case KEY_MUSIC_PP:
if(music_pp_flag == 0){
audio_spdif_slave_close(&spdif_slave_hdl);
music_pp_flag = 1;
}
else{
music_pp_flag = 0;
audio_spdif_slave_open(&spdif_slave_hdl);
audio_spdif_slave_start(&spdif_slave_hdl);
}
break;
3. 问题解决
- SPDIF切换端口失败问题
audio_spdif_slave_close(&spdif_slave_hdl);
spdif_slave_hdl.input_port = SPDIF_IN_PORT_A;
audio_spdif_slave_open(&spdif_slave_hdl);
audio_spdif_slave_start(&spdif_slave_hdl);
//通过重启SPDIF解码的方式解决,替代原先的:audio_spdif_slave_switch_port(&spdif_slave_hdl, SPDIF_IN_PORT_A);函数
2. 连接HDMI-ARC后遥控无法控制电视音量问题
此问题原因:电视接收遥控红外信号后,固定了电视自身的音量输出,通过发送CEC command给机器,希望机器端判断command来进行+-音量操作。
一般打印如下:
命令意义:
05 44 41:音量+
05 44 42:音量-
05 45 :音量控制停止
获取到这些cmd后,解析判断然后控制音箱+-音量即可
常见CEC command解释:
https://blog.csdn.net/weixin_43442683/article/details/107376618
3. 芯片选择
- 支持SPDIF输出芯片:JL703
- 696,695均支持SPDIF输入功能,具体芯片型号根据功能挑选,记得查看所选芯片有无SPDIF引脚引出(查看芯片datasheet),同时功能复杂建议使用695芯片(RAM更大,且有8M_flash内存选配) 701无SPDIF引脚,即不支持SPDIF功能