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.

[参考译文] AM6548:播放立体声时无 RHPOUT

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1234254/am6548-no-rhpout-when-aplay-stereo-sound

器件型号:AM6548
主题中讨论的其他器件:AM6528

我们使用 am6528 + TLV320AIC23、现在它可以在 I2S 模式下工作、但只有左声道输出正常声音、RHPOUT 没有输出、我们使用示波器测量 FS 和 AXR0的信号:当 FS 信号保持高电平时、AXR0线上没有右声道数据。

FS:蓝色          AXR0:绿色

相关配置在 DTS 列表中如下所示:

sound {
                compatible = "simple-audio-card";
                simple-audio-card,name = "AM65x-GHMI+";
                simple-audio-card,widgets =
                        "Headphone", "Headphone Jack";
                simple-audio-card,routing =
                        "Headphone Jack",       "LHPOUT",
                        "Headphone Jack",       "RHPOUT";

                simple-audio-card,format = "i2s";
                simple-audio-card,bitclock-master = <&sound_master>;
                simple-audio-card,frame-master = <&sound_master>;
                /*simple-audio-card,bitclock-inversion;*/

                simple-audio-card,cpu {
                        sound-dai = <&mcasp1>;
                };

                sound_master: simple-audio-card,codec {
                        sound-dai = <&tlv320aic23>;
                        system-clock-frequency = <12000000>;
                };
        };


.........

mcasp1_pins: mcasp1-pins {
                pinctrl-single,pins = <
                        AM65X_IOPAD(0x0244, PIN_INPUT_PULLDOWN, 5) /* (AB28) PRG0_PRU1_GPO0.MCASP1_ACLKX */
                        AM65X_IOPAD(0x0248, PIN_INPUT_PULLDOWN, 5) /* (AC28) PRG0_PRU1_GPO1.MCASP1_AFSX */
                        AM65X_IOPAD(0x0254, PIN_INPUT_PULLDOWN, 5) /* (AA25) PRG0_PRU1_GPO4.MCASP1_AXR0 */
                >;
        };

.........

tlv320aic23: tlv320aic23@1b {
                #sound-dai-cells = <0>;
                compatible = "ti,tlv320aic23";
                reg = <0x1b>;
                status = "okay";

                /* Regulators 
                AVDD-supply = <&codec_vcc_3v3>;
                IOVDD-supply = <&gp_vcc_1v8>;
                DRVDD-supply = <&codec_vcc_3v3>;
                DVDD-supply = <&gp_vcc_1v8>;*/
        };
........

&mcasp1 {
        #sound-dai-cells = <0>;
        status = "okay";

        pinctrl-names = "default";
        pinctrl-0 = <&mcasp1_pins>;
        op-mode = <0>;          /* MCASP_IIS_MODE */
        tdm-slots = <2>;
        /* 16 serializers */
        /* num-serializer = <10>;*/
        serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
                1 0 0 0
                0 0 0 0
                0 0
        >;
        tx-num-evt = <32>;
        rx-num-evt = <32>;
};

simple-audio 卡或 McASP1的配置是否有任何问题?

