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.

[参考译文] TAS2563:TAS2563:48kHz 24位的寄存器设置-单声道输出、2个立体声输入(PDM)-字节序错误

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1373955/tas2563-tas2563-register-settings-for-48khz-24-bits---mono-out-2x-stereo-in-pdm---wrong-endianess

器件型号:TAS2563
主题中讨论的其他器件: PCA9555TAS2X63EVM

工具与软件:

您好!

(https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1328857/tas2563-register-settings-for-48khz-24-bits---mono-out-2x-stereo-in-pdm -很抱歉耽误了时间、我们还得再处理其他问题)

我很高兴地说、我们成功地在电路板上实施了 TAS2563。 音频回放和大多数其他工作正常。 但我们有 PDM mics 的麻烦:

出于某种原因、字节顺序似乎相反。 附加的文件(test17.raw)记录为 S16_LE、但如果我使用记录的设置以 audacity 打开它、则会失真。 但是:如果我使用导入它(原始数据)

-有符号16位 PCM

-大端字节序(显然与录音不匹配

- 4个通道

- 48000 Hz

一切都如预期的那样、多指标类集调查器工作正常。

当然、录制的.wav 文件也已损坏。

那么、我的问题是:如何纠正录制的字节顺序? 是 PPC3中的设置、寄存器设置(regbin)、器件树中还是 ALSA 系统中的条目?

Audacity 截屏:

小端字节序:

大端字节序:

文件 test17.raw 记录如下:

# tinymix set "TASDEVICE Profile id" 5.
# arecord -t raw -c4 -fs16_Le -r 48000 -v nfsdrive/tas2563/audiore
连线/测试17.RAW --device="hw:0,0"
记录原始数据'nfsdrive/tas2563/audiorecords/test17.raw':有符号16位 littl
e 端字节序、速率48000Hz、通道4
硬件 PCM 卡0 'PCM DPP-LMB-AR 声卡 tas2563'设备0子设备0
其设置为:
STREAM:捕获
访问:rw_interleaved
格式:S16_LE
子格式:std.
频道:4.
速率:48000
确切费率:48000(48000/1)
MSbits:16.
Buffer_size:24000
Period_size : 6000
Period_Time:125000
tstamp_mode:无
tstamp_type:单调
period_step:1.
Avail_min:6000
period_event:0
START_THRESHOLD : 1.
STOP_THRESHOLD : 24000
SILENCE_THRESHOLD:0
SILENCE_SIZE:0
边界:6755399441055744000
Appl_ptr:0
hw_ptr:0
此致、
Christian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Christian:

    I2S 是一种 MSB 优先的协议、使得大端字节序更加实用。 我认为这个错误只是 Audacity 的一个问题、为了正确解码音频、需要进行翻转。 器件本身中没有任何东西可能导致此类问题。

    此致、
    Jeff McPherson

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

    尊敬的 Jeff McPherson:

    感谢您的答复。

    但是、如果数据流是正确的并且被设计成这样的方式、我如何记录常见的.wav 文件?

    如果我使用命令 arecord -f dat test.wav 录制文件(等于16位48000 Hz 立体声)、我将得到一个字节顺序错误的失真文件。

    以下是我的设备树设置:

    /{
    sound_tas2563:声音- tas2563 {
    状态="正常";
    Compatible ="简单音频卡";
    simple-audio-card、name = DPP-LMB-AR 声卡 TAS2563";
    simple-audio-card、format ="I2S";
    简单音频卡、位时钟反转;
    simple-audio-card、frame-master =<&tas2563cpu>;
    simple-audio-card、bitclock-master =<&tas2563cpu>;

    tas2563cpu:simple-audio-card、CPU {
    Sound-Dai =<&sai3>;
    系统时钟方向="OUT";
    };

    简单音频卡、编解码器{
    Sound-Dai =(&tas2563>;
    系统时钟方向="IN";
    };
    };
    };

    所说的3{\f151。}
    FSL、MODE ="I2S-MASTER";
    分配的时钟父级=<&clk IMX8MP_AUDIO_PLL1_OUT>;
    分配的时钟速率=<12288000>;
    状态="正常";
    };

    &i2c3{
    tas2563: tasdevice@4c {
    状态="正常";
    #sound-Di-cells =<0>;
    Compatible ="ti、tas2563";
    REG =<0x4c>;
    RESET-GPIO =<&P 9555 7 GPIO_ACTIVE_LOW>;
    };
    };

    此致、

    Christian

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

    您好、Christian:

    我怀疑这是器件树的问题。 我想您已经证明了字节序是问题所在、这与器件本身无关。

    我已经在我们的软件团队中进行了循环、看看他们是否可以对驱动程序进行评论以及是否可以对其进行调整。

    此致、
    Jeff McPherson

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

    您好、Christian:

    请录制格式为  S16_BE (大端字节序)、而非  S16_LE (小端字节序)的 wav 文件。

    谢谢

    Kevin

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

    Kevin 老师、您好!

    感谢您的答复!

    您能给我一个提示、我如何才能做到这一点吗? 100毫秒

    # arecord -t raw -c4 -fs16_be -r48000 -v test.raw --device="HW:0、0"

    或者

    # arecord -c4 -fs16_be -r48000 -v test.wav -- device="HW:0、0"

    我收到以下消息:

    记录波"test.raw":有符号16位大端字节序,速率48000Hz,通道4.
    ARecord:set_params:1352:样本格式不可用
    可用格式:
    - S16_LE
    - S24_LE
    - S32_LE

    此致、

    Christian

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

    您是否可以  在 tasdevice.h 中添加宏定义?

    原始:

    #define TASDEVICE_FORMATS	(SNDRV_PCM_FMTBIT_S16_LE | \
    	SNDRV_PCM_FMTBIT_S20_3LE | \
    	SNDRV_PCM_FMTBIT_S24_3LE | \
    	SNDRV_PCM_FMTBIT_S24_LE | \
    	SNDRV_PCM_FMTBIT_S32_LE)

    更改为:

    #define TASDEVICE_FORMATS	(SNDRV_PCM_FMTBIT_S16_LE | \
    	SNDRV_PCM_FMTBIT_S20_3LE | \
    	SNDRV_PCM_FMTBIT_S24_3LE | \
    	SNDRV_PCM_FMTBIT_S24_LE | \
    	SNDRV_PCM_FMTBIT_S32_LE | \
    	SNDRV_PCM_FMTBIT_S16_BE | \
    	SNDRV_PCM_FMTBIT_S24_BE | \
    	SNDRV_PCM_FMTBIT_S32_BE)

    谢谢

    Kevin

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

    Kevin 老师、您好!

    我按照您的建议更改了 tasdevice.h (第61行)中的定义。

    后面的字中

    # arecord -t raw -f s16_be -r 48000 -c 4 test.raw

    工作原理。 如果我将其作为原始数据 S16_LE 16bits 48kHz 导入到 Audacity 中、则会得到麦克风信号、而通道1和3上的麦克风信号会按预期变为1和2。

    后面的字中

    # arecord -f s16_be -r 48000 -c 4 test.raw

    会拒绝
    记录波"test.raw":有符号16位大端字节序,速率48000Hz,通道4.
    arecord:Begin_Wave:2679:Wave 不支持 S16_BE 格式...

    如果我错了、请更正我的问题、但这不是 ALSA 期望数据位于 S16_LE 中但在 S16_BE 中接收数据的问题根源?

    有一点奇怪的是、我必须使用 S16_BE 设置进行记录才能接收 S16_LE 数据...

    您是否认为可以更改驱动程序或 ALSA 配置以匹配字节序?

    此致、

    Christian

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

    您好、Christian

    S16_LE 应该是正确的、在我们的器件中、始终以 MSB 在前、  

     "令人惊讶的是、通道1和3上的麦克风信号符合预期、而不是通道1和2上的麦克风信号"

    问题应该出在 TX 时隙长度设置上、它是32位而不是16位

    请共享 您的寄存器 转储

    谢谢

    Kevin

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

    Kevin 老师、您好!

    感谢您的回答!

    目前、我正在使用 tas2781-linux-driver 中的 tas2563-1amp-reg.json 设置(ID 5)。

    请查找以下文件:

    recgcfg_list (cat regcfg_list):

    CONF 05:05-PDM-rec-I2S-48kHz-32BIT-TX-SLOT-0-1-mic-SLOT-3-ref

    块类型:pre_shutdown device idx = 0x00
    单字节:
    BOOK0x00 PAGE0x00 REG0x02值= 0x0E
    块类型:PRE_POWER_UP 器件 idx = 0x01
    字段:
    BOOK0x00 PAGE0x01 REG0x02 MASK0x1e 值= 0x00
    单字节:
    BOOK0x00 PAGE0x00 REG0x06值= 0x09
    BOOK0x00 PAGE0x00 REG0x08值= 0x7E
    BOOK0x00 PAGE0x00 REG0x0c 值= 0x40
    BOOK0x00 PAGE0x00 REG0x0b 值= 0x42
    BOOK0x00 PAGE0x00 REG0x0d 值= 0x44
    BOOK0x00 PAGE0x00 REG0x30值= 0x99
    BOOK0x00 PAGE0x00 REG0x0a 值= 0x13
    BOOK0x00 PAGE0x00 REG0x41值= 0x06
    BOOK0x00 PAGE0x00 REG0x07值= 0x02
    BOOK0x00 PAGE0x00 REG0x42值= 0x18
    BOOK0x00 PAGE0x00 REG0x02值= 0x00

    PAGE00-REGDUMP:

    地址:0x4c

    Chn0B0x00P0x00R0x00:0x00
    Chn0B0x00P0x00R0x01:0x00
    Chn0B0x00P0x00R0x02:0x0E
    Chn0B0x00P0x00R0x03:0x13
    Chn0B0x00P0x00R0x04:0xc6
    Chn0B0x00P0x00R0x05:0x22
    Chn0B0x00P0x00R0x06:0x09
    Chn0B0x00P0x00R0x07:0x02
    Chn0B0x00P0x00R0x08:0x7E
    Chn0B0x00P0x00R0x09:0x10
    Chn0B0x00P0x00R0x0a:0x13
    Chn0B0x00P0x00R0x0b:0x42
    Chn0B0x00P0x00R0x0c:0x40
    Chn0B0x00P0x00R0x0d:0x44
    Chn0B0x00P0x00R0x0e:0x05
    Chn0B0x00P0x00R0x0F:0x06
    Chn0B0x00P0x00R0x10:0x07
    Chn0B0x00P0x00R0x11:0x27
    Chn0B0x00P0x00R0x12:0x13
    Chn0B0x00P0x00R0x13:0x76
    Chn0B0x00P0x00R0x14:0x01
    Chn0B0x00P0x00R0x15:0x2e
    Chn0B0x00P0x00R0x16:0x60
    Chn0B0x00P0x00R0x17:0x0E
    Chn0B0x00P0x00R0x18:0x0c
    Chn0B0x00P0x00R0x19:0x00
    Chn0B0x00P0x00R0x1a:0xFC
    Chn0B0x00P0x00R0x1b:0xa6
    Chn0B0x00P0x00R0x1c:0xdf
    Chn0B0x00P0x00R0x1d:0xef
    Chn0B0x00P0x00R0x1e:0xff
    Chn0B0x00P0x00R0x1F:0x04
    Chn0B0x00P0x00R0x20:0x00
    Chn0B0x00P0x00R0x21:0x00
    Chn0B0x00P0x00R0x22:0x80
    Chn0B0x00P0x00R0x23:0x00
    Chn0B0x00P0x00R0x24:0x04
    Chn0B0x00P0x00R0x25:0x00
    Chn0B0x00P0x00R0x26:0x11
    Chn0B0x00P0x00R0x27:0x80
    Chn0B0x00P0x00R0x28:0x00
    Chn0B0x00P0x00R0x29:0xdc
    Chn0B0x00P0x00R0x2A:0x51
    Chn0B0x00P0x00R0x2b:0xd0
    Chn0B0x00P0x00R0x2c:0x7E
    Chn0B0x00P0x00R0x2d:0xda
    Chn0B0x00P0x00R0x2e:0x00
    Chn0B0x00P0x00R0x2F:0xa6
    Chn0B0x00P0x00R0x30:0x99
    Chn0B0x00P0x00R0x31:0x40
    Chn0B0x00P0x00R0x32:0x81
    Chn0B0x00P0x00R0x33:0x34
    Chn0B0x00P0x00R0x34:0x4b
    Chn0B0x00P0x00R0x35:0xa4
    Chn0B0x00P0x00R0x36:0x00
    Chn0B0x00P0x00R0x37:0x00
    Chn0B0x00P0x00R0x38:0x12
    Chn0B0x00P0x00R0x39:0x0c
    Chn0B0x00P0x00R0x3a:0xbe
    Chn0B0x00P0x00R0x3b:0x58
    Chn0B0x00P0x00R0x3c:0x58
    Chn0B0x00P0x00R0x3d:0x08
    Chn0B0x00P0x00R0x3e:0x10
    Chn0B0x00P0x00R0x3F:0x00
    Chn0B0x00P0x00R0x40:0x76
    Chn0B0x00P0x00R0x41:0x06
    Chn0B0x00P0x00R0x42:0x18
    Chn0B0x00P0x00R0x43:0xc0
    Chn0B0x00P0x00R0x44:0x10
    Chn0B0x00P0x00R0x45:0x21
    Chn0B0x00P0x00R0x46:0x00
    Chn0B0x00P0x00R0x47:0x51
    Chn0B0x00P0x00R0x48:0x2C
    Chn0B0x00P0x00R0x49:0x51
    Chn0B0x00P0x00R0x4a:0x60
    Chn0B0x00P0x00R0x4b:0x00
    Chn0B0x00P0x00R0x4c:0x00
    Chn0B0x00P0x00R0x4d:0x00
    Chn0B0x00P0x00R0x4e:0x00
    Chn0B0x00P0x00R0x4F:0x00
    Chn0B0x00P0x00R0x50:0x00
    Chn0B0x00P0x00R0x51:0x00
    Chn0B0x00P0x00R0x52:0x00
    Chn0B0x00P0x00R0x53:0x00
    Chn0B0x00P0x00R0x54:0x00
    Chn0B0x00P0x00R0x55:0x00
    Chn0B0x00P0x00R0x56:0x00
    Chn0B0x00P0x00R0x57:0x00
    Chn0B0x00P0x00R0x58:0x00
    Chn0B0x00P0x00R0x59:0x00
    Chn0B0x00P0x00R0x5a:0x00
    Chn0B0x00P0x00R0x5b:0x00
    Chn0B0x00P0x00R0x5c:0x00
    Chn0B0x00P0x00R0x5d:0x00
    Chn0B0x00P0x00R0x5e:0x00
    Chn0B0x00P0x00R0x5F:0x00
    Chn0B0x00P0x00R0x60:0x00
    Chn0B0x00P0x00R0x61:0x00
    Chn0B0x00P0x00R0x62:0x00
    Chn0B0x00P0x00R0x63:0x00
    Chn0B0x00P0x00R0x64:0x00
    Chn0B0x00P0x00R0x65:0x00
    Chn0B0x00P0x00R0x66:0x00
    Chn0B0x00P0x00R0x67:0x00
    Chn0B0x00P0x00R0x68:0x00
    Chn0B0x00P0x00R0x69:0x00
    Chn0B0x00P0x00R0x6a:0x00
    Chn0B0x00P0x00R0x6b:0x00
    Chn0B0x00P0x00R0x6c:0x00
    Chn0B0x00P0x00R0x6d:0x00
    Chn0B0x00P0x00R0x6e:0x00
    Chn0B0x00P0x00R0x6F:0x00
    Chn0B0x00P0x00R0x70:0x00
    Chn0B0x00P0x00R0x71:0x00
    Chn0B0x00P0x00R0x72:0x00
    Chn0B0x00P0x00R0x73:0xf0
    Chn0B0x00P0x00R0x74:0x00
    Chn0B0x00P0x00R0x75:0x0F
    Chn0B0x00P0x00R0x76:0x00
    Chn0B0x00P0x00R0x77:0x00
    Chn0B0x00P0x00R0x78:0x80
    Chn0B0x00P0x00R0x79:0x00
    Chn0B0x00P0x00R0x7a:0x00
    Chn0B0x00P0x00R0x7b:0x00
    Chn0B0x00P0x00R0x7c:0x00
    Chn0B0x00P0x00R0x7d:0x10
    Chn0B0x00P0x00R0x7e:0xb4
    Chn0B0x00P0x00R0x7F:0x00
    ===捕获 smartpa reg end ===

    PAGE01-REGDUMP

    地址:0x4c

    Chn0B0x00P0x01R0x00:0x00
    Chn0B0x00P0x01R0x01:0x00
    Chn0B0x00P0x01R0x02:0x20
    Chn0B0x00P0x01R0x03:0x44
    Chn0B0x00P0x01R0x04:0x80
    Chn0B0x00P0x01R0x05:0x42
    Chn0B0x00P0x01R0x06:0x01
    Chn0B0x00P0x01R0x07:0x24
    Chn0B0x00P0x01R0x08:0x40
    Chn0B0x00P0x01R0x09:0x00
    Chn0B0x00P0x01R0x0a:0x52
    Chn0B0x00P0x01R0x0b:0x10
    Chn0B0x00P0x01R0x0c:0x48
    Chn0B0x00P0x01R0x0d:0x02
    Chn0B0x00P0x01R0x0e:0x68
    Chn0B0x00P0x01R0x0F:0x00
    Chn0B0x00P0x01R0x10:0x40
    Chn0B0x00P0x01R0x11:0x12
    Chn0B0x00P0x01R0x12:0x00
    Chn0B0x00P0x01R0x13:0x00
    Chn0B0x00P0x01R0x14:0x00
    Chn0B0x00P0x01R0x15:0x00
    Chn0B0x00P0x01R0x16:0x40
    Chn0B0x00P0x01R0x17:0x00
    Chn0B0x00P0x01R0x18:0x00
    Chn0B0x00P0x01R0x19:0x02
    Chn0B0x00P0x01R0x1a:0x00
    Chn0B0x00P0x01R0x1b:0x01
    Chn0B0x00P0x01R0x1c:0x08
    Chn0B0x00P0x01R0x1d:0x00
    Chn0B0x00P0x01R0x1e:0x00
    Chn0B0x00P0x01R0x1F:0x60
    Chn0B0x00P0x01R0x20:0x03
    Chn0B0x00P0x01R0x21:0x00
    Chn0B0x00P0x01R0x22:0x01
    Chn0B0x00P0x01R0x23:0x00
    Chn0B0x00P0x01R0x24:0x00
    Chn0B0x00P0x01R0x25:0x00
    Chn0B0x00P0x01R0x26:0x00
    Chn0B0x00P0x01R0x27:0x00
    Chn0B0x00P0x01R0x28:0x10
    Chn0B0x00P0x01R0x29:0x10
    Chn0B0x00P0x01R0x2A:0x02
    Chn0B0x00P0x01R0x2b:0x00
    Chn0B0x00P0x01R0x2c:0x20
    Chn0B0x00P0x01R0x2d:0x01
    Chn0B0x00P0x01R0x2e:0x09
    Chn0B0x00P0x01R0x2F:0x01
    Chn0B0x00P0x01R0x30:0x30
    Chn0B0x00P0x01R0x31:0x00
    Chn0B0x00P0x01R0x32:0x80
    Chn0B0x00P0x01R0x33:0x00
    Chn0B0x00P0x01R0x34:0x00
    Chn0B0x00P0x01R0x35:0x00
    Chn0B0x00P0x01R0x36:0x00
    Chn0B0x00P0x01R0x37:0x00
    Chn0B0x00P0x01R0x38:0x00
    Chn0B0x00P0x01R0x39:0x00
    Chn0B0x00P0x01R0x3a:0x00
    Chn0B0x00P0x01R0x3b:0x12
    Chn0B0x00P0x01R0x3c:0x48
    Chn0B0x00P0x01R0x3d:0x10
    Chn0B0x00P0x01R0x3e:0x10
    Chn0B0x00P0x01R0x3F:0x01
    Chn0B0x00P0x01R0x40:0x00
    Chn0B0x00P0x01R0x41:0x00
    Chn0B0x00P0x01R0x42:0x00
    Chn0B0x00P0x01R0x43:0x00
    Chn0B0x00P0x01R0x44:0x00
    Chn0B0x00P0x01R0x45:0x00
    Chn0B0x00P0x01R0x46:0x00
    Chn0B0x00P0x01R0x47:0x00
    Chn0B0x00P0x01R0x48:0x00
    Chn0B0x00P0x01R0x49:0x00
    Chn0B0x00P0x01R0x4a:0x00
    Chn0B0x00P0x01R0x4b:0x00
    Chn0B0x00P0x01R0x4c:0x00
    Chn0B0x00P0x01R0x4d:0x00
    Chn0B0x00P0x01R0x4e:0x00
    Chn0B0x00P0x01R0x4F:0x00
    Chn0B0x00P0x01R0x50:0x00
    Chn0B0x00P0x01R0x51:0x00
    Chn0B0x00P0x01R0x52:0x00
    Chn0B0x00P0x01R0x53:0x00
    Chn0B0x00P0x01R0x54:0x00
    Chn0B0x00P0x01R0x55:0x00
    Chn0B0x00P0x01R0x56:0x00
    Chn0B0x00P0x01R0x57:0x00
    Chn0B0x00P0x01R0x58:0x00
    Chn0B0x00P0x01R0x59:0x00
    Chn0B0x00P0x01R0x5a:0x00
    Chn0B0x00P0x01R0x5b:0x00
    Chn0B0x00P0x01R0x5c:0x00
    Chn0B0x00P0x01R0x5d:0x00
    Chn0B0x00P0x01R0x5e:0x00
    Chn0B0x00P0x01R0x5F:0x00
    Chn0B0x00P0x01R0x60:0x00
    Chn0B0x00P0x01R0x61:0x00
    Chn0B0x00P0x01R0x62:0x00
    Chn0B0x00P0x01R0x63:0x00
    Chn0B0x00P0x01R0x64:0x00
    Chn0B0x00P0x01R0x65:0x00
    Chn0B0x00P0x01R0x66:0x00
    Chn0B0x00P0x01R0x67:0x00
    Chn0B0x00P0x01R0x68:0x00
    Chn0B0x00P0x01R0x69:0x00
    Chn0B0x00P0x01R0x6a:0x00
    Chn0B0x00P0x01R0x6b:0x00
    Chn0B0x00P0x01R0x6c:0x00
    Chn0B0x00P0x01R0x6d:0x00
    Chn0B0x00P0x01R0x6e:0x00
    Chn0B0x00P0x01R0x6F:0x00
    Chn0B0x00P0x01R0x70:0x00
    Chn0B0x00P0x01R0x71:0x00
    Chn0B0x00P0x01R0x72:0x00
    Chn0B0x00P0x01R0x73:0x00
    Chn0B0x00P0x01R0x74:0x00
    Chn0B0x00P0x01R0x75:0x00
    Chn0B0x00P0x01R0x76:0x00
    Chn0B0x00P0x01R0x77:0x00
    Chn0B0x00P0x01R0x78:0x00
    Chn0B0x00P0x01R0x79:0x00
    Chn0B0x00P0x01R0x7a:0x00
    Chn0B0x00P0x01R0x7b:0x00
    Chn0B0x00P0x01R0x7c:0x00
    Chn0B0x00P0x01R0x7d:0x00
    Chn0B0x00P0x01R0x7e:0x00
    Chn0B0x00P0x01R0x7F:0x00
    ===捕获 smartpa reg end ===

    此致、

    Christian

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

    Kevin 老师、您好!

    由于您上周没有回复我的帖子-您是否有机会使用 Linux 驱动程序向 ALSA 获取 PDM 麦克风数据?

    顺便说一下:上一篇文章中关于通道1和3的问题是由一些 ALSA 设置导致的:我正在使用设置。 在配置文件中使用 S16_BE 可实现通道1和3上的数据以及 S16_SE 可按预期将数据置于通道1和2上。

    但是:所有其他设置都以错误的字节顺序记录数据:使用 S16_LE (arecord )格式记录数据会使用 S16_BE ,反之亦然-无论 asound.conf 中的设置如何-唯一的区别是原始文件中的通道。

    因此、目前无法录制一个简单的.wav 文件。

    通道1和2上接收数据的设置(字节顺序错误的位)如下:

    pcm.test{
    键入 dsnoop
    IPC_KEY 123456
    从{
    PCM"硬件:0、0"
    通道4
    格式 S16_LE
    速率48000
    }
    }

    使用>arecord -t raw -f s16_le -r 48000 -c 4 filename.raw<录制数据并使用以下设置将其导入 Audacity 会产生可用的音频数据、但正如您所看到的、字节顺序与 arecord 中的设置不匹配。 因此、如果不对音频流进行非常严重的黑客攻击、就不可能在 Linux 中进行音频录制。 标准.wav 文件已损坏。

    期待您的专业支持。

    此致、

    Christian

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

    您好、Christian:

    很抱歉、由于我上周在度假、我将转至升浩来回答。

    谢谢

    Kevin

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

    嗨、Guy

    请尝试将 B0P0R0xA:TX_OFFSET 设置为0、2、3、4、5 6、7

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

    您好、感谢您的回答。

    只是为了确保我正确理解了您:

    我应该尝试不同的设置0x0、0x2、0x3、0x4、0x5、 寄存器 B0P0R0xA:TX_OFFSET 中的0x6、0x7并查看它们之间的差异?

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

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

    您好!

    我尝试了不同的设置- TX_EDGE 和 TX_FILL (之前的设置为0x13)似乎没有任何区别。 TX_OFFSET[2:0]似乎会将数据向后移动、但不会更改字节顺序-如果与 BIG ENDIAN 一起导入、其效果会降低信号。

    使用录制了以下图片

    arecord -t raw -f S16_LE -r 48000 -c 4 -d 2 filename.raw

    前4个通道显示了使用小 ENDIAN 导入的原始文件、以及使用大 ENDIAN 导入的通道5至8。 其他导入设置与先前某个帖子的屏幕截图所示相同。

    0x0:

    0x2:

    0x3:

    0x4:

    0x5:

    0x6:

    0x7:

    0x13:

    此致、

    Christian

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

    嗨、Guy、

    感谢您的验证。 请停止尝试。

    您是否可以   使用默认的  TX_OFFSET 设置上传 wav 文件?

    根据 Chn0B0x00P0x00R0x11:0x27、似乎没有检测到采样率、位宽为64位。

    请使用示波器测量 bck 和 ws clk、并在此处分享波形。

    此外、请检查 PMIC 是否具有字节序的一些设置。  

    此外、您共享的寄存器转储不在工作模式下。 请使用以下命令:

    arecord -t raw -f S16_LE -r 48000 -c 4 -d 2 filename.raw &  //&是强制命令在后台运行

    然后转储 book0page0寄存器  

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

    您好!

    感谢您的回答!

    请在 https://www.demmel.com/nc/index.php/s/AGM5z3DzMSF9dZx 上找到请求的文件

    zip 存档文件包含 regdump (20240708_regdump_PAGE00.txt)、同时录制包含相应的.RAW 文件

    arecord -t raw -f S16_LE -r 48000 -c 4 TEST_A13_regdump.raw -d 5.

    另一个文件记录为.wav、使用录制

    arecord -f s16_le -r 48000 -c 4 test_a13_regdump.wav -d 5.

    和 regbin 设置(regbin_a13.txt)。

    我们使用了两种 Infineon IM72D128V01麦克风、但我发现没有调整字节顺序的可能-请在此处查找数据表:

    https://www.infineon.com/dgdl/Infineon-IM72D128-DataSheet-v01_01-EN.pdf?fileId=8ac78c8c80027ecd0180612a60277e10

    示波器测量将随附一个额外的帖子。 只是为了确保:I2S 位时钟:SBCLK1 (QFN 引脚6)和 I2S 帧同步:TAS2563上的 FSYNC (QFN 引脚5)、是否正确?

    我们使用 QFN 封装。

    此致、

    Christian

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

    您好!

    请查找各种时间分辨率的示波器图像。

    CH1为 SBCLK1、CH2为 FSYNC

    测量是在音频录制期间进行的。

    此致、

    Christian

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

    嗨、Guy、

    1.  在运行 ARecord 之前、尝试设置 BOOK0x00 PAGE0x00 REG0x02值= 0x70、如果现在起作用、则恢复此设置、然后重试
    2. 您是否可以尝试以下命令、 arecord -t raw -f s32_le -r 48000 -c 2 test.raw &//注意:&可以在后台推送 arecord 工作
    3. 再需要确认 PDM 是否支持小端字节序设置
    4. 至于寄存器转储、您提供的寄存器转储不处于工作模式、b0p0r2=0xe。 提示 tas2563是关闭电源。 请勿在 arecord 命令中追加&。

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

    您好!

    广告1:我不完全理解您的建议-我所做的是:

    -将0x70写入寄存器0x02并记录:没有显示任何效果

    -更改 regbin 文件- pre_power_up 的最后一个条目为 BOOK0x00 PAGE0x00 REG0x02值= 0x70:效果在播放上有一点点失真(有点像抖动),在记录上是相同的,但在字节序上没有。 我已按照您所写的内容恢复此设置。 我当前的 regbin 设置是(和以前一样):

    Conf06: 06-PDM-rec

    块类型:pre_shutdown   device idx = 0x00
          单字节:
             BOOK0x00 PAGE0x00 REG0x02值= 0x0E
             BOOK0x00 PAGE0x00 REG0x41值= 0x46
    块类型:PRE_POWER_UP   器件 idx = 0x01
          字段:
             BOOK0x00 PAGE0x01 REG0x02 MASK0x1e 值= 0x00
          单字节:
             BOOK0x00 PAGE0x00 REG0x06值= 0x09
             BOOK0x00 PAGE0x00 REG0x08值= 0x7E
             BOOK0x00 PAGE0x00 REG0x0b 值= 0x40
             BOOK0x00 PAGE0x00 REG0x0c 值= 0x42
             BOOK0x00 PAGE0x00 REG0x0d 值= 0x44
             BOOK0x00 PAGE0x00 REG0x0a 值= 0x13
             BOOK0x00 PAGE0x00 REG0x30值= 0x99
             BOOK0x00 PAGE0x00 REG0x41值= 0x06
             BOOK0x00 PAGE0x00 REG0x42值= 0x18
             BOOK0x00 PAGE0x00 REG0x07值= 0x02
             BOOK0x00 PAGE0x00 REG0x02值= 0x00

    AD 2:您可以在此处找到该文件: https://www.demmel.com/nc/index.php/s/DnxxeBonfcsGiSZ

    (仍然是错误的字节顺序)

    AD 3:我在 PDM 麦克风的数据表中找不到任何关于字节顺序的提示- https://www.infineon.com/dgdl/Infineon-IM72D128-DataSheet-v01_01-EN.pdf?fileId=8ac78c8c80027ecd0180612a60277e10

    但是:他们使用的是 PPC3、您的评估套件 TAS2x63EVM 和 Windows 驱动程序。  

    AD 4:我在上一篇文章中将 regdump 添加到了.zip 文件中、其中声明 Chn0B0x00P0x00R0x02:0x00

    再次显示为文本:

    地址:0x4c

    Chn0B0x00P0x00R0x00:0x00
    Chn0B0x00P0x00R0x01:0x00
    Chn0B0x00P0x00R0x02:0x00
    Chn0B0x00P0x00R0x03:0x10
    Chn0B0x00P0x00R0x04:0xc6
    Chn0B0x00P0x00R0x05:0x22
    Chn0B0x00P0x00R0x06:0x09
    Chn0B0x00P0x00R0x07:0x02
    Chn0B0x00P0x00R0x08:0x7E
    Chn0B0x00P0x00R0x09:0x10
    Chn0B0x00P0x00R0x0a:0x13
    Chn0B0x00P0x00R0x0b:0x40
    Chn0B0x00P0x00R0x0c:0x42
    Chn0B0x00P0x00R0x0d:0x44
    Chn0B0x00P0x00R0x0e:0x05
    Chn0B0x00P0x00R0x0F:0x06
    Chn0B0x00P0x00R0x10:0x07
    Chn0B0x00P0x00R0x11:0x24
    Chn0B0x00P0x00R0x12:0x13
    Chn0B0x00P0x00R0x13:0x76
    Chn0B0x00P0x00R0x14:0x01
    Chn0B0x00P0x00R0x15:0x2e
    Chn0B0x00P0x00R0x16:0x60
    Chn0B0x00P0x00R0x17:0x0E
    Chn0B0x00P0x00R0x18:0x0c
    Chn0B0x00P0x00R0x19:0x00
    Chn0B0x00P0x00R0x1a:0xFC
    Chn0B0x00P0x00R0x1b:0xa6
    Chn0B0x00P0x00R0x1c:0xdf
    Chn0B0x00P0x00R0x1d:0xef
    Chn0B0x00P0x00R0x1e:0xff
    Chn0B0x00P0x00R0x1F:0x00
    Chn0B0x00P0x00R0x20:0x00
    Chn0B0x00P0x00R0x21:0x11
    Chn0B0x00P0x00R0x22:0x00
    Chn0B0x00P0x00R0x23:0x00
    Chn0B0x00P0x00R0x24:0x00
    Chn0B0x00P0x00R0x25:0x00
    Chn0B0x00P0x00R0x26:0x11
    Chn0B0x00P0x00R0x27:0x80
    Chn0B0x00P0x00R0x28:0x00
    Chn0B0x00P0x00R0x29:0x4c
    Chn0B0x00P0x00R0x2A:0x51
    Chn0B0x00P0x00R0x2b:0xd0
    Chn0B0x00P0x00R0x2c:0x79
    Chn0B0x00P0x00R0x2d:0xda
    Chn0B0x00P0x00R0x2e:0x00
    Chn0B0x00P0x00R0x2F:0xa3
    Chn0B0x00P0x00R0x30:0x99
    Chn0B0x00P0x00R0x31:0x40
    Chn0B0x00P0x00R0x32:0x81
    Chn0B0x00P0x00R0x33:0x34
    Chn0B0x00P0x00R0x34:0x4b
    Chn0B0x00P0x00R0x35:0xa4
    Chn0B0x00P0x00R0x36:0x00
    Chn0B0x00P0x00R0x37:0x00
    Chn0B0x00P0x00R0x38:0x12
    Chn0B0x00P0x00R0x39:0x0c
    Chn0B0x00P0x00R0x3a:0xbe
    Chn0B0x00P0x00R0x3b:0x58
    Chn0B0x00P0x00R0x3c:0x54
    Chn0B0x00P0x00R0x3d:0x08
    Chn0B0x00P0x00R0x3e:0x10
    Chn0B0x00P0x00R0x3F:0x00
    Chn0B0x00P0x00R0x40:0x76
    Chn0B0x00P0x00R0x41:0x06
    Chn0B0x00P0x00R0x42:0x18
    Chn0B0x00P0x00R0x43:0xc0
    Chn0B0x00P0x00R0x44:0x10
    Chn0B0x00P0x00R0x45:0x21
    Chn0B0x00P0x00R0x46:0x00
    Chn0B0x00P0x00R0x47:0x51
    Chn0B0x00P0x00R0x48:0x2C
    Chn0B0x00P0x00R0x49:0x51
    Chn0B0x00P0x00R0x4a:0x40
    Chn0B0x00P0x00R0x4b:0x03
    Chn0B0x00P0x00R0x4c:0x00
    Chn0B0x00P0x00R0x4d:0x00
    Chn0B0x00P0x00R0x4e:0x00
    Chn0B0x00P0x00R0x4F:0x00
    Chn0B0x00P0x00R0x50:0x00
    Chn0B0x00P0x00R0x51:0x00
    Chn0B0x00P0x00R0x52:0x00
    Chn0B0x00P0x00R0x53:0x00
    Chn0B0x00P0x00R0x54:0x00
    Chn0B0x00P0x00R0x55:0x00
    Chn0B0x00P0x00R0x56:0x00
    Chn0B0x00P0x00R0x57:0x00
    Chn0B0x00P0x00R0x58:0x00
    Chn0B0x00P0x00R0x59:0x00
    Chn0B0x00P0x00R0x5a:0x00
    Chn0B0x00P0x00R0x5b:0x00
    Chn0B0x00P0x00R0x5c:0x00
    Chn0B0x00P0x00R0x5d:0x00
    Chn0B0x00P0x00R0x5e:0x00
    Chn0B0x00P0x00R0x5F:0x00
    Chn0B0x00P0x00R0x60:0x00
    Chn0B0x00P0x00R0x61:0x00
    Chn0B0x00P0x00R0x62:0x00
    Chn0B0x00P0x00R0x63:0x00
    Chn0B0x00P0x00R0x64:0x00
    Chn0B0x00P0x00R0x65:0x00
    Chn0B0x00P0x00R0x66:0x00
    Chn0B0x00P0x00R0x67:0x00
    Chn0B0x00P0x00R0x68:0x00
    Chn0B0x00P0x00R0x69:0x00
    Chn0B0x00P0x00R0x6a:0x00
    Chn0B0x00P0x00R0x6b:0x00
    Chn0B0x00P0x00R0x6c:0x00
    Chn0B0x00P0x00R0x6d:0x00
    Chn0B0x00P0x00R0x6e:0x00
    Chn0B0x00P0x00R0x6F:0x00
    Chn0B0x00P0x00R0x70:0x00
    Chn0B0x00P0x00R0x71:0x00
    Chn0B0x00P0x00R0x72:0x00
    Chn0B0x00P0x00R0x73:0xf0
    Chn0B0x00P0x00R0x74:0x00
    Chn0B0x00P0x00R0x75:0x0F
    Chn0B0x00P0x00R0x76:0x00
    Chn0B0x00P0x00R0x77:0x00
    Chn0B0x00P0x00R0x78:0xcc
    Chn0B0x00P0x00R0x79:0x00
    Chn0B0x00P0x00R0x7a:0x00
    Chn0B0x00P0x00R0x7b:0x00
    Chn0B0x00P0x00R0x7c:0x00
    Chn0B0x00P0x00R0x7d:0x10
    Chn0B0x00P0x00R0x7e:0x64
    Chn0B0x00P0x00R0x7F:0x00
     ===捕获 smartpa reg end ===  

    此致、感谢您的支持、

    Christian

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

    您好、Christian:

    您能否与 FSYNC 一起分享 SDOUT 数据的示波器捕获? 只能用于几个样本。 我想验证数据"形状"是否正常。
    通常、对于数据的 TX 或 RX、MSB 始终是最左边位。 有一些格式配置选项、但这仅限于以下选项、无法更改 MSB 位置:

    • offset:这是每个时隙中包含的空位数(如果有)。
    • 对齐:这就是数据位在时隙中的位置、将偏移位(如果有)移动到另一侧。
    • I2S/TDM:这是帧相对于 FSYNC 边沿的开始方式。

    如果数据按照预期从器件中发出、那么问题必须出在数据被转换为 wav 格式的方式上。

    此致、
    伊万·萨拉扎尔
    应用工程师

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

    你好、Ivan

    感谢您的答复!

    请查找所请求的捕获(CH1:SBCLK1、CH2:FSYNC、CH3:DATA_SDOUT1):

    如果这些捕获符合预期:

    哪个元素将数据从 I2S 转换为.wav? 导致该转换的驱动器不是吗? 至少,我不知道,在什么地方有影响的转换。 (我已经在 alsa.conf 中尝试了 S16_BE 的一些设置、但未成功)。 是否有任何选项可以更改驱动程序配置(例如在设备树中)?

    我们将 https://git.ti.com/cgit/tas2781-linux-drivers/tas2781-linux-driver/tree/中的驱动程序 与 simple-audio-card 和来自 NXP BSP 的 sai3接口(内核版本5.15.71)结合使用。 我已在之前的消息中发布了我们的器件树和 alsa.conf 设置。

    此致、

    Christian

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

    您好、Christian:

    这些捕获是从麦克风运行的 PDM 数据吗? 似乎几乎所有位都是 Hi?
    您是否可以尝试在同时保持 PDMD Hi 和 Lo 的情况下再次捕获 SDOUT 数据?

    此致、
    伊万·萨拉扎尔
    应用工程师

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

    你好、伊凡!

    是的、数据来自 PDM 麦克风(2片)。

    我不能绝对确定 I2S 数据的外观、但它似乎是反转的:

    前三张图片是 GND 电平下的 PDMD:

    下图显示了3V3时的 PDMD:

    此致、

    Christian

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

    您好、Christian:

    谢谢、我明天会在我这边再次检查相同的波形并得到进一步的评论。

    此致、
    伊万·萨拉扎尔
    应用工程师

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

    你好、Ivan

    感谢您-我期待您的结果和建议!

    此致、

    Christian

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

    Christian、

    我今天没时间讨论这件事、明天我再跟你谈谈。
    很抱歉耽误你的时间。

    此致、
    伊万·萨拉扎尔
    应用工程师

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

    您好、Christian:

    我验证了我这边的类似设置、产生的 PDM 强制高电平和低电平 SDOUT 看起来是正确的。 此时硬件端看起来不错。

    我不知道从 TAS2563接收信号后是如何处理数据转换/存储。
    抱歉、如果您已经提到这一点、但您是否也测试过播放面? 工作正常吗?

    此致、
    伊万·萨拉扎尔
    应用工程师

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

    伊凡、您好!

    是的、正如我已经提到过的、播放端正常工作(以16位/48kHz 运行)。

    我已在该主题中发布:

    -我的设备树设置

    - regbin 设置

    - alsa.conf 设置

    -使用的驱动程序: https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1328857/tas2563-register-settings-for-48khz-24-bits---mono-out-2x-stereo-in-pdm

    -硬件版本: TAS2563 QFN

    在我看来、 问题可能来自编解码器驱动程序或其与 Linux ALSA 系统的连接、这是一个非常高的可能性。

    由于时间紧迫、我们非常需要您在这一主题上的支持。 您是否具有使用此驱动程序、基于 Yocto 的 Linux 发行版(而非 Android)和连接的 PDM 麦克风进行测试的设置?

    此致、

    Christian

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

    您好、Christian:

    我没有这样的设置、我主要是支持放大器本身及其设置。 我将再次向软件专家咨询我们如何提供帮助。

    此致、
    伊万·萨拉扎尔
    应用工程师

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

    您是否就此问题咨询过平台供应商? 在我们之前的 PDM 项目中、数据是小端字节序。

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

    您好!

    我咨询了 NXP 支持(平台是一个 I MX8M-Plus (在内核5.15.71上运行 Yocto kirkstone)构建的。 他们告诉我、必须在内核模式下通过指向 https://kernelnewbies.org/EndianIssues 的链接更改字节序

    但是、在您的驱动器中捕获的用于转换它的数据在哪里呢?

    此致、

    Christian

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

    如您所知、我们的驱动器是从驱动器。

    音频数据可以在 tas2563驱动器中获取、音频数据传输 仅通过 I2S 和 CPU 之间的 DMA 进行。

    我们有一个非常旧的驱动程序、您可以尝试此操作并检查问题是否会消失。

    tas256xsw-android/tas2563-android-driver -用于 Android 平台上 TAS256x 的软件- TAS2563 Android 驱动程序(TI.com)