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.

[参考译文] PCM3060:用于激光吸光光谱仪的 PCM3060编解码器

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1329101/pcm3060-pcm3060-codec-for-a-laser-absorbtion-spectrometer

器件型号:PCM3060

您好!

我从事激光吸光光谱仪的工作、
我用 pcm3060制作了一个 HAT、以生成电流斜升、从而使用其 DAC 驱动激光。
我计划使用 ADC 评估的检测器电压。
我有点„滥用"这个编解码器为我的任务,但它满足我所有的要求,而且非常便宜。

实际的 Linux 内核支持 pcm3060、因此我只需要包含 RPI 的内核模块。

pcm3060在同一芯片上具有 ADC 和 DAC。
我将 I2S 的 BCLK 和 lrclk 连接在一起、并希望使用 pcm3060功能从由 HAT 上的振荡器提供的主时钟生成时钟(请参阅随附的原理图)。
可通过 i2c 将 ADC 配置为位时钟主器件、将 DAC 配置为从器件。
Raspberry PI 也应该是 clk 从器件(I2S 消费者)。

当我在使用简易声卡的覆层时、我感到很棘手。
我已经使它起作用、我可以发挥一个正弦。
但是、播放和录制在我的实际覆层中无法正常工作(请参阅下文)。
我看不到将 pcm3060 ADC 设置为 BCLK 主模式的 i2c 命令。
覆层 Raspberry PI 似乎是 I2S 主设备。
此处的问题可能是什么?

我非常感谢您的帮助!


我非常感谢您的帮助!

// Definitions for pcm3060 audio card

/dts-v1/;

/plugin/;

/ {
    compatible = "brcm,bcm2835";

    fragment@0 {
        target = <&i2s_clk_consumer>;
        __overlay__ {
            status = "okay";
        };
    };

    fragment@1 {
        target = <&i2c1>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            status = "okay";

            pcm3060: pcm3060@46 {
                #sound-dai-cells = <1>;
                compatible = "ti,pcm3060";
                reg = <0x46>;
                ti,out-single-ended = "false";
            };
        };
    };

    fragment@2 {
        target = <&sound>;
        slave_overlay: __overlay__ {
            compatible = "simple-audio-card";
            simple-audio-card,name = "pcm3060-soundcard";
            status = "okay";

            simple-audio-card,dai-link@0 {
                    format = "i2s";


                    cpu {
                            sound-dai = <&i2s_clk_consumer>;
                            dai-tdm-slot-num = <2>;
                            dai-tdm-slot-width = <32>;
                    };

                    pcm3060_dac: codec {
                            sound-dai = <&pcm3060 0>;
                            system-clock-frequency = <24576000>;
                    };
            };



            simple-audio-card,dai-link@2 {
                    format = "i2s";

                    bitclock-master = <&pcm3060_adc>;
                    frame-master = <&pcm3060_adc>;

                    cpu {
                            sound-dai = <&i2s_clk_consumer>;
                            dai-tdm-slot-num = <2>;
                            dai-tdm-slot-width = <32>;
                    };

                    pcm3060_adc: codec {
                            sound-dai = <&pcm3060 1>;
                            system-clock-frequency = <24576000>;
                    };
            };

        };
    };

    __overrides__ {
        alsaname = <&slave_overlay>,"simple-audio-card,name";
        compatible = <&pcm3060>,"compatible";
    };
};

 

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

    您好!

    请让我们的 Linux 专家为您的问题发表意见。 似乎您希望 ADC 成为主器件、但 DAC 成为从器件、但您将两个时钟连接在一起、这将丧失用例。  查看 I2C 事务的最佳方式是探测这些线路并在它们确实设置为主模式时进行回读。

    此致。

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

    您能在系统中看到声卡寄存器吗? 在启动日志中,在声卡注册过程中是否出现了一些错误? 我不确定简单的音频卡架构不能很好地支持您的要求、可以随意选择哪个主时钟。 简单音频卡似乎仅支持一个位时钟主器件和帧主器件。

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

    好的、
    感谢您的快速响应。
    我尝试了很多简单的声卡。  
    我在启动日志中看不到任何错误。
    我已使用逻辑分析仪检查了 I2C 信号、问题是、当我开始播放时、pcm3060已正确初始化、当我开始记录时、其配置已被覆盖。
    也许您说的没错、简单的音频卡无法配置包含 ADC 和 DAC 的 pcm3060、而且无法进一步满足我的位时钟要求。
    您是否有任何其他方法可以使它正常工作? 我的要求是将同步驱动 ADC 和 DAC!

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

    也许将 ADC 和 DAC 都更改为处于从模式、并看到它能与您的声卡配合使用。