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.

[参考译文] TLV320AIC3104:使用 I2C 读取错误的寄存器

Guru**** 2457760 points
Other Parts Discussed in Thread: TLV320AIC3104, TCA9534

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1292534/tlv320aic3104-wrong-reg-read-by-using-i2c

器件型号:TLV320AIC3104
主题中讨论的其他器件: TCA9534

尊敬的 TI 技术支持团队:

我在从 TLV320AIC3104中读取寄存器 vale 时遇到一个问题。

我们的产品出现问题、因此我尝试了对它进行调试、发现有时 CPU 读取的寄存器值错误。

CPU 正在使用 Linux (ubuntu)并使用"regmap (...)" 适用于 I2C 访问。

CPU 的 I2C 端口有两个器件。  

两个设备用于音频,一个是 FM8802 Forte 介质,另一个是 TLV320AirC3~。

操作首先写入具有突发模式的 FM8802

其次是访问 TLV320~。 FM8802 I2C 访问的最后一部分在许多情况下与 TLV320 I2C 重叠。

但是、到目前为止、我尚未发现由于 regmap 内部总线锁定而导致的 I2C 访问发生任何错误冲突。

下面的内容可能有误读。

您可以看到源零件和 osc-示波器屏幕。

寄存器 R88 (0x58)必须为0x04。 但是、第一次读取显示0x7F。  

我添加了第二次读取用于调试。 然后、第二次读取显示正常值。  

我无法找到问题发生的原因。

根据我的来源、在我将 R88 (0x58)替换  为 其他寄存器地址后、我再次生成了这个问题。

无论寄存器地址如何、结果都会显示相同的错误值(0x7F)、

您能解释一下问题发生的原因吗?

非常感谢

孙炳熙

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

    您好,圣浩

    首先,我很抱歉, 我附加的图像文件低分辨率。

    我确实意识到了这一点。 我觉得质量还可以。

    我在下面上传了原始完整文件。 --->因此,在你下载后,请删除文件!!!!

    最后一页(第8页)、您可以看到问题。  

    1.第一个打印 i2c 地址是激活 ktd2027时。 正如我在该文件中提到的、上次它是0x7f。 但现在它显示为0x00。 我不知道为什么。

    现在我没有 osc 设备来捕获脉冲。 但我可以确认的是、tlv320~在 ktd2027抓住 i2c 时尝试读取相同的 i2c 存取  

    2.第二。 我在 dtsi 文件上阻止了 ktd2027。 并且我仔细选中的 ktd2027未激活。

       此时、 如果我从 tlv320aic~读取0x58 reg、则读取值为0xf8、即值0x18 ->原因并不总是如此。 我必须重现此示例。

       如果我将 reg (例如0x11)更改为读取、而没有一位差异、而不是0x58、我就无法重现该情况。

     

    如果您有任何其他需要、请告诉我。

    非常感谢

    BH

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

    嗨、Guy

    圣诞快乐,新年快乐。 无论 ktd2027 是否阻塞、 代码都会将正确的 i2c 地址和右侧寄存器编号传递给 i2c 总线驱动器、您是否仍然坚持根本原因是 TLV320AIC3104驱动器的存在? 您是否有 额外的  TLV320AIC3104 来检查此问题?

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

    您好,圣浩  

    您的意思是,即使我删除了 dtsi 文件中的 ktd2027,也加载了 ktd2027驱动程序?

    我已检查驱动程序是否未执行并且不运行该驱动程序。  

    顺便说一下、 如何解释 上面的第二期内容?

    我们使用一个 tlv320aic3104。 所有产品显示相同的结果。 首先、我们应用了另一个选项来避免该问题。

    我们不直接读取 TLV320aic3104。 而是将 regmap 数据保存到内存。 并且从 reg 而不是 regmap_read()中读取该值。

    这样、我们修改了当前问题。  

    非常感谢

    BH

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

    另外,我已经检查了 /sys/kernel/debug/regmap 中 ktd2027的 regmap 文件夹不存在,甚至 i2c 文件夹也不存在。

    我认为主机 CPU 不知道 ktd2027的存在。

    BH

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

    您可以通过物理方式删除 ktd2027、断开 ktd2027。 所有下拉菜单。

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

    是的、我已经提到过。

    我断开了 SCL/sda 连接并阻止了 dtsi 文件. 此外,我在 ktd2027的~_probe ()中添加了"return"语句。

    你为什么问我已经提到的同样的问题?

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

    如果发生同样的问题、请尝试另一个 aic3104以检查是否发生此问题。 如您所知、这个问题超出了软件范围、我无法从所有软件上下文中找到任何线索。 谢谢。

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

    感谢您的支持。

    我认为我们很难再解决这一问题。

    因此、我要关闭该票证。

    如果我在 TI 器件上有相关问题、我将打开新的 TT。  

    非常感谢