f56f7d6d7a08c3b87a1815da82fd1b23b835b417
Chip-dat/Analog-dat/MAX98357-dat/MAX98357-code.ino
... | ... | @@ -1,13 +1,4 @@ |
1 | -/* |
|
2 | - ESP32 SD I2S Music Player |
|
3 | - esp32-i2s-sd-player.ino |
|
4 | - Plays MP3 file from microSD card |
|
5 | - Uses MAX98357 I2S Amplifier Module |
|
6 | - Uses ESP32-audioI2S Library - https://github.com/schreibfaul1/ESP32-audioI2S |
|
7 | - * |
|
8 | - DroneBot Workshop 2022 |
|
9 | - https://dronebotworkshop.com |
|
10 | -*/ |
|
1 | + |
|
11 | 2 | |
12 | 3 | // Include required libraries |
13 | 4 | #include "Arduino.h" |
Chip-dat/Analog-dat/MAX98357-dat/MAX98357-dat.md
... | ... | @@ -14,4 +14,4 @@ |
14 | 14 | |
15 | 15 | ## code |
16 | 16 | |
17 | -- [[MAX98357-code.ino]] |
|
... | ... | \ No newline at end of file |
0 | +- [[MAX98357-code.ino]] - [[I2S-dat]] |
|
... | ... | \ No newline at end of file |
Chip-dat/Cirrus-dat/Cirrus-dat.md
... | ... | @@ -0,0 +1,44 @@ |
1 | + |
|
2 | +# Cirrus-dat |
|
3 | + |
|
4 | +## CS4344 |
|
5 | + |
|
6 | +Hi, i2s driver let you map LRCLK BCLK and DATA to any GPIO pins you specify. |
|
7 | + |
|
8 | +However, CS4344 require MCLK, so you need to generate it! By the way, this is a reason you cannot use CS4344 with esp8266. |
|
9 | + |
|
10 | +As far as I know esp32 can only generate MCLK on GPIO0: |
|
11 | + |
|
12 | + i2s_config_t i2s_config = { |
|
13 | + .mode = I2S_MODE_MASTER | I2S_MODE_TX, // Only TX |
|
14 | + .sample_rate = 44100, |
|
15 | + .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT, |
|
16 | + .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, //2-channels |
|
17 | + .communication_format = (I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB), |
|
18 | + .dma_buf_count = 6, |
|
19 | + .dma_buf_len = 60, |
|
20 | + .intr_alloc_flags = 0, //Default interrupt priority |
|
21 | + .tx_desc_auto_clear = true, //Auto clear tx descriptor on underflow |
|
22 | + .use_apll = true // change to false if it sounds bad (rev0 chip - better set to false, newer chips - set to true) |
|
23 | + }; |
|
24 | + |
|
25 | + i2s_driver_install(0, &i2s_config, 0, NULL); |
|
26 | + |
|
27 | + i2s_pin_config_t pin_config = { .bck_io_num = CONFIG_I2S_BCK_PIN, .ws_io_num = CONFIG_I2S_LRCK_PIN, .data_out_num = CONFIG_I2S_DATA_PIN, .data_in_num = -1 // Not used }; |
|
28 | + |
|
29 | + i2s_set_pin(0, &pin_config); |
|
30 | + |
|
31 | + // generate mclk on gpio0 |
|
32 | + REG_WRITE(PIN_CTRL, 0b111111110000); |
|
33 | + |
|
34 | + PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO0_U, FUNC_GPIO0_CLK_OUT1); |
|
35 | + |
|
36 | + |
|
37 | +Define CONFIG_I2S_BCK_PIN CONFIG_I2S_LRCK_PIN CONFIG_I2S_DATA_PIN as your connected GPIO pins. Connect CS4344 MCLK to IO0. It should work that way, at least it works perfectly for me. |
|
38 | + |
|
39 | + |
|
40 | + |
|
41 | + |
|
42 | +## ref |
|
43 | + |
|
44 | +- https://www.reddit.com/r/esp32/comments/g48lzs/esp_32_i2s_and_cs4344_dac/ |
|
... | ... | \ No newline at end of file |
Tech-dat/Interface-dat/I2S-dat/I2S-dat.md
... | ... | @@ -13,13 +13,27 @@ This makes I2S a popular choice for high-speed data transfer applications. |
13 | 13 | |
14 | 14 | ## Pin |
15 | 15 | |
16 | -| Name | also Name | func | RPI GPIO | RPI pin | |
|
17 | -| ---- | ------------ | ---------------------------------- | -------- | ------- | |
|
18 | -| BCLK | | Bit clock line | G18 | PIN 12 | |
|
19 | -| WS | LRCK | Word clock line | G19 | PIN 35 | |
|
20 | -| SD | SDIN / SDOUT | At least one multiplexed data line | G21 | PIN 40 | |
|
21 | - |
|
22 | - |
|
16 | +| Name | default ESP32 | also Name | func | RPI GPIO | RPI pin | |
|
17 | +| ---- | ------------- | ------------ | ---------------------------------- | -------- | ------- | |
|
18 | +| SCK | 26 | BCLK | Serial Data Clock / Bit clock line | G18 | PIN 12 | |
|
19 | +| WS | 25 | LRCK / LRC | Serial Data-Word select line | G19 | PIN 35 | |
|
20 | +| SD | 22 | SDIN / SDOUT | At least one multiplexed data line | G21 | PIN 40 | |
|
21 | + |
|
22 | + I2S Circuit: |
|
23 | + * Arduino/Genuino Zero, MKR family and Nano 33 IoT |
|
24 | + * MAX08357: |
|
25 | + * GND connected GND |
|
26 | + * VIN connected 5V |
|
27 | + * LRC connected to pin 0 (Zero) or 3 (MKR), A2 (Nano) or 25 (ESP32) |
|
28 | + * BCLK connected to pin 1 (Zero) or 2 (MKR), A3 (Nano) or 5 (ESP32) |
|
29 | + * DIN connected to pin 9 (Zero) or A6 (MKR), 4 (Nano) or 26 (ESP32) |
|
30 | + DAC Circuit: |
|
31 | + * ESP32 or ESP32-S2 |
|
32 | + * Audio amplifier |
|
33 | + - Note: |
|
34 | + - ESP32 has DAC on GPIO pins 25 and 26. |
|
35 | + - ESP32-S2 has DAC on GPIO pins 17 and 18. |
|
36 | + - Connect speaker(s) or headphones. |
|
23 | 37 | |
24 | 38 | |
25 | 39 | ## Solution - control (slave module) |
... | ... | @@ -28,7 +42,7 @@ I2S Output Digital Microphone - [[INMP441-dat]] - [[ICS-43434-dat]] - [[SPH0645- |
28 | 42 | |
29 | 43 | audio amplifer - [[MAX98357-dat]] - [[audio-dat]] - [[amplifier-dat]] |
30 | 44 | |
31 | -- [[PCM5122-dat]] - [[MPC1083-dat]] - [[I2S-dat]] - [[PCM5102-dat]] - [[AMP1006-dat]] |
|
45 | +- [[PCM5122-dat]] - [[MPC1083-dat]] - [[I2S-dat]] - [[PCM5102-dat]] - [[AMP1006-dat]] - [[CS4344-dat]] |
|
32 | 46 | |
33 | 47 | - [[ES9023-dat]] - [[MPC1111-dat]] - [[ES9018-dat]] |
34 | 48 |
Tech-dat/Sensor-dat/liquid-sensor-dat/liquid-sensor-dat.md
... | ... | @@ -3,7 +3,7 @@ |
3 | 3 | |
4 | 4 | - turbidity [[STH1074-dat]] |
5 | 5 | |
6 | -- TDS sensor [[STH1078-dat]] |
|
6 | +- TDS sensor [[STH1078-dat]] - [[TDS-sensor-dat]] |
|
7 | 7 | |
8 | 8 | - non-contact Liquid Level Sensor - [[SMO1095-dat]] |
9 | 9 |