您好!
我从事激光吸光光谱仪的工作、
我用 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";
};
};