This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
尊敬的 TI 团队:
继续以下线程、用于开路/短路或正常负载检测的软件集成
https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1400336/tas2563-speaker-open-and-short-detection-in-tuning-mode
我们希望在初始启动期间执行负载诊断检查。 加载诊断检查成功后、我们希望使用初始化参数加载 reg.bin、但我们需要一个额外的 reg.bin 来在加载实际的 reg.bin 之前执行该检查。
您能告诉我们如何将2 reg.bin 整合为驱动程序的一部分吗? 而不会影响正常播放。
CC Rekha Menon
Savyasanchi 您好、
我们很快会给您提供进一步的评论。
此致、
伊万·萨拉扎尔
应用工程师
您可以将 regbin 文件和 DSP bin 文件另存为两个字符类型数组。
在编解码器探测期间、可以加载这两个阵列而不是请求固件。 希望我的解决方案可以帮助您。
尊敬的 Shenghao:
如果我们要更改任何纸槽、这不会限制我们更新完整的驱动程序。 因为我们当前只需要更换/lib/firmware.中的纸槽 对于我们的用例、需要更新 Bins 特性。
嗨、大家好
您也可以根据当前的驱动程序进行第二次开发、如果驱动程序在系统中找不到 bin 文件、它可以加载保存固件的阵列。 谢谢。
尊敬的 Shenghao:
我们的用例如下所示
我们将在初始启动期间首先在器件上执行负载诊断、只有在检测到正常负载时、我们才继续加载默认 reg.bin 和 dsp.bin 以实现正常播放。 是否有一种方法可以在移动中同时包含 reg.bin 和彼此之间的转换、以便在负载诊断后正常播放不受影响、并且不需要重新启动。
我们之所以需要这样做、是因为在负载诊断检查中、我们会执行软件复位(根据 TI 的建议)、在软件复位后、寄存器必须恢复默认设置、但我们要重新加载 dsp.bin 和 reg.bin。
嗨、大家好
您的请求太简单,无法将任何代码添加到 tas2563驱动程序中。 可以将它们放入一个 regbin 文件和一个 dspbin 文件中。 我们的指南提供了与您的指南类似的案例。 从 P42到 P43、它描述了此类情况。 在用户空间中、可以创建映射表、以在 regbin 中保存 profileID 的映射关系、在 dspbin 中保存 program/config id 的映射关系。
第1行、第5 ~ 8行、第17 ~ 20行用于工厂测试。 在这种情况下是四个片段 tas2563。 我认为这种解决方案绝对符合您的需求。
至于软件重置、您有固件强制下载 Kcontrol。 请在运行 负载诊断检查后将其激活。
尊敬的 Shenghao:
我们尝试在现有 reg.bin 中再添加一个配置、并尝试使用以下命令切换到该配置
amixer -c 1 cset name="x TASDEVICE 配置文件 id" 5.
以下是扬声器未连接时的观察结果。
在配置文件 ID 之间切换是处理多个配置的正确方式。
Savyasanchi 您好、
在启动加载诊断后读取寄存器时、请确保等待诊断例程完成。 我们提供的脚本包括一个延迟命令来等待此时。
我将请 Denghao Ding 谈谈配置文件切换问题。
此致、
伊万·萨拉扎尔
应用工程师
会议5.
ConfName:05 -自定义负载检测
块类型:pre_shutdown device idx = 0x00
单字节:
BOOK0x00 PAGE0x00 REG0x02值= 0x0E
块类型:PRE_POWER_UP 器件 idx = 0x00
单字节:
BOOK0x00 PAGE0x00 REG0x00 Value = 0x00
BOOK0x00 PAGE0x00 REG0x7F 值= 0x00
BOOK0x00 PAGE0x00 REG0x00 Value = 0x00
BOOK0x00 PAGE0x00 REG0x01值= 0x01
BOOK0x00 PAGE0x00 REG0x00 Value = 0x00
BOOK0x00 PAGE0x00 REG0x30 Value = 0x1d
BOOK0x00 PAGE0x00 REG0x1b 值= 0xc7
BOOK0x00 PAGE0x00 REG0x1a 值= 0xFD
BOOK0x00 PAGE0x05 REG0x1c 值= 0x00
BOOK0x00 PAGE0x05 REG0x1d 值= 0x49
BOOK0x00 PAGE0x05 REG0x1e 值= 0x24
BOOK0x00 PAGE0x05 REG0x1f 值= 0x92
BOOK0x00 PAGE0x05 REG0x20值= 0x00
BOOK0x00 PAGE0x05 REG0x21值= 0x1d
BOOK0x00 PAGE0x05 REG0x22值= 0x41
BOOK0x00 PAGE0x05 REG0x23值= 0x4d
BOOK0x00 PAGE0x00 REG0x00 Value = 0x00
BOOK0x00 PAGE0x00 REG0x3d 值= 0x0E
此配置将通过软件复位芯片、在软件复位后、DSP 将不会工作、直到将 DSP 固件重新加载到 tas2563中。
是否确定重置了 tas2563? 运行该配置后、请调用 kcontrol 以强制加载固件、再次下载 DSP 固件。
您能否共享用于 自定义负载检测的 cfg 文件?
尊敬的 Shenghao:
1. TI 建议为 LDG 模式例程执行软件复位。 我们已根据该响应实施了该策略。
2.前一个回复中共享的 zip 文件是包含的 config 5文件。 它是 reg.bin 的一部分。
3. 我的主要查询是打开负载检测与此 reg.bin 不一致的问题。
在配置文件 ID 之间切换是否是处理多个配置的正确方式? 请解决这个问题。
4.继续第3点,我们注意到配置 id 在播放后切换,如果我们按照下面的步骤,负载诊断是正确的
amixer -c 1 cset name="x TASDEVICE 配置文件 id" 5.
aplay /bin/vendor British_Female_2.wav
i2cset -f -y 7 0x4e 0x02 0x43
i2cdump -f -y 7 0x4e
我们还在 dmesg 中注意到播放中的配置 ID 字符串
[78.120834] tasdevice-codec 7-004e:tasdevice_hw_params:播放
[ 78.120855] tasdevice-codec 7-004e:tasdevice_hw_params:BCLK 速率= 1536000通道= 2采样速率= 48000时隙宽度= 16
[78.121028] tasdevice-codec 7-004e:snd_soc_dapm_post_pmu
[78.134571] tasdevice-codec 7-004e:snd_soc_dapm_pre_pmd
[78.134601] tasdevice-codec 7-004e:tasdevice_select_cfg_blk、Enter
[78.141027] tasdevice-codec 7-004e:select_cfg_blk:profile_conf_id = 5
[ 78.141032] tasdevice-codec 7-004e:select_cfg_blk:conf 5、块类型:pre_shutdown device idx = 0x00
[78.142763] tasdevice-codec 7-004e:PowerControl_routine:Enter
[78.142768] tasdevice-codec 7-004e:PowerControl_routine:在执行上电之前已断电
[78.142770] tasdevice-codec 7-004e:PowerControl_routine:离开
请对上述问题发表评论
BR、
Rekha
请与我上传 json 文件。
我必须强调的是,你必须调用 tasdevice_force_dsp_download() after
conf-5关机,就像校准一样。
Savyasanchi 您好、
我更新了新的.jsn 文件作为配置5的附件。 e2e.ti.com/.../tas2563_2D00_1amp_2D00_reg_5F00_1021.zip
尊敬的 Shenghao/ Ken:
我们目前已实现如下所示的负载诊断功能
我们在一周内多次重新启动时测试了这种方法、目前未发现任何异常。 这种方法是否可靠? (以下随附代码供参考)
我们尚未测试先前注释中随附的新.jsn 文件。
e2e.ti.com/.../tasdevice_2D00_codec_5F00_load_5F00_diagnose.diff
我这边很好。
以下内容
+{TASDEVICE_REG (0x00、0x00、0x7F)、0x00}、
+{TASDEVICE_REG (0x00、0x00、0x01)、0x01}、
请加一个睡眠至少50ns。
+{TASDEVICE_REG (0x00、0x00、0x30)、0x1D}、
诊断后请不要忘记重新加载 DSP 固件。
另外、当运行诊断时、您选择哪个程序 ID、配置 ID 和配置文件 ID?
尊敬的 Shenghao:
是所有寄存器写入所需的睡眠状态、或在该特定情况下所需的睡眠状态。
我们不会使用此实现设置任何程序 ID、配置 ID 和配置文件 ID。 我们仅在加载固件之前在驱动器探针处写入和读取这些寄存器。 获取这些寄存器写入的结果后、我们继续使用驱动程序、因此它会照常加载 DSP 固件。
驱动程序在用户空间中加载播放后、我们将配置文件 id 设置为3以进行播放。
Savyasanchi 您好、
要在播放后关闭、您可以设置 b0p0r2 =01。
尊敬的 Ken/ Shenghao:
1.下面是由盛浩在同一线程中提出的。 这种睡眠是强制性的吗? 是否要在所有寄存器之间添加睡眠模式? 如果不添加睡眠、会产生任何后果?
TI 建议(:
+{TASDEVICE_REG (0x00、0x00、0x7F)、0x00}、
+{TASDEVICE_REG (0x00、0x00、0x01)、0x01}、
请加一个睡眠至少50ns。
+{TASDEVICE_REG (0x00、0x00、0x30)、0x1D}、
2.在本例中、该器件始终处于软件关断状态(b0p0r2 = 0x0E)、播放音频时除外(b0p0r2 = 0x00)。 这是因为我们没有连续的 SBCLK。 在我们的案例中、这种静音模式进入是否必不可少?
BR、
Rekha
嗨、大家好
在我们的 ppc3中、 前提是您创建了 包含软件复位在内的 cfg 文件。 您将在软件复位后找到 SLEEP 命令
尊敬的 Shenghao:
FCT cfg 文件仅包括以下寄存器:
校准参数位置(Book、Page、Offset、CoeffLength)
UMG_SsmKEGCye = 0x00、0x0d、0x3c、0x01
IKS_E0 = 0x00、0x0f、0x34、0x01
YEP_LsqM0 = 0x00、0x0f、0x40、0x01
MCB_ZwiNgmaj = 0x00、0x0f、0x44、0x01
oyz_U0_ujx = 0x00、0x0f、0x48、0x01
KGD_OEldlc = 0x00、0x10、0x14、0x01
在此配置中我们看不到任何睡眠命令。 请告诉我们如何生成 cfg 文件(包括软件复位)、因为 PPC3中没有该选项。
BR、
Rekha
您好、Rekha
tasdevice_force_dsp_download 将在校准后运行 swreset。
尊敬的 Ken / Shenghao:
我们使用 tasdevice_dev_write 来写入这些寄存器以进行负载诊断。 据我们所知、此 API 已处理寄存器写入之间的休眠操作
我们将在 request_fw 之前在驱动器探针处写入和读取这些寄存器、因此驱动程序将照常加载 DSP bin。
tas2563将花费一些时间在 swreset。 添加 SLEEP 命令很有意义。
尊敬的 Shenghao:
API 已经有200ms 的睡眠时间(如下所示)。 添加额外的50ns 是否能起到重要作用?
static int tasdevice_load_diagnostic (struct tasdevice_priv *tas_priv){
Int ret、I;
unsigned int READ_VALUE、READ_VALUE_24;
//循环遍历数组并写入每个寄存器
对于(I = 0;I < LOAD_DIAGNOSTIC _REGISTERS_COUNT;I++){
REt = tasdevice_dev_write (tas_priv、0、LOAD_DIAGNOSTICY_REGISTERS[i].reg、LOAD_DIAGNOSTICY_REGISTERS[i].val);
如果(ret < 0){
dev_err (tas_priv->dev、"Write register failed 0x%02x。 返回值:%d\n"、load_diagnostic_registers[i].reg、ret);
回流塔;
}
}
//休眠200 ms
msleep (200);
BR、
Rekha
我的意思是在将 b0p0r1设置为0x1后添加 usleep_range (1,000,1050)。