ESP32 esp-idf I2s マスターモードで、MCLK(I2S master clock) の出力について、
何とか出来たので書いてみました。
esp32_datasheet_en.pdf の記述では、マスタークロックを出力できると記載があります。
4.1.12 I²S Interface
..
When one or both of the I²S interfaces are configured in the master mode, the master clock can be output to the external DAC/CODEC.
また、別のページには、
The MCLK (I2S master clock) output can be put out through a CLK_OUT pin only.
とあるので、下記シンボルがそれみたいです。
soc/io_mux_reg.h
CLK_OUT1 - 3
Docs>>API Reference >> Peripherals PI >> GPIO&RTC GPIO の中に、
https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/peripherals/gpio.html
void
gpio_iomux_out
(uint8_t gpio_num, int func, bool oen_inv)Set peripheral output to an GPIO pad through the IOMUX.
gpio_num
: gpio_num GPIO number of the pad.func
: The function number of the peripheral pin to output pin. One of theFUNC_X_*
of specified pin (X) insoc/io_mux_reg.h
.oen_inv
: True if the output enable needs to be inversed, otherwise False.
https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/peripherals/i2s.html を参考に
GPIO16 を PCM5102A の SCK ピンに接続すれば、
PCM5102A.pdf の
9.3.5.2 Clock Slave Mode With Master/System Clock (SCK) Input (4 Wire I2S) の SCKにクロックを供給できます。
オンちゃんも、3 Wire I2S と 4 Wire I2S の音を聞き比べてみましたが、
4 Wire I2S の方が少しは音が良いきがします。
その後、色々コードを変えて、エラーの設定で試してみましたが、音がどれも出てくるので、これは怪しいと感じたので、安いロジアナを買ったので、チェックしてみたところ、残念がら、信号がでていませんでした。
最終的には、下記ページに回答がありました。
https://www.esp32.com/viewtopic.php?t=1778
折角、ロジアナを買ったので、BCK と、 MCLK のクロックを測ってみたところ、
BCK = 1.3975 Mhz
MCLK(SCL) = 12 Mhz
でした。これなら、後者の方が、音は安定するかもしれません。