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.

[参考译文] TAS2559:针对定制硬件上裸机应用的配置编程

Guru**** 605955 points
Other Parts Discussed in Thread: TAS2559, TAS2559EVM, TAS2560, TAS2563
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1044543/tas2559-configuration-programming-for-baremetal-application-on-custom-hardware

器件型号:TAS2559
主题中讨论的其他器件:TAS2560TAS2563

您好!

我想跟进几个月前发布的有关在嵌入式环境中使用 TAS2559的前一篇帖子。 我们的硬件已经到、我正在尝试使用 PurePath Console 3生成的配置序列和您提供的 Python 脚本启动 TAS2559、但我完全无法让扬声器发出声音。

我们使用 STM32芯片在裸机环境中对 TAS2559进行编程和启用。 我 目前使用的 MCLK = 4.096MHz、BCLK = 1.28MHz、希望在单声道 PCM 模式下支持16kHz 16位单声道音频。 为了实现这一点、我已将音频帧长度设置为80位、因为这会以16kHz 的速率在字时钟上触发脉冲。 我可以使用示波器验证这些信号是否正确生成。

我正在使用的配置可立即启用 TAS2559EVM 评估板上的扬声器、无需额外配置。 在我们的硬件上、在使用生成的头文件对 TAS2559进行编程后、我已采取以下额外步骤:

  • 将0x01写入寄存器0x22 DSP_MODE 以手动将芯片设置为智能放大器模式
  • 设置寄存器0x2A ASI_CTRL_1中的位1和位2以将 ASI1配置为使用单 PCM
  • 将0x01写入寄存器0x2F ASI_CTRL_2以表示 PCM 模式下的16kHz 采样率
  • 设置第1页寄存器0x01 ASI1_FORMAT 中的位7、将 ASI1输入模式格式设置为单 PCM。

此外、我还尝试手动设置以下硬件配置寄存器以匹配我们的硬件引脚分配、尽管编程的所有值均列为首选值:ASI1_BCLK、ASI1_WCLK、ASI1_DIN_DOUT、GPIO2_PIN、GPIO4_PIN、 GPI_PIN。

仍然没有声音。  

我们板上的所有电源线均按规定工作、并且在容差范围内。 我已经检查了所有记录的状态寄存器。 所有器件都已通电、并且没有报告任何电压、电流或时钟错误。 我们正在使用 I2C 总线对 TAS2559进行编程、所有写入操作均为 ACKed、我可以正确读回写入的寄存器值、因此我相信芯片正在正确接收其程序。 我甚至尝试在 ROM 模式1 (仅 PCM 输入回放)下运行器件、只是为了从器件中获得某种声音、但不起作用。 我是否遗漏了任何内容?


一些其他信息:当我在上一个帖子中无法让评估板产生声音时、问题是时钟不匹配。 在这里、我确信我已经正确配置了芯片、以便从 MCLK 获得4.196MHz 的频率。 BCLK 或 WCLK 是否可能导致问题?  虽然选择了 BCLK 和帧长度来配置16kHz WCLK、但所选的时钟值均未在 Stone 中设置。 也许80位帧长度也可能导致数据问题? 文档指定字时钟的上升沿表示第(n-1)个数据位、但我们在80位帧的前16个时钟周期中发送16个数据位。 我希望帧中剩余的64位被忽略;是这样吗?  

我还附加了配置文件及其生成的 C 头文件。


谢谢、  

Sam  