谢谢

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

    尊敬的 Kenn:

    给我一两天的时间来回复,因为你正在使用的编解码器已经过时了,我将在内部检查并返回。

    同时、如果将其更改为 LOUT 和 ROUT (使用 Lineout 而不是耳机)、您是否看到了相同的行为?

    此外、如果您可以提供寄存器转储以进行调试。

    此致、

    苏伦

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

    谢谢、Suren,ö m

    我已将其更改为 LOUT 和 ROUT、但结果是相同的 、而且: 当 FS 信号保持高电平时、AXR0线路上没有正确的通道数据

    您能否向我们提供您需要的确切寄存器地址?

    谢谢

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

    你好,昆

    您能提供更多的日志与我?

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

    您好,丁圣浩

    root@am65xx-evm:~# amixer scontrols
    Simple mixer control 'Sidetone',0
    Simple mixer control 'Line',0
    Simple mixer control 'Line Input',0
    Simple mixer control 'Mic',0
    Simple mixer control 'Mic Booster',0
    Simple mixer control 'Mic Input',0
    Simple mixer control 'Playback De-emphasis',0
    Simple mixer control 'Digital',0
    Simple mixer control 'Output Mixer',0
    Simple mixer control 'Output Mixer Line Bypass',0
    Simple mixer control 'Output Mixer Mic Sidetone',0
    root@am65xx-evm:~# dmesg | grep amixer
    root@am65xx-evm:~# [ 129.704289] Initializing XFRM netlink socket
    
    root@am65xx-evm:~# amixer scontents
    Simple mixer control 'Sidetone',0
    Capabilities: volume volume-joined
    Playback channels: Mono
    Capture channels: Mono
    Limits: 0 - 4
    Mono: 3 [75%] [-9.00dB]
    Simple mixer control 'Line',0
    Capabilities: cswitch cswitch-joined cswitch-exclusive
    Capture exclusive group: 0
    Capture channels: Mono
    Mono: Capture [off]
    Simple mixer control 'Line Input',0
    Capabilities: volume pswitch
    Playback channels: Front Left - Front Right
    Capture channels: Front Left - Front Right
    Limits: 0 - 31
    Front Left: 23 [74%] [0.00dB] Playback [off]
    Front Right: 23 [74%] [0.00dB] Playback [off]
    Simple mixer control 'Mic',0
    Capabilities: cswitch cswitch-joined cswitch-exclusive
    Capture exclusive group: 0
    Capture channels: Mono
    Mono: Capture [on]
    Simple mixer control 'Mic Booster',0
    Capabilities: pswitch pswitch-joined
    Playback channels: Mono
    Mono: Playback [off]
    Simple mixer control 'Mic Input',0
    Capabilities: pswitch pswitch-joined
    Playback channels: Mono
    Mono: Playback [on]
    Simple mixer control 'Playback De-emphasis',0
    Capabilities: enum
    Items: 'None' '32Khz' '44.1Khz' '48Khz'
    Item0: '44.1Khz'
    Simple mixer control 'Digital',0
    Capabilities: pvolume pswitch pswitch-joined
    Playback channels: Front Left - Front Right
    Limits: Playback 0 - 127
    Mono:
    Front Left: Playback 112 [88%] [-9.00dB] [on]
    Front Right: Playback 112 [88%] [-9.00dB] [on]
    Simple mixer control 'Output Mixer',0
    Capabilities: pswitch pswitch-joined
    Playback channels: Mono
    Mono: Playback [on]
    Simple mixer control 'Output Mixer Line Bypass',0
    Capabilities: pswitch pswitch-joined
    Playback channels: Mono
    Mono: Playback [off]
    Simple mixer control 'Output Mixer Mic Sidetone',0
    Capabilities: pswitch pswitch-joined
    Playback channels: Mono
    Mono: Playback [off]
    
    
    root@am65xx-evm:~# amixer controls
    numid=3,iface=MIXER,name='Line Input Switch'
    numid=4,iface=MIXER,name='Line Input Volume'
    numid=6,iface=MIXER,name='Mic Booster Switch'
    numid=5,iface=MIXER,name='Mic Input Switch'
    numid=9,iface=MIXER,name='Capture Source'
    numid=8,iface=MIXER,name='Playback De-emphasis'
    numid=2,iface=MIXER,name='Digital Playback Switch'
    numid=1,iface=MIXER,name='Digital Playback Volume'
    numid=10,iface=MIXER,name='Output Mixer Line Bypass Switch'
    numid=11,iface=MIXER,name='Output Mixer Mic Sidetone Switch'
    numid=12,iface=MIXER,name='Output Mixer Playback Switch'
    numid=7,iface=MIXER,name='Sidetone Volume'
    
    
    root@am65xx-evm:~# amixer contents
    numid=3,iface=MIXER,name='Line Input Switch'
    ; type=BOOLEAN,access=rw------,values=2
    : values=off,off
    numid=4,iface=MIXER,name='Line Input Volume'
    ; type=INTEGER,access=rw---R--,values=2,min=0,max=31,step=0
    : values=23,23
    | dBscale-min=-17.25dB,step=0.75dB,mute=0
    numid=6,iface=MIXER,name='Mic Booster Switch'
    ; type=BOOLEAN,access=rw------,values=1
    : values=off
    numid=5,iface=MIXER,name='Mic Input Switch'
    ; type=BOOLEAN,access=rw------,values=1
    : values=on
    numid=9,iface=MIXER,name='Capture Source'
    ; type=ENUMERATED,access=rw------,values=1,items=2
    ; Item #0 'Line'
    ; Item #1 'Mic'
    : values=1
    numid=8,iface=MIXER,name='Playback De-emphasis'
    ; type=ENUMERATED,access=rw------,values=1,items=4
    ; Item #0 'None'
    ; Item #1 '32Khz'
    ; Item #2 '44.1Khz'
    ; Item #3 '48Khz'
    : values=2
    numid=2,iface=MIXER,name='Digital Playback Switch'
    ; type=BOOLEAN,access=rw------,values=1
    : values=on
    numid=1,iface=MIXER,name='Digital Playback Volume'
    ; type=INTEGER,access=rw---R--,values=2,min=0,max=127,step=0
    : values=112,112
    | dBscale-min=-121.00dB,step=1.00dB,mute=0
    numid=10,iface=MIXER,name='Output Mixer Line Bypass Switch'
    ; type=BOOLEAN,access=rw------,values=1
    : values=off
    numid=11,iface=MIXER,name='Output Mixer Mic Sidetone Switch'
    ; type=BOOLEAN,access=rw------,values=1
    : values=off
    numid=12,iface=MIXER,name='Output Mixer Playback Switch'
    ; type=BOOLEAN,access=rw------,values=1
    : values=on
    numid=7,iface=MIXER,name='Sidetone Volume'
    ; type=INTEGER,access=rw---R--,values=1,min=0,max=4,step=0
    : values=3
    | dBscale-min=-18.00dB,step=3.00dB,mute=0

    这些信息是否足够?

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

    请使用 amixer 将输出设置为立体声而不是单声道。

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

    您好,丁圣浩

    我试图更改"输出混频器"的值、但它不起作用。

    如何使用 amixer 将输出设置为立体声而不是单声道?  是否有相关文档?  

    我还感到奇怪的是、TLV320AIC23.c 指明了它的最小播放信道= 2、但实际上、它是单声道模式,这有什么问题?

    谢谢

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

    请把寄存器转储给我。

    您是否在播放前设置了 amixer?

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

    谢谢丁胜豪

    是的,我在播放之前设置了 amixer, 但我没有找到正确的 amixer 命令来配置它在立体声模式下工作,它似乎没有简单的控制或控制来配置立体声模式,或者只是因为我不知道。

    顺便说一下、我可以使用 devmem2来转储一些相关的 McASP 寄存器、但我不知道如何转储编解码器 TLV320AIC23上的相关寄存器、我曾尝试使用 I2C 读取命令来读取其寄存器、 但系统指示 I2C 器件已被占用、您能告诉我们其他方法来转储编解码器的寄存器吗?

    MCASP_GBLCTL
    
    root@am65xx-evm:~# devmem2 0x02B10044
    /dev/mem opened.
    Memory mapped at address 0xffff9d3c0000.
    Read at address 0x02B10044 (0xffff9d3c0044): 0x00000000
    
    MCASP_AMUTE
    
    root@am65xx-evm:~# devmem2 0x02B10048
    /dev/mem opened.
    Memory mapped at address 0xffffbdb50000.
    Read at address 0x02B10048 (0xffffbdb50048): 0x00000000
    
    MCASP_PID
    
    root@am65xx-evm:~# devmem2 0x02B10000
    /dev/mem opened.
    Memory mapped at address 0xffff82b50000.
    Read at address 0x02B10000 (0xffff82b50000): 0x44307B02
    
    MCASP_PFUNC
    
    root@am65xx-evm:~# devmem2 0x02B10010
    /dev/mem opened.
    Memory mapped at address 0xffff88990000.
    Read at address  0x02B10010 (0xffff88990010): 0x00000000
    
    MCASP_XRSRCTL0
    
    root@am65xx-evm:~# devmem2 0x02B10180
    /dev/mem opened.
    Memory mapped at address 0xffff99f90000.
    Read at address  0x02B10180 (0xffff99f90180): 0x00000019
    
    MCASP_TXSTAT
    
    root@am65xx-evm:~# devmem2 0x02B100C0
    /dev/mem opened.
    Memory mapped at address 0xffff95a10000.
    Read at address  0x02B100C0 (0xffff95a100c0): 0x0000010C
    
    MCASP_GBLCTLX
    
    root@am65xx-evm:~# devmem2 0x02B100A0
    /dev/mem opened.
    Memory mapped at address 0xffff97e30000.
    Read at address  0x02B100A0 (0xffff97e300a0): 0x00000000
    
    MCASP_GBLCTLR
    
    root@am65xx-evm:~# devmem2 0x02B10060
    /dev/mem opened.
    Memory mapped at address 0xffff88b30000.
    Read at address  0x02B10060 (0xffff88b30060): 0x00000000
    
    MCASP_TXMASK
    root@am65xx-ghmi:~# devmem2 0x02B100A4
    /dev/mem opened.
    Memory mapped at address 0xffffb64a0000.
    Read at address  0x02B100A4 (0xffffb64a00a4): 0x0000FFFF
    
    MCASP_TXFMT
    root@am65xx-ghmi:~# devmem2 0x02B100A8
    /dev/mem opened.
    Memory mapped at address 0xffffa09a0000.
    Read at address  0x02B100A8 (0xffffa09a00a8): 0x00008074
    
    MCASP_TXFMCTL
    root@am65xx-ghmi:~# devmem2 0x02B100AC
    /dev/mem opened.
    Memory mapped at address 0xffff991b0000.
    Read at address  0x02B100AC (0xffff991b00ac): 0x00000100
    
    MCASP_ACLKXCTL
    root@am65xx-evm:~# devmem2 0x02B100B0
    /dev/mem opened.
    Memory mapped at address 0xffffb8490000.
    Read at address  0x02B100B0 (0xffffb84900b0): 0x00180000
    
    MCASP_AHCLKXCTL
    root@am65xx-evm:~# devmem2 0x02B100B4
    /dev/mem opened.
    Memory mapped at address 0xffff93dd0000.
    Read at address  0x02B100B4 (0xffff93dd00b4): 0x00000000
    

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    #i2cdump -y -f 0 4c
    0 is i2c bus no
    4c is 7-bit i2c device address

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

     am6528未在正确通道上发送数据。

    确保 将驱动程序和 am6528配置为发送立体声数据。

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

    尊敬的 Kenn:

    您还可以尝试将 AUDIO_FORMAT 更改为 DSP_b 而不是 I2S。

    simple-audio 卡、格式="I2S";  

    此致

    苏伦

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

    谢谢丁圣豪

    我已经尝试了你给的方法,但它似乎错误如下:

    root@am65xx-evm:/dev# i2cdump -y -f 3 0x1b
    No size specified (using byte-data access)
    [  380.890446] omap_i2c 2010000.i2c: Arbitration lost
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: XX [  383.921159] omap_i2c 2010000.i2c: controller timed out
    XX [  383.941260] omap_i2c 2010000.i2c: Arbitration lost
    XX [  386.993146] omap_i2c 2010000.i2c: controller timed out
    XX [  387.021290] omap_i2c 2010000.i2c: Arbitration lost
    XX [  390.065156] omap_i2c 2010000.i2c: controller timed out
    XX [  390.085270] omap_i2c 2010000.i2c: Arbitration lost
    XX [  393.137154] omap_i2c 2010000.i2c: controller timed out
    XX [  393.165261] omap_i2c 2010000.i2c: Arbitration lost
    XX [  396.209148] omap_i2c 2010000.i2c: controller timed out
    XX [  396.229269] omap_i2c 2010000.i2c: Arbitration lost
    XX [  399.281148] omap_i2c 2010000.i2c: controller timed out
    XX [  399.309262] omap_i2c 2010000.i2c: Arbitration lost
    XX [  402.353147] omap_i2c 2010000.i2c: controller timed out
    XX [  402.381275] omap_i2c 2010000.i2c: Arbitration lost
    XX [  405.425149] omap_i2c 2010000.i2c: controller timed out
    XX    XXXXXXXXXXXXXXXX
    10: [  405.453274] omap_i2c 2010000.i2c: Arbitration lost
    XX [  408.497165] omap_i2c 2010000.i2c: controller timed out
    XX [  408.525272] omap_i2c 2010000.i2c: Arbitration lost
    XX [  411.569151] omap_i2c 2010000.i2c: controller timed out
    XX [  411.597271] omap_i2c 2010000.i2c: Arbitration lost
    XX [  414.641148] omap_i2c 2010000.i2c: controller timed out
    XX [  414.661271] omap_i2c 2010000.i2c: Arbitration lost
    XX [  417.713151] omap_i2c 2010000.i2c: controller timed out
    XX [  417.741272] omap_i2c 2010000.i2c: Arbitration lost
    XX [  420.785164] omap_i2c 2010000.i2c: controller timed out
    XX [  420.813267] omap_i2c 2010000.i2c: Arbitration lost
    XX [  423.857146] omap_i2c 2010000.i2c: controller timed out
    XX [  423.877271] omap_i2c 2010000.i2c: Arbitration lost
    XX [  426.929153] omap_i2c 2010000.i2c: controller timed out
    XX [  426.957270] omap_i2c 2010000.i2c: Arbitration lost
    XX [  430.001177] omap_i2c 2010000.i2c: controller timed out
    XX    XXXXXXXXXXXXXXXX
    20: [  430.029276] omap_i2c 2010000.i2c: Arbitration lost
    XX [  433.073154] omap_i2c 2010000.i2c: controller timed out
    XX [  433.093274] omap_i2c 2010000.i2c: Arbitration lost
    XX [  436.145150] omap_i2c 2010000.i2c: controller timed out
    XX [  436.173271] omap_i2c 2010000.i2c: Arbitration lost
    XX [  439.217148] omap_i2c 2010000.i2c: controller timed out
    XX [  439.245270] omap_i2c 2010000.i2c: Arbitration lost
    XX [  442.289153] omap_i2c 2010000.i2c: controller timed out
    XX [  442.309272] omap_i2c 2010000.i2c: Arbitration lost
    XX [  445.361148] omap_i2c 2010000.i2c: controller timed out
    XX [  445.389290] omap_i2c 2010000.i2c: Arbitration lost
    XX [  448.433149] omap_i2c 2010000.i2c: controller timed out
    XX [  448.461267] omap_i2c 2010000.i2c: Arbitration lost
    XX [  451.505154] omap_i2c 2010000.i2c: controller timed out
    XX [  451.533267] omap_i2c 2010000.i2c: Arbitration lost
    XX [  454.577164] omap_i2c 2010000.i2c: controller timed out
    XX    XXXXXXXXXXXXXXXX
    30: [  454.605271] omap_i2c 2010000.i2c: Arbitration lost
    XX [  457.649153] omap_i2c 2010000.i2c: controller timed out
    XX [  457.677268] omap_i2c 2010000.i2c: Arbitration lost
    XX [  460.721153] omap_i2c 2010000.i2c: controller timed out
    XX [  460.749275] omap_i2c 2010000.i2c: Arbitration lost
    XX [  463.793154] omap_i2c 2010000.i2c: controller timed out
    XX [  463.821263] omap_i2c 2010000.i2c: Arbitration lost
    XX [  466.865149] omap_i2c 2010000.i2c: controller timed out
    XX [  466.885270] omap_i2c 2010000.i2c: Arbitration lost
    XX [  469.937150] omap_i2c 2010000.i2c: controller timed out
    XX [  469.957273] omap_i2c 2010000.i2c: Arbitration lost
    XX [  473.009151] omap_i2c 2010000.i2c: controller timed out
    XX [  473.037267] omap_i2c 2010000.i2c: Arbitration lost
    XX [  476.081154] omap_i2c 2010000.i2c: controller timed out
    XX [  476.109264] omap_i2c 2010000.i2c: Arbitration lost
    XX [  479.153160] omap_i2c 2010000.i2c: controller timed out
    XX    XXXXXXXXXXXXXXXX
    40: [  479.181266] omap_i2c 2010000.i2c: Arbitration lost
    ........
    
    XX    XXXXXXXXXXXXXXXX
    f0: [  749.517281] omap_i2c 2010000.i2c: Arbitration lost
    XX [  752.561162] omap_i2c 2010000.i2c: controller timed out
    XX [  752.589267] omap_i2c 2010000.i2c: Arbitration lost
    XX [  755.633178] omap_i2c 2010000.i2c: controller timed out
    XX [  755.653278] omap_i2c 2010000.i2c: Arbitration lost
    XX [  758.705150] omap_i2c 2010000.i2c: controller timed out
    XX [  758.733270] omap_i2c 2010000.i2c: Arbitration lost
    XX [  761.777148] omap_i2c 2010000.i2c: controller timed out
    XX [  761.805269] omap_i2c 2010000.i2c: Arbitration lost
    XX [  764.849147] omap_i2c 2010000.i2c: controller timed out
    XX [  764.877262] omap_i2c 2010000.i2c: Arbitration lost
    XX [  767.921148] omap_i2c 2010000.i2c: controller timed out
    XX [  767.949268] omap_i2c 2010000.i2c: Arbitration lost
    XX [  770.993160] omap_i2c 2010000.i2c: controller timed out
    XX [  771.021263] omap_i2c 2010000.i2c: Arbitration lost
    XX [  774.065148] omap_i2c 2010000.i2c: controller timed out
    XX    XXXXXXXXXXXXXXXX
    
    

    是定时问题吗? 我们是否需要检查 I2C 时序问题? 另外还有另外两个器件在此 i2c 总线上、这两个器件工作正常、很奇怪!

    谢谢

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

     am6528未在正确通道上发送数据。

    确保 将驱动程序和 am6528配置为发送立体声数据。

    [/报价]

    感谢 pdjuandi  

    如何确保 am6528已配置为发送立体声数据? 我在 DTS 中找到的唯一设置是将它的模式设置为"I2S"、现在由于波形和放大器的结果、它的输出是单声道的、 您能告诉我关于这个立体声输出的另一个设置吗?

    谢谢

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

    您好,Suren

    您还可以尝试将 AUDIO_FORMAT 更改为 DSP_b 而不是 I2S。

    simple-audio 卡、格式="I2S";  

    [/报价]

     当我将模式从"I2S"更改为"DSP_b"时、其 rhpout 会输出噪声、但 lhpout 输出良好。

    谢谢

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

    是的、这是不可能的。 其他 i2c 器件可以正常工作、但代码无法正常工作。

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

    检查代码的 DTS 设置、将其设置为主器件。 请检查从 AP 到编解码器的音频数据是否是立体声的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    II 检查代码的 DTS 设置,它被设置为主机。 请检查从 AP 到编解码器的音频数据是否为立体声。

    在 I2S 模式下、当 FS 信号保持高电平时、AXR0信号应输出 正确的通道数据、但我们电路板上的信号此时在 AXR0上没有任何数据、您可以在我的第一个帖子上看到波形。

    谢谢

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

    我不熟悉 AM6528或驱动程序、从编解码器的角度来看、右通道输入的数据为空。

    苏仁/盛豪或许能够引导您。

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

    您能否分享   TLV320AIC23和 AM6528之间连接的原理图?

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

    谢谢丁圣豪!

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

    您可以确认、信号来自 SDIN、对吧?

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

    DIN,SDIN 的信号是 I2C 数据引脚。

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

    您是否使用示波器测量了 DIN 引脚上的波形?

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

    DIN 是 AXR0信号,您可以在我的第一篇文章中看到此波形。

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

    我不熟悉 AM6528或驱动程序、从编解码器的角度来看、右通道输入的数据为空。

    苏仁/盛豪或许能够引导您。

    [/报价]

    非常感谢,pdjuandi

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

    在波形中、DIN 的右侧通道中没有信号。 音频源的正确通道是无信号、那么为什么要 RHPOUT 生成信号?

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

    我们的产品需要立体声输出,现在只有左声道有声音,这是不能接受的。

    在 am6528上是 I2S 模式错误吗?  我没有 在版本说明中的"已知问题"中找到它。

    谢谢

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

    您可以共享测试过的 wav 文件吗?

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

    e2e.ti.com/.../4426.test.wav

    这不是这个 wav 文件的问题,我在我的旧产品(AM335x)中测试了它,这很好,我还从互联网下载了另一个立体 wav 文件,同样的行为。

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

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

    您好,丁圣浩

    为什么 I2S 模式下没有 rhpout 数据? 它是否是错误。

    谢谢

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

    请咨询平台供应商、了解音频源正确通道的无信号。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请咨询平台供应商,了解音频源正确通道的无信号。

     我不明白您对"平台供应商"的看法、am6528和 TLV320AIC23都来自 TI、对吗? 或者您发现 音频源(wave 文件)有问题?

    谢谢

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

    我属于 LPA、专注于音频编解码器支持。 到目前为止、您的问题是需要  am6528支持来帮助解决 仅在左声道中传输音频数据而在右声道中传输音频数据的问题。 修复后、我们可以继续检查 RHPOUT 中是否有声音。

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

    好的、明白了、,感谢您提供的信息。

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

    尊敬的 Kenn:

    您能否指出您要引用哪个文件来创建 DTS 文件? 请参阅以下链接进行参考:

    https://lore.kernel.org/linux-arm-kernel/9d22e2a9-ed36-8687-cc99-e0798bac4d68@ti.com/T/

    此外、您能否针对 AM335x 上的数据输出和帧同步使用示波器波形、在该波形中、音频似乎与 McASP 寄存器转储一起工作正常。

    据我所知、AM6548上的 MCASP 仅支持 DSP_b 格式。 请分享 DTS 文件、将 dsp_b 格式修改为 simple-audio-format、并分享示波器波形。

    此致、

    苏伦

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

    您好、Suren

    感谢您提供的信息,我们已确认您提供的链接的内容。

    此外,您能否在 AM335x 上获取数据输出和帧同步的示波器波形,其中音频似乎与 McASP 寄存器转储功能一同正常。

    C1-BCLK;C2-AXR0;C3-FS

    请分享 DTS 文件并将 dsp_b 格式修改为 simple-audio-format,并分享示波器波形。

    sound {
                    compatible = "simple-audio-card";
                    simple-audio-card,name = "AM65x-GHMI+";
                    simple-audio-card,widgets =
                            "Headphone", "Headphone Jack";
                    simple-audio-card,routing =
                            "Headphone Jack",       "LHPOUT",
                            "Headphone Jack",       "RHPOUT";
    
                    simple-audio-card,format = "dsp_b";
                    simple-audio-card,bitclock-master = <&sound_master>;
                    simple-audio-card,frame-master = <&sound_master>;
                    simple-audio-card,bitclock-inversion;
    
                    simple-audio-card,cpu {
                            sound-dai = <&mcasp1>;
                    };
    
                    sound_master: simple-audio-card,codec {
                            sound-dai = <&tlv320aic23>;
                            system-clock-frequency = <12000000>;
                    };
            };
    
    
    .........
    
    mcasp1_pins: mcasp1-pins {
                    pinctrl-single,pins = <
                            AM65X_IOPAD(0x0244, PIN_INPUT_PULLDOWN, 5) /* (AB28) PRG0_PRU1_GPO0.MCASP1_ACLKX */
                            AM65X_IOPAD(0x0248, PIN_INPUT_PULLDOWN, 5) /* (AC28) PRG0_PRU1_GPO1.MCASP1_AFSX */
                            AM65X_IOPAD(0x0254, PIN_INPUT_PULLDOWN, 5) /* (AA25) PRG0_PRU1_GPO4.MCASP1_AXR0 */
                    >;
            };
    
    .........
    
    tlv320aic23: tlv320aic23@1b {
                    #sound-dai-cells = <0>;
                    compatible = "ti,tlv320aic23";
                    reg = <0x1b>;
                    status = "okay";
    
                    /* Regulators 
                    AVDD-supply = <&codec_vcc_3v3>;
                    IOVDD-supply = <&gp_vcc_1v8>;
                    DRVDD-supply = <&codec_vcc_3v3>;
                    DVDD-supply = <&gp_vcc_1v8>;*/
            };
    ........
    
    &mcasp1 {
            #sound-dai-cells = <0>;
            status = "okay";
    
            pinctrl-names = "default";
            pinctrl-0 = <&mcasp1_pins>;
            op-mode = <0>;          /* MCASP_IIS_MODE */
            tdm-slots = <2>;
            /* 16 serializers */
            /* num-serializer = <10>;*/
            serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
                    1 0 0 0
                    0 0 0 0
                    0 0
            >;
            tx-num-evt = <32>;
            rx-num-evt = <32>;
    };

    C1-FS;C2-AXR0

    AM335x 平台列表中的相关 McASP1和编解码器寄存器如下所示:

    root@am335x-evm:~# devmem2 0x4803C0A0
    /dev/mem opened.
    Memory mapped at address 0xb6fdc000.
    Read at address  0x4803C0A0 (0xb6fdc0a0): 0x00000000
    root@am335x-evm:~# devmem2 0x4803C0A4
    /dev/mem opened.
    Memory mapped at address 0xb6f26000.
    Read at address  0x4803C0A4 (0xb6f260a4): 0x00000000
    root@am335x-evm:~# devmem2 0x4803C0A8
    /dev/mem opened.
    Memory mapped at address 0xb6f6c000.
    Read at address  0x4803C0A8 (0xb6f6c0a8): 0x00000000
    root@am335x-evm:~# devmem2 0x4803C0AC
    /dev/mem opened.
    Memory mapped at address 0xb6fce000.
    Read at address  0x4803C0AC (0xb6fce0ac): 0x00000000
    root@am335x-evm:~# devmem2 0x4803C0B0
    /dev/mem opened.
    Memory mapped at address 0xb6f45000.
    Read at address  0x4803C0B0 (0xb6f450b0): 0x00000060
    root@am335x-evm:~# devmem2 0x4803C0B4
    /dev/mem opened.
    Memory mapped at address 0xb6fbc000.
    Read at address  0x4803C0B4 (0xb6fbc0b4): 0x00008000
    root@am335x-evm:~# devmem2 0x4803C0B8
    /dev/mem opened.
    Memory mapped at address 0xb6f70000.
    Read at address  0x4803C0B8 (0xb6f700b8): 0x00000000
    root@am335x-evm:~# devmem2 0x4803C0BC
    /dev/mem opened.
    Memory mapped at address 0xb6f3a000.
    Read at address  0x4803C0BC (0xb6f3a0bc): 0x00000000
    root@am335x-evm:~# devmem2 0x4803C0C0
    /dev/mem opened.
    Memory mapped at address 0xb6f2a000.
    Read at address  0x4803C0C0 (0xb6f2a0c0): 0x0000010C
    root@am335x-evm:~# devmem2 0x4803C0C4
    /dev/mem opened.
    Memory mapped at address 0xb6f10000.
    Read at address  0x4803C0C4 (0xb6f100c4): 0x0000017F
    root@am335x-evm:~# devmem2 0x4803C0C8
    /dev/mem opened.
    Memory mapped at address 0xb6fd6000.
    Read at address  0x4803C0C8 (0xb6fd60c8): 0x00000000
    root@am335x-evm:~# devmem2 0x4803C0CC
    /dev/mem opened.
    Memory mapped at address 0xb6f32000.
    Read at address  0x4803C0CC (0xb6f320cc): 0x00000000
    
    --------------------------------------------------------------------
    root@am335x-evm:~# i2cdump -y -f 0 0x1b
    No size specified (using byte-data access)[   85.629665] omap_i2c 44e0b000.i2c: Arbitration lost
    
         0  1  2  3  4  5  6  7  8  9  a  b  c  d [   85.638401] omap_i2c 44e0b000.i2c: Arbitration lost
     e  f    0123456789abcdef
    00: XX XX [   85.647486] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.655923] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.673395] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.693442] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.713397] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.733462] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.753382] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.773427] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.793385] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.813428] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.833385] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.853411] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.873382] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.893415] omap_i2c 44e0b000.i2c: Arbitration lost
    XX    XXXXXXXXXXXXXXXX
    10: [   85.913465] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.933424] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.953373] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.973431] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   85.993383] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.013427] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.033377] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.053453] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.073394] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.093437] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.113391] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.133426] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.153372] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.173436] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.193384] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.213429] omap_i2c 44e0b000.i2c: Arbitration lost
    XX    XXXXXXXXXXXXXXXX
    20: [   86.233432] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.253416] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.273380] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.293419] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.313388] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.333425] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.353378] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.373429] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.393393] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.413428] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.433381] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.453415] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.473381] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.493423] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.513389] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.533416] omap_i2c 44e0b000.i2c: Arbitration lost
    XX    XXXXXXXXXXXXXXXX
    30: [   86.553419] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.573424] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.593398] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.613439] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.618820] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.643378] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.663393] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.683372] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.703383] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.723443] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.743397] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.763387] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.783383] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.803378] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.823383] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.843374] omap_i2c 44e0b000.i2c: Arbitration lost
    XX    XXXXXXXXXXXXXXXX
    40: [   86.863437] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.883373] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.903374] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.923381] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.943385] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.963383] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   86.983379] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   87.003378] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   87.023384] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   87.044138] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   87.063397] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   87.083375] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   87.103376] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   87.123631] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   87.143385] omap_i2c 44e0b000.i2c: Arbitration lost
    XX [   87.163390] omap_i2c 44e0b000.i2c: Arbitration lost
    XX    XXXXXXXXXXXXXXXX
    
    
    

    谢谢

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

    Suren、

    我比较了 AM335x 和 AM654x 的寄存器转储、但有区别、不确定 AM654x .dts 配置中有什么错误:

    R 例如名称

    偏移 AM335x    AM654x  
    5-12CtlGBLCTL A0h 0x0000 1F00
    TXMASK A4h  0xFFFFFFFF   0x0000FFFF  
    TXFMT A8h  0x0000 80f0

     bit[7:4]=fh:插槽大小为32位

    位[2:0]=0:不旋转

    0x00008074 位15:XRVRS=1 MSB 优先
    位[7:4] 7h:时隙大小为16位
    第2:0]=4位:右旋16位位置
    AFSXCTL ACH 0x0000 0100

    位[15:7]=2:2时隙(I2S 模式)

    位1=0: 外部生成的发送帧同步

    0x0000 0100

    位[15:7]-2:2时隙(I2S 模式)

    BIT1 = 0: 外部生成的发送帧同步

    ACLKXCTL B0h 0x0000 0000 位6=1发送使用的异步单独时钟和帧同步
    和接收段。
    位5=0 CLKXM:ACLKX 引脚提供外部发送时钟源
    0x0018 0000 位6=0:SYNC:发送时钟和帧同步提供
    和接收部分都有各自的时钟源。
    位5=0:CLKXM:ACLKX 引脚提供外部发送时钟源。
    AHCLKXCTL B4h 0x0000 8000 位15=1:来自可编程高时钟分频器输出的内部发送高频时钟源 0x0 位15=0:HCLKXM:来自 AHCLKX 引脚的外部发送高频时钟源。
               
    TXTDM B8h 0x03      
    TXSTAT C0h 0x156 位8:XERR    
    位3:XTDMSLOT
    位2:XCKFAIL。
    TXTDMSLOT C4h 0x0000 017F 复位期间的当前 XMT 时隙计数该寄存器的值为    
    0b0101111111 [0x17f]和复位0后
    TXCLKCHK C8h 0x00000000      
    XEVTCTL 寄存器 CCH 0x00000000      

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

    尊敬的 Kenn:

    我在您之前的回复中看到了 McASP 中的 MMR:

    McASP_TXFMCTL
    root@am65xx-ghmi:~ devmem2 0x02B100ac
    /dev/mem 打开。
    存储器映射在地址0xffffff991b0000。
    在地址0x02B100AC (0xff991b00ac):0x00000100处读取

    来自 TRM: 第12.5.4.2.3节

    帧同步模式-所选传输模式的相应帧同步生成模式在 MCASP_TXFMCTL[15-7] XMOD 位字段中定义、如下所示:

    –对于 DIT 模式(384个时隙)- MCASP_TXFMCTL[15-7] XMOD = 0x180

    对于 I2S 模式(2个 TDM 时隙)- MCASP_TXFMCTL[15-7] XMOD = 0x2

    –对于 TDM 模式(从3到32个 TDM 时隙)- MCASP_TXFMCTL[15-7]在0x3 - 0x20范围内设置 XMOD 位字段

    另外、XTDM 应该在其中包含0x00000003 、以指示两个时隙中的发送都是有效的。

    您也可以检查 XSTAT 来检查是否有任何错误位被设定。

    如果要向寄存器写入正确的值、是否可以确认以立体声模式播放输出?

    此致、

    苏伦  

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

    您好、Suren

     MCASP_TXFMCTL 的当前值为0x00000100、其 MCASP_TXFMCTL[15-7] XMOD = 0x2 (I2S 模式)、 您是否 要将其配置为 MCASP_TXFMCTL[15-7] XMOD = 0x3 (3个 TDM 时隙)?  将 MCASP_TXFMCTL 的值更改为0x00000180?

    如果是,我不明白你的意图。 lhpout 和 rhpout 需要两个插槽用于传输数据、  其余插槽的用途是什么?

    谢谢

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

    在 Tony 的帮助下、我们将 MCASP_TXTDM (0x02B100B8)寄存器的值配置为0x00000003、但 rhpout 仍然是噪声。

    谢谢

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

    我在 AM62-SK 板上进行了相同的测试。 这里的立体声、在播放音频读取编解码器寄存器期间、它显示编解码器是主器件。 音频结束后、再次读取编解码器寄存器、该寄存器将恢复默认值。  

    root@am62xx-evm:~# aplay -Dplughw:04426.test.wav&
    [1] 504056
    root@am62xx-evm:~# playing wave '4426.test.wav': signed 16 bit little endian, rate 44100Hz, Stereo
    root@am62xx-evm:~ e# i2cget -f 1 0x1b 8
    警告! 此程序会使您的 I2C 总线产生混乱、导致数据丢失甚至更糟糕!
    我将从器件文件/dev/i2c-1读取、芯片地址0x1b、数据地址
    0x08、使用读取字节数据。
    是否继续? [y/n] y (是/否)
    0xc0


    root@am62xx-evm:~ e# i2cget -f 1 0x1b 9
    警告! 此程序会使您的 I2C 总线产生混乱、导致数据丢失甚至更糟糕!
    我将从器件文件/dev/i2c-1读取、芯片地址0x1b、数据地址
    0x09、使用读取字节数据。
    是否继续? [y/n] y (是/否)
    0x40


    root@am62xx-evm:~#[4556.689706] ti-bcdma 485c0100.dma-控制器:chan1拆卸超时!
    ^C
    [1]+完成播放- Dplughw:0,0 4426.test.wav
    root@am62xx-evm:~ e# i2cget -f 1 0x1b 9
    警告! 此程序会使您的 I2C 总线产生混乱、导致数据丢失甚至更糟糕!
    我将从器件文件/dev/i2c-1读取、芯片地址0x1b、数据地址
    0x09、使用读取字节数据。
    是否继续? [y/n] y (是/否)
    0x00
    root@am62xx-EVM:~#

    但无论是从命令行 devmem2还是从 CCS JTAG 物理地址视图、都无法读取 McASP 寄存器。 甚至从 M4读取、都为0。

    root@am62xx-EVM:~#
    root@am62xx-EVM:~ devmem2 0x02b10000
    /dev/mem 已打开。EL3中出现未处理的异常。
    x30 = 0x000000009e780f88
    x0 = 0x0000ffffcb3b89a0
    X1 = 0x0000000000401030
    X2 = 0x000000000008
    X3 = 0x000000000000
    x4 = 0x000000000000
    x5 = 0x00003353a2c9
    x6 = 0x000000000000002e
    x7 = 0x00000000000a
    X8 = 0x0000000000000040
    x9 = 0xffffff80ffffc8
    x10 = 0x000000000000
    X11 = 0x0000ffffcb3b8820
    x12 = 0x00000000000c
    x13 = 0x0000000000000010
    X14 = 0x000000000001
    x15 = 0x000000000000
    x16 = 0x0000000000412068
    x17 = 0x0000ffff9c79ad58
    X18 = 0x000000000000
    x19 = 0x0000ff9c8d1000
    x20 = 0x000000001000
    X21 = 0x0000000002b10000
    x22 = 0x000000000002
    x23 = 0x000000000003
    x24 = 0x0000ffffcb3b89a0
    x25 = 0x0000ffffcb3b8b68
    x26 = 0x0000ff9c8d1000
    x27 = 0x0000000000412000
    x28 = 0x000000000000
    x29 = 0x0000ffffcb3b8930
    SCR_EL3 = 0x000000000000073d
    sctlr_EL3 = 0x000030cd183f
    CPTR_EL3 = 0x000000000000
    TCR_EL3 = 0x0000803520
    DAIF = 0x00000000000002c0
    MAIR_EL3 = 0x00000000004404ff
    SPSR_EL3 = 0x000060000000
    ELR_EL3 = 0x0000000000400ab4
    ttbr0_EL3 = 0x000000009e7910c0
    ESR_EL3 = 0x000092000010
    FAR_EL3 = 0x0000ffff9c8d1000
    spsr_el1 = 0x000020000000
    elr_el1 = 0x0000ff9c7f83d0
    spsr_abt = 0x000000000000
    spsr_und = 0x000000000000
    SPSR_IRQ = 0x000000000000
    spsr_fiq = 0x000000000000
    sctlr_el1 = 0x000034d4d91d
    actlr_el1 = 0x000000000000
    cpacr_el1 = 0x0000000000300000
    csselr_el1 = 0x000000000000
    SP_el1 = 0xFFff8000153dc000
    ESR_el1 = 0x000056000000
    ttbr0_el1 = 0x00008b916000
    ttbr1_el1 = 0x1ef6000082eb9000
    mair_el1 = 0x000c0400bb44ffff
    amair_el1 = 0x000000000000
    TCR_el1 = 0x00000032b5d03590
    tpidr_el1 = 0xff80006ec46000
    tpidr_el0 = 0x0000ff9c8a52f0
    tpidrro_el0 = 0x000000000000
    PAR_EL1 = 0x000000000000
    mpidr_el1 = 0x000080000000
    afsrc0_el1 = 0x000000000000
    afsr1_el1 = 0x000000000000
    contextidr_el1 = 0x000000000000
    vbar_el1 = 0xff800010010800
    cntp_ctl_el0 = 0x000000000005
    cntp_cval_el0 = 0x00000001e51eb6e0
    CNTV_ctl_el0 = 0x000000000000
    CNTV_cval_el0 = 0x000000000000
    cntkctl_el1 = 0x0000000000d6
    SP_el0 = 0x0000ffffcb3b8930
    ISR_el1 = 0x000000000040
    dacr32_el2 = 0x000000000000
    ifsr32_el2 = 0x000000000000
    cpuectlr_el1 = 0x0000000000000040
    cpumerrsr_el1 = 0x0000000008000239
    l2merrsr_el1 = 0x0000000010247508
    cpuactlr_el1 = 0x00001000090ca000

    探测信号:BCLK、WCLK、DIN:它采用突发格式、有一帧的32位。

    将 AM335x 和 AM654x 的 DTS 放在下面进行比较、提醒它们使用的是不同版本 SDK 的不同驱动程序。

    AM335x

     声音{

                           兼容="ti、am33xx-evm-audio";

                           TI、模型="AM33xx_EVM";

                           ti、audio-codec =<&TLV320AIC23>;

                           TI、McASP-控制器=<&MCASP1>;

                           ti、codec-clock-rate =<12000000>;

                           TI、音频路由=

                                   "耳机插孔"、"HPLOUT"、       

                                   "耳机插孔"、      "HPROUT";

                   };

     

    &McASP1{

                   pinctrl-names ="默认";

                   PINCTRL-0 =<&MCASP1_PINS>;

                    状态="可以";

                    OP-MODE =<0>;         /* MCASP_IIS_MODE */

                   TDM-slots =<2>;

                   /* 16串行器*/

                   serial-dir =</* 0:非活动、1:TX、2:Rx */

                           1 0 0 0

                   >;

                   tx-num-evt =<32>;

                   Rx-num-evt =<32>;

    };

      TLV320AIC23:TLV320AIC23@1b{

                                   兼容="ti、TLV320AIC23";

                                   寄存器=<0x1b>;

                                   状态="可以";

     

                                   /*稳压器*/

                                   AVDD-SUPPLY =<&vaux2_reg>;

                                   IOVDD-SUPPLY =<&vaux2_reg>;

                                   DRVDD-SUPPLY =<&vaux2_reg>;

                                   DVDD-SUPPLY =<和 VBAT>;

                           };

     AM654x

     声音{

                   兼容="简单音频卡";

                   simple-audio-card、name ="AM65x-EVM";

                   simple-audio 卡、小工具=

                           "耳机"、"耳机插孔";

                   简单音频卡、路由=

                           "耳机插孔"、      "LHPOUT"、

                           "耳机插孔"、      "RHPOUT";

                    simple-audio-card、format ="DSP_B";

                   simple-audio-card、bitclock-master =<&sound_master>;

                   simple-audio-card、frame-master =<&sound_master>;

                   简单音频卡、位时钟反转;

                    简单音频卡、CPU{

                           sound-Dai =<&MCASP1>;

                   };

                    sound_master:simple-audio-card、codec {

                           Sound-Dai =<&TLV320AIC23>;

                           系统时钟频率=<12000000>

                   };

           };

     .........

     MCASP1_PINS:MCASP1-引脚{

                   PINCCTRL-SINGLE、PINS =<

                           AM65X_IOPAD (0x0244、PIN_INPUT_PULLDOWN、5)/*(AB28) PRG0_PRU1_GPO0.McASP1_ACLKX */

                           AM65X_IOPAD (0x0248、PIN_INPUT_PULLDOWN、5)/*(AC28) PRG0_PRU1_GPO1.McASP1_AFSX */

                           AM65X_IOPAD (0x0254、PIN_INPUT_PULLDOWN、5)/*(AA25) PRG0_PRU1_GPO4.McASP1_AXR0 */

                   >;

           };

    .........

     

    TLV320AIC23:TLV320AIC23@1b{

                   #sound-Da-cells =<0>;

                   兼容="ti、TLV320AIC23";

                   寄存器=<0x1b>;

                   状态="可以";

     

                   /*调节器

                   AVDD-SUPPLY =<&CODEC_VCC_3V3>;

                   IOVDD-SUPPLY =<&gp_VCC_1v8>;

                   DRVDD 电源=<& CODEC_VCC_3V3>;

                   DVDD-SUPPLY =<&gp_VCC_1v8>;*/

           };

    附录四.

     &McASP1{

           #sound-Da-cells =<0>;

           状态="可以";

     

           pinctrl-names ="默认";

           PINCTRL-0 =<&MCASP1_PINS>;

           OP-MODE =<0>;         /* MCASP_IIS_MODE */

           TDM-slots =<2>;

           /* 16个串行器*/

           /* num-serializer =<10>;*/

           serial-dir =</* 0:非活动、1:TX、2:Rx */

                   1 0 0 0

                   0 0 0 0 0

                   0 0 0

           >;

           tx-num-evt =<32>;

           Rx-num-evt =<32>;

    };  

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

    盛浩

    可以通过 I2C 读取 AIC23B 寄存器吗?

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

    你好,托尼

    当然、数据表中的2线意味着 i2c。 以下链接可以告诉您更多信息。

    Arduino 与 I2C 协议(两线)指南| Arduino 文档

    @Peter 请将您的评论添加到2线中。 谢谢。

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

    盛浩

    我问 AIC23B 寄存器是否只能在 I2C 模式下写入、不能通过 I2C 读取寄存器。 如果是这样、可以解释 i2cdump、i2cget 不起作用。  

    AIC23可能太老了、让今天的工程师无法了解细节。

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

    Kenn,

    建议提供示波器波形、包括 FS、CLK、DATA 和详细的频率信息。 第一个 AM335x 波形看起来很奇怪、一个帧中有128位? 在 AIC23数据表中未找到此类配置。  

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

    好的、请看下面的照片:

    C1-- BCLK;C2-- AXR0;C4-- FS

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

    我想我发现了这个问题从 wave form ,不知道哪里导致了错误,但可以给你一个提示,应该是驱动程序配置错误。