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.

[参考译文] Linux/PCM9211:从 PCM9211获取数据时出现问题

Guru**** 2480975 points
Other Parts Discussed in Thread: PCM9211

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/818670/linux-pcm9211-issue-in-getting-data-from-pcm9211

器件型号:PCM9211

工具/软件:Linux

大家好、

我们正在研究一个项目、该项目涉及3个 PCM9211、以便将信号路由到不同的器件。

我们重复使用 patchwork.kernel.org/.../上的非官方 Linux 驱动 程序我们对其进行了一些改进(辅助输出+ DIT 支持、一些必需的修复程序等)。

驱动程序工作正常、从 Linux 中、我可以使用设备树+ alsamixer 正确设置所有设备的路由。 当我读回寄存器时、它看起来与设置一致。

为了简化理解、您可以观看 PCM9211系统的以下原理图。 e2e.ti.com/.../PCM9211routing.pdf

然后、您具有所有这些寄存器的寄存器值。 音频深度为16位。 我们在级联中使用 XTI (通过 MPIO A 进行传播、我们为所有这些器件提供该时钟信号)。 地址和值为十六进制。

第一个器件:

20:00
21:00
22:01
23:04
24:10
25:01
26:01
27:00
28:07
29:0C
2A:A9
2B:FF
2C:00
2D:00
2E:00
2F:03
30:12
31:0D
32:22
33:31
34:00
35:02
36:02
37:00
38:08
39:80
3A:00
3B:00
3c:00
3D:00
40:60
42:02
46:D7
47:D7
48:03
49:00
5A:00
5B:00
5C:00
5D:00
5e:00
5F:00
60:11
61:13.
62:00
63:00
64:00
65:00
66:00
67:00
68:00
6A:00
6b:11.
6C:11
6D:00
6e:00
6F:48
70:00
71:00
72:00
73:00
74:00
75:00
76:00
77:00
78:0D
79:00
7A:00
7b:00
7C:00
7D:00
7E:02

第二个器件:

20:00
21:00
22:01
23:04
24:10
25:01
26:01
27:00
28:07
29:0C
2A:A9
2B:FF
2C:00
2D:00
2E:00
2F:03
30:12
31:0D
32:22
33:31
34:00
35:02
36:02
37:00
38:08
39:80
3A:00
3B:00
3c:00
3D:00
40:60
42:02
46:D7
47:D7
48:03
49:00
5A:00
5B:00
5C:00
5D:00
5e:00
5F:00
60:11
61:13.
62:00
63:00
64:00
65:00
66:00
67:00
68:00
6A:00
6b:11.
6C:11
6D:00
6e:00
6F:48
70:00
71:00
72:00
73:00
74:00
75:00
76:00
77:00
78:0D
79:00
7A:00
7b:00
7C:00
7D:00
7E:02

第三个器件:

20:00
21:00
22:01
23:04
24:10
25:01
26:01
27:00
28:07
29:0C
2A:A9
2B:FF
2C:00
2D:00
2E:00
2F:03
30:12
31:0D
32:22
33:31
34:00
35:02
36:02
37:00
38:08
39:80
3A:00
3B:00
3c:00
3D:00
40:60
42:02
46:D7
47:D7
48:03
49:00
5A:00
5B:00
5C:00
5D:00
5e:00
5F:00
60:11
61:13.
62:00
63:00
64:00
65:00
66:00
67:00
68:00
6A:00
6b:11.
6C:44
6D:00
6e:00
6F:40.
70:00
71:00
72:00
73:00
74:00
75:00
76:00
77:00
78:0D
79:00
7A:00
7b:00
7C:00
7D:00
7E:02

某些点的行为似乎是正确的。 我们可以在模拟输出上看到时钟信号与我们的配置一致、但线路上没有数据。 数字输出的信号似乎也有效、但当我们将其插入音频系统时、我们不会听到任何声音。

文档(第50页的示例说明了一些寄存器配置)+论坛说明+ EVM 软件不能帮助我们正确配置。 从我们的角度来看、一切似乎都不错。

你有什么想法吗? 提前感谢您!

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

    用户、  

    我注意到的一点是、您的路由假设 MPIO0/1选择器具有 DITOUT 输入、 但情况并非如此。   这是数据表中的错误、 您需要使用 RECOUT0或 RECOUT1 MUX (寄存器0x35或0x36)、然后为 MPIO 选择器输入选择其中一个。

     

    此致、

    -Steve Wilson

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

    您好!

    感谢您的建议。 不幸的是,仅仅解决我们的问题是不够的。

    使用以下设置转储我的寄存器:

    root@CORRELINKRES:~# cat /sys/kernel/debug/regmap/0-0040/registers
    20:00
    21:00
    22:01
    23:04
    24:10
    25:01
    26:01
    27:00
    28:07
    29:0C
    2A:A9
    2B:FF
    2C:02
    2D:00
    2E:00
    2F:03
    30:12
    31:0D
    32:22
    33:31
    34:00
    35:0f
    36:02
    37:00
    38:08
    39:0°C
    3A:00
    3B:00
    3c:00
    3D:00
    40:40
    42:02
    46:D7
    47:D7
    48:03
    49:00
    5A:00
    5B:00
    5C:00
    5D:00
    5e:00
    5F:00
    60:11
    61:13.
    62:00
    63:00
    64:00
    65:00
    66:00
    67:00
    68:00
    6A:00
    6b:11.
    6C:00
    6D:00
    6e:00
    6F:48
    70:00
    71:00
    72:00
    73:00
    74:00
    75:00
    76:00
    77:00
    78:0E
    79:00
    7A:00
    7b:00
    7C:00
    7D:00
    7E:02
    root@CORRELINKRES:~# cat /sys/kernel/debug/regmap/0-0041/registers
    20:00
    21:00
    22:01
    23:04
    24:10
    25:01
    26:01
    27:00
    28:07
    29:0C
    2A:A9
    2B:FF
    2C:02
    2D:00
    2E:00
    2F:03
    30:12
    31:0D
    32:22
    33:31
    34:00
    35:0f
    36:02
    37:00
    38:08
    39:0°C
    3A:00
    3B:00
    3c:00
    3D:00
    40:40
    42:02
    46:D7
    47:D7
    48:03
    49:00
    5A:00
    5B:00
    5C:00
    5D:00
    5e:00
    5F:00
    60:11
    61:13.
    62:00
    63:00
    64:00
    65:00
    66:00
    67:00
    68:00
    6A:00
    6b:11.
    6C:00
    6D:00
    6e:00
    6F:48
    70:00
    71:00
    72:00
    73:00
    74:00
    75:00
    76:00
    77:00
    78:0E
    79:00
    7A:00
    7b:00
    7C:00
    7D:00
    7E:02
    root@CORRELINKRES:~# cat /sys/kernel/debug/regmap/0-0042/registers
    20:00
    21:00
    22:01
    23:04
    24:10
    25:01
    26:01
    27:00
    28:07
    29:0C
    2A:A9
    2B:FF
    2C:02
    2D:00
    2E:00
    2F:03
    30:12
    31:0D
    32:22
    33:31
    34:00
    35:0f
    36:02
    37:07
    38:08
    39:80
    3A:00
    3B:00
    3c:00
    3D:00
    40:40
    42:02
    46:D7
    47:D7
    48:03
    49:00
    5A:00
    5B:00
    5C:00
    5D:00
    5e:00
    5F:00
    60:22
    61:13.
    62:00
    63:00
    64:00
    65:00
    66:00
    67:00
    68:00
    6A:00
    6b:00
    6C:00
    6D:00
    6e:00
    6F:40.
    70:00
    71:00
    72:00
    73:00
    74:00
    75:00
    76:00
    77:00
    78:0E
    79:00
    7A:00
    7b:00
    7C:00
    7D:00
    7E:02

    自然顺序。

    这些设置的当前路由如下。

    第一个 PCM:RXIN0 -> DIR -> DIT -> RECOUT0 -> MPO0和 RXIN0 -> DIR -> Main

    第二个 PCM:RXIN0 -> DIR -> DIT -> RECOUT0 -> MPO0

    第三个 PCM:ADC -> DIT -> RECOUT0 -> MPO0

    ADC 是目前唯一的实数输入。 我播放从通过 Jack 电缆连接到电路板的 PC 的内容。 我们可以检测 ADC 输入引脚上的信号。

    您是否知道缺少什么? 我们的配置可能有什么问题?

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

    有什么想法可以解决我的问题?

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

    用户、  

    将 Rx0连接到 MPO0的序列是  

    宽80 34 00 0c

    宽80 60高11

    宽80 78 0e  

    此致、

    -Steve Wilson