e2e.ti.com/.../parse.cfge2e.ti.com/.../audio_5F00_config_5F00_generated.h

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sam:

    我将检查您的描述、并在今天内提供更多评论。

    此致、
    -Ivan Salazar
    应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sam、

    我认为器件忽略其他位的期望是不正确的。 流入 ASI 输入的数据应基于格式标准。 我可以使用 AP 作为数字输入的类似设置尝试您的 cfg、您可以确认/评论以下内容吗:

    • 在终端系统集成时、MCLK = 4.196MHz 不是可选选项、它可能是4.096MHz?
    • BCLK =??
    • WCLK = 16kHz

    此致、
    -Ivan Salazar
    应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    MCLK 确实是4.096MHz、这是我的不好选择。 4.196是一个错误类型。   

    BCLK = 1.28MHz。  

    如果您怀疑每个样本具有额外位可能是此问题的罪魁祸首、那么我们将非常感谢您提供有关单 PCM 模式如何针对此芯片工作的更全面的说明。

    根据文档、"在单声道 PCM 模式下、字时钟的上升沿启动单通道数据传输。 每个数据位在位时钟的下降沿有效。" 文档中图39中给出的示例证实了这一点。 我们将80位数据帧用于16位采样-这使我们能够将16kHz WCLK 与 STM 平台提供给我们的主时钟分频进行匹配。 如果我们必须在单声道 PCM 帧中具有精确的16位、我们 可能会遇到问题、因为 STM 时钟分频 对于该配置不够灵活。 TAS2559文档未说明任何有关帧大小的信息。 在帧中有额外的死位是否是一个问题?

    也许我们可以尝试使用 TAS2559 ASI_OFFSET1寄存器将帧中的有效数据位进一步推回? 我在先前的调试中尝试过这种方法、但它没有产生任何声音、但可能我在某个地方犯了错误。  

    谢谢、  

    Sam  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sam:

    感谢您的反馈、我将针对您的时钟设置进行设置、并将告诉您结果。
    我还将检查您在上面的进一步说明。

    此致、
    -Ivan Salazar
    应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sam:

    我已经使用类似的设置测试了 EVM、让我对下面的测试详细信息进行评论、还随附了我正在使用的配置文件:

    • 音频源设置为:
      • MCLK = 4.096MHz
      • BCLK = 1.28MHz
      • WCLK = 16kHz
      • 4通道
      • 16位数据
      • 20位/通道
      • WCLK 位宽脉冲(1位而不是50-50方波)
      • 1位偏移
      • 左对齐
    • 我必须将这些设置用于80位 WCLK 与 BCLK 比率= 80、但是、只要数据来自前16位、它就应该起作用。
    • 终端系统集成设置为:
      • 调优模式
      • 采样频率= 16kHz
      • 时钟源= MCLK
      • 时钟频率= 4.096MHz
    • 16kHz 采样频率仅可在调优模式下选择、而不是 ROM 模式选项。 这也可能与您一侧的问题有关、因为您只编写几条命令。

    我认为位数可能是一个问题、因为您需要设置字长。 考虑到额外的位时钟出现在实际预期的数据时隙的末尾、这可能是可以的、因为器件可能只是等待直到它接收到下一个 WCLK 边沿。

    您可以尝试使用附加的配置、因为它在我的方面看起来效果相当好。

    e2e.ti.com/.../clock_5F00_test.zip

    此致、
    -Ivan Salazar
    应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    伊万

    我已经在我的硬件上尝试过您的配置、但仍然听不到扬声器发出的任何声音。 我可以确认 MCLK = 4.196MHz、BCLK = 1.28MHz、WCLK = 16kHz。

    您的配置也不会在我的 EVM 上产生声音。 是否需要更改任何跳线以支持此新配置? 发布此问题时我上传的配置适用于 EVM。

    其他一些问题:

    • 您在配置中的哪个位置指示 TAS2559以左对齐模式运行? 我在 PurePath 控制台中看不到任何指定操作模式的内容。 我一直在手动写入寄存器 ASI_format (第1页、第0卷、地址0x01)以设置模式。
    • 为什么16kHz 不适用于 ROM 模式? 在调优模式下运行是否有问题?
    • RAM 模式、调优模式和智能放大器模式之间有何区别? 该文档将模式称为"模式1:仅 PCM 输入回放"、"模式2:PCM 输入回放+ PCM IVsense 输出"和"智能放大器模式";PPC3列出了"ROM 模式1"、"ROM 模式2"、"RAM 模式"和"调优模式"。 这些模式意味着什么?

    谢谢、
    Sam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sam:

    很抱歉、我会在接下来的几天内检查您的输入并获得一些反馈。

    此致、
    -Ivan Salazar
    应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    伊万

    我们最终能够从芯片中获得一些声音。 我将在下面记录我们所做的工作(也许这将有助于类似情况下的未来人员...):

    • 将.cfg 文件转换为 C 头文件的 python 脚本未考虑 I2C 写入的器件地址。 我们只希望写入器件 A (地址0x98)、但即使在 PurePath 控制台终端系统集成中仅选择了器件 A、该脚本也包含对器件 B (地址0x9C)的写入。 这会导致一些误配置写入。 我们在 python 脚本中添加了一个地址检查来过滤掉写入0x9C 的数据以解决这个问题。
    • 当我们对芯片进行编程时、我们的位或字时钟尚未启用。 我们在 EVM 上注意到、器件上电时缺少 BCLK 会完全禁用音频输出。 启用我们的 SAI 线路并在芯片启动前输出零是关键的一步。
    • 最后解决这个问题的事情有点神秘。 由于某种原因、在 PPC3中生成包含常量表征文件的最终系统配置文件并不会每次生成相同的输出。 我们重新生成了配置、作为最后的解决方法、并注意到对 PLL 寄存器的 I2C 写入是不同的、这种更改似乎是最终解决问题的方法。 我们无法解释为什么相同.pppc3输入的输出文件不同、我们不知道为什么该 PLL 寄存器发生了变化。 PPC3中是否有影响该写入值的内容?

    目前、我们能够在 ROM1模式下生成中质量音频输出。 当我们切换到智能放大器模式时、我们在硬件和 EVM 上都会遇到不可预测的行为:

    • 音频从合理的音量开始、然后立即下降到接近听不清的水平。 它将无限期地保持在该水平、每隔一段时间、短暂地尖头、然后立即下降。 每次在我们的硬件上、有时在 EVM 上都会发生这种情况。
    • 有时、在 EVM 上、音频从看似随机的级别开始。 我们有时可以使用 PPC3中的增益滑块来调节音量:这样做时、它有时会按预期工作、有时会随着增益减小而增大音量、反之亦然、有时根本不执行任何操作。
    • 很少情况下、在 EVM 上、音频会开始发出很大的声音、并将上升到削波为止。

    在 EVM 和我们的硬件上都会发生这种情况、这表明我们的表征存在潜在问题、但在过去、我们能够在 EVM 上使用相同的.pppc3文件、而不会出现任何问题。 增益滑块按预期工作、音频质量很好。 自那时以来、.pppc3文件中没有任何变化。

    我们如何在此处继续? ROM 模式下的音频质量对我们的系统来说不够好、因此我们必须使用智能放大器模式。

    谢谢、  

    Sam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sam:

    您是否可以共享 PPC3文件 JUS 以进行查看? 由于您使用的是与之前相同的方法、因此我不会在这里遇到问题、但只想进行双次检查。

    您使用的扬声器是否与以前相同? 您是否尝试过相同类型的新扬声器?

    您是否拥有运行扬声器特征评定所需的硬件? 如果是、请尝试重新描述扬声器的特征并比较结果。

    您是否还可以尝试使用验证面板检查保护算法的运行情况? 如果工作不正常、我们应检查 IV 检测引脚连接、可能 IV 数据不正确、从而触发硬保护限制。

    降低音频的事实似乎是触发了保护方案、  

    此致、
    -Ivan Salazar
    应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../ppc.zip

    附件是我们尝试使用的.pppc3文件和配置文件。  

    自从我们上次使用 EVM 以来、扬声器没有变化。 我们已经尝试过几个具有相同特性的扬声器、并且斜降行为是一致的。  

    我将在明天重新确定特征并跟进结果。  

    谢谢、  

    Sam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sam:

    我正在检查您的调优文件、并将告诉您是否有任何未完成的内容、此外、请在重新确定扬声器特征后告知我们结果。

    此致、
    -Ivan Salazar
    应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    伊万

    今天、我们尝试重新确定扬声器的特性、但在没有 PPC3错误测试的情况下、我们无法全程完成特性评估过程。 我们得到 SPL 测量阶跃、扬声器没有任何输出。 在热特性化过程中、扬声器绝对不会通电、并且每次都会出现该步进错误、因为我们无法加热扬声器。 我们曾试图向几位发言者描述情况,所有发言者在这一步中都失败了。

    我们收到了我们使用的扬声器制造商提供的扬声器特性数据、并尝试将这些数据手动输入 PPC3以播放音频。 当我们这么做时、我们会立即降低到接近听不清的音量水平。 如果我们在此增加增益、扬声器最终会完全断电。

    以下是 PPC3在其中一个压降事件期间捕获的偏移图:

    偏移水平没有接近极限值。 我们尝试将偏移速度值调到尽可能高的值、这确实防止了下降一段时间、但当增益足够高时、它不可避免地下降、最终下降到零。 每次试验中、热增量水平几乎完全为零、但我们也将热速度提高到了1秒、以防万一。

    如果我们甚至无法确定扬声器的特征、我们就不知道应该如何继续。 当我们在四个月前发现这些错误时、没有发生、我们使用的扬声器型号也没有改变。

    我们使用的新.pppc3文件也已附加。

    e2e.ti.com/.../new_5F00_ppc3.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们取得了更多进展。 表征问题是由于设置不正确(LC 滤波器反向打开)造成的。 这似乎阻止了我们在评定过程中获得 SPL 输出。  

    现在、我们可以在 EVM 上的扬声器以合理的音量级别听到相当高的输出质量。 但是、似乎仍然会发生一些动态体积补偿、这会阻止我们达到所需的最大输出电平。  

    下面是我们当前.pcc3配置的偏移限制和温度图:  

    显然、这里有一些限制输出的东西、但我们不确定什么是限制输出的东西。 温度和偏移在界限内。 导致这种斜降行为的其他原因是什么?我们如何配置它以允许在偏移/温度限制范围内产生更大的音频?  

    此外、还随附了适用于我们最新配置的.pppc3文件。

     e2e.ti.com/.../ppc3_5F00_working.zip

    感谢您的帮助、  

    Sam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sam:

    我正在研究这个问题、但有一个简单的问题:您是否在单声道应用中使用 TAS2559? 我想您看到的衰减是由于立体声连接造成的。 EVM 具有 TAS2560和 TAS2559、如果您不使用第二个通道、则需要禁用此功能。 我还将使用此功能验证您的 PPC3文件、并尽快告知您我的反馈。

    此致、
    -Ivan Salazar
    应用工程师

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们禁用了立体声连接、衰减似乎没有更好-尽管从未突破标称限值、但偏移图仍报告输出发生下降。  

    在我们的定制硬件中、这种新配置的性能更为重要。 我们能够在智能放大器模式下输出音频、这是一项改进、但音频质量和音量都非常差。 听起来扬声器浸没在水中、音量对于我们的应用而言太低。 此外、使用增益寄存器尝试增大音量似乎不起任何作用。  我们使用的硬件设置与我们用来描述扬声器特征的硬件设置完全相同。  

    我们再次不知道如何继续。 除了小体积问题外、这种精确的特性在 EVM 上也很有效。 错误寄存器 INT_DET_1和 INT_DET_2在我们的硬件中任何时候都不报告错误、因此我们认为没有遇到错误情况。  

    一个基本问题:我们如何简单地提高输出的音量? 寄存器 SPK_GAIN_EDGE 不会以任何明显的方式影响音量。 PPC3中的增益滑块报告了在移动滑块时对 I2C 监视器中多个未记录的寄存器进行写入操作、但向代码中的这些寄存器写入值以更改音量似乎也没有任何作用。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sam:

    我已经检查了这两个文件、我注意到 FS 与您之前共享的 ppc.zip 文件不同、而不是 ppc3_working.zip、您能否根据扬声器规格验证哪一个文件是正确的?

    我尝试修改这两个文件上的一些设置、我认为我能够在 ppc.zip 上获得更稳定的振幅、但出于某种原因、我尚未确定、相同的更改不适用于 ppc3_working.zip。

    • 禁用立体声连接、此控制可从"调优和音频处理->智能放大器->保护调优"中获得
    • 禁用单音频率检测。 这是一个隐藏功能、可在检测到单频音调时降低增益、这是为了防止扬声器提前发热
    • 请勿同步设备、此控件可从设备控制->右上角获取

    您可以尝试使用此文件、但如前所述、我尝试对您的较新的 ppc3文件进行类似的更改、但效果不同。

    当器件配置为调优模式时、信号路径的最后一级是扬声器保护、因此即使您添加了数字增益或 EQ 增益、 如果扬声器保护算法将增益下拉、无论此级之前有多少增益、它仍将下降。

    此致、
    -Ivan Salazar
    应用工程师

    e2e.ti.com/.../ppc_5F00_102821.ppc3

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    通过使用此配置和上述建议、我可以在 EVM 上获得非常好且响亮的输出。 当我在我们的硬件上尝试它时、我会得到任何零噪声。  

    我需要一种观察扬声器保护算法输出的方法。 如果检测到危险情况并将输出拉至低电平、我需要能够看到这一点。 我在文档中看到的唯一错误寄存器是 INT_DET_(1/2)、即使我尝试播放音频、这些错误位在我们的硬件中也不会变为低电平。 我是否可以观察到任何其他寄存器来识别调优模式流水线中消耗输出的内容?  

    或者、是否可以在另一种模式(ROM 模式1或2、可能?)下使用16kHz 音频。 我知道 PPC3不允许这样做、但是否有办法让它正常工作?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sam:

    我了解您对从特定算法结果获取信号的兴趣、很遗憾、我不知道如何这样做。 所有算法方面都在 DSP 中同时运行、并且没有特定的方法来标记进程中的某些事件。

    由于 TAS2559是 TAS2563的旧版本、我不希望新的 PPC3版本在 ROM 模式下启用16kHz、但我可以尝试通过检查智能放大器模式下48kHz 与16kHz 之间的寄存器差异来提供帮助、 并检查 ROM 模式是否可以使用相同的更改。

    此致、
    -Ivan Salazar
    应用工程师