├── .gitignore ├── Doxyfile ├── License.txt ├── README.md ├── docs ├── STM32F411-i2s-prototype.ioc ├── STM32F411-i2s-prototype.pdf ├── STM32F411-i2s-prototype.txt ├── html │ ├── annotated.html │ ├── bc_s.png │ ├── bc_sd.png │ ├── bdwn.png │ ├── classes.html │ ├── classstm32__i2s_1_1_stm32_i2s_class-members.html │ ├── classstm32__i2s_1_1_stm32_i2s_class.html │ ├── closed.png │ ├── cs43l22_8c.html │ ├── cs43l22_8h.html │ ├── cs43l22_8h_source.html │ ├── dir_3992babe5b2b0fc797f068335cd4b1b1.html │ ├── dir_68267d1309a1af8e8297ef4c3efbcdba.html │ ├── dir_c1e7829af741e8afab89e4a6a6ad9ae0.html │ ├── dir_d283c8fce94f35c69e754dbe0e7c6cde.html │ ├── doc.png │ ├── docd.png │ ├── doxygen.css │ ├── doxygen.svg │ ├── dynsections.js │ ├── files.html │ ├── folderclosed.png │ ├── folderopen.png │ ├── functions.html │ ├── functions_func.html │ ├── globals.html │ ├── globals_defs.html │ ├── globals_func.html │ ├── group___b_s_p.html │ ├── group___c_s43_l22.html │ ├── group___c_s43_l22___exported___constants.html │ ├── group___c_s43_l22___exported___functions.html │ ├── group___c_s43_l22___exported___macros.html │ ├── group___c_s43_l22___exported___types.html │ ├── group___c_s43_l22___function___prototypes.html │ ├── group___c_s43_l22___private___defines.html │ ├── group___c_s43_l22___private___functions.html │ ├── group___c_s43_l22___private___macros.html │ ├── group___c_s43_l22___private___types.html │ ├── group___c_s43_l22___private___variables.html │ ├── group___component.html │ ├── group___components.html │ ├── group___i2_s.html │ ├── group___i2_s___exported___constants.html │ ├── group___i2_s___exported___types.html │ ├── group___w_m8994.html │ ├── group___w_m8994___exported___constants.html │ ├── group___w_m8994___exported___functions.html │ ├── group___w_m8994___exported___macros.html │ ├── hal__conf__extra_8h.html │ ├── hal__conf__extra_8h_source.html │ ├── index.html │ ├── jquery.js │ ├── main_8c.html │ ├── main_8h.html │ ├── main_8h_source.html │ ├── md__r_e_a_d_m_e.html │ ├── menu.js │ ├── menudata.js │ ├── modules.html │ ├── nav_f.png │ ├── nav_fd.png │ ├── nav_g.png │ ├── nav_h.png │ ├── nav_hd.png │ ├── open.png │ ├── pages.html │ ├── search │ │ ├── all_0.html │ │ ├── all_0.js │ │ ├── all_1.html │ │ ├── all_1.js │ │ ├── all_2.html │ │ ├── all_2.js │ │ ├── all_3.html │ │ ├── all_3.js │ │ ├── all_4.html │ │ ├── all_4.js │ │ ├── all_5.html │ │ ├── all_5.js │ │ ├── all_6.html │ │ ├── all_6.js │ │ ├── all_7.html │ │ ├── all_7.js │ │ ├── all_8.html │ │ ├── all_8.js │ │ ├── all_9.html │ │ ├── all_9.js │ │ ├── all_a.html │ │ ├── all_a.js │ │ ├── all_b.html │ │ ├── all_b.js │ │ ├── classes_0.html │ │ ├── classes_0.js │ │ ├── classes_1.html │ │ ├── classes_1.js │ │ ├── classes_2.html │ │ ├── classes_2.js │ │ ├── close.svg │ │ ├── defines_0.html │ │ ├── defines_0.js │ │ ├── enums_0.html │ │ ├── enums_0.js │ │ ├── files_0.html │ │ ├── files_0.js │ │ ├── files_1.html │ │ ├── files_1.js │ │ ├── files_2.html │ │ ├── files_2.js │ │ ├── files_3.html │ │ ├── files_3.js │ │ ├── files_4.js │ │ ├── functions_0.html │ │ ├── functions_0.js │ │ ├── functions_1.html │ │ ├── functions_1.js │ │ ├── functions_2.html │ │ ├── functions_2.js │ │ ├── functions_3.html │ │ ├── functions_3.js │ │ ├── functions_4.html │ │ ├── functions_4.js │ │ ├── functions_5.html │ │ ├── functions_5.js │ │ ├── functions_6.html │ │ ├── functions_6.js │ │ ├── functions_7.html │ │ ├── functions_7.js │ │ ├── functions_8.html │ │ ├── functions_8.js │ │ ├── functions_9.html │ │ ├── functions_9.js │ │ ├── functions_a.html │ │ ├── functions_a.js │ │ ├── groups_0.html │ │ ├── groups_0.js │ │ ├── groups_1.html │ │ ├── groups_1.js │ │ ├── groups_2.html │ │ ├── groups_2.js │ │ ├── mag.svg │ │ ├── mag_d.svg │ │ ├── mag_sel.svg │ │ ├── mag_seld.svg │ │ ├── nomatches.html │ │ ├── pages_0.html │ │ ├── pages_0.js │ │ ├── search.css │ │ ├── search.js │ │ ├── search_l.png │ │ ├── search_m.png │ │ ├── search_r.png │ │ ├── searchdata.js │ │ ├── variables_0.html │ │ └── variables_0.js │ ├── splitbar.png │ ├── splitbard.png │ ├── stm32-config-i2s_8h_source.html │ ├── stm32-i2s_8h.html │ ├── stm32-i2s_8h_source.html │ ├── stm32-pins_8h_source.html │ ├── stm32f4xx__hal__msp_8c.html │ ├── stm32f4xx__it_8c.html │ ├── stm32f4xx__it_8h.html │ ├── stm32f4xx__it_8h_source.html │ ├── struct_i2_s_settings_s_t_m32-members.html │ ├── struct_i2_s_settings_s_t_m32.html │ ├── structstm32__i2s_1_1_hardware_config-members.html │ ├── structstm32__i2s_1_1_hardware_config.html │ ├── structstm32__i2s_1_1_i2_s_pin-members.html │ ├── structstm32__i2s_1_1_i2_s_pin.html │ ├── structstm32__i2s_1_1_i2_s_settings_s_t_m32-members.html │ ├── structstm32__i2s_1_1_i2_s_settings_s_t_m32.html │ ├── sync_off.png │ ├── sync_on.png │ ├── tab_a.png │ ├── tab_ad.png │ ├── tab_b.png │ ├── tab_bd.png │ ├── tab_h.png │ ├── tab_hd.png │ ├── tab_s.png │ ├── tab_sd.png │ ├── tabs.css │ ├── wm8994_8h.html │ └── wm8994_8h_source.html └── stm32f411.jpeg ├── examples ├── i2s-in │ └── i2s-in.ino ├── i2s-out │ └── i2s-out.ino └── i2s-outin │ └── i2s-outin.ino ├── library.properties └── src ├── hal_conf_extra.h ├── stm32-config-i2s.h ├── stm32-i2s.cpp └── stm32-i2s.h /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/ 2 | build/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Arduino STM32 I2S Library 2 | 3 | I wanted to use __I2S__ in Arduino with my __STM32F411 Black Pill__ processor together with my [Arduino Audio Tools](https://github.com/pschatzmann/arduino-audio-tools)! 4 | 5 | ![stm32f411](https://pschatzmann.github.io/stm32-i2s/stm32f411.jpeg) 6 | 7 | Unfortunately [STMDuino](https://github.com/stm32duino) does not provide this functionality. 8 | 9 | My first trials failed miserably using the DMA versions of the HAL API, so I decided to generate a working solution using the __STM Cube IDE__ and then convert this to Arduino library, that provides the following functionality: 10 | 11 | - The DMA is used to transfer the data 12 | - The API is using __Callbacks__ to transfer the data. 13 | - The following settings are supported: 14 | - I2S Protocol can be defined with __i2s_default_standard__ variable (default is I2S_STANDARD_PHILIPS) 15 | - Mode can be selected with __i2s_default_mode__ variable (default is I2S_MODE_MASTER_TX) 16 | - Full Duplex is supported with __i2s_default_fullduplexmode__ variable (default is I2S_FULLDUPLEXMODE_ENABLE) 17 | - Sampling rate can be selected with __is2_default_samplerate__ variable(default value is I2S_AUDIOFREQ_44K) 18 | - Only __16bit__ data is supported 19 | - I also incuded the __codec drivers__ that are part of some stm32 evaluation boards. 20 | 21 | Subsequently, I have extended the functionality to support other variants. 22 | 23 | ## Pins for I2S3 24 | 25 | See [src/stm32-config-i2s.h](https://github.com/pschatzmann/stm32-i2s/blob/main/src/stm32-config-i2s.h). 26 | 27 | ## Supported Sample Rates 28 | 29 | - I2S_AUDIOFREQ_192K 30 | - I2S_AUDIOFREQ_96K 31 | - I2S_AUDIOFREQ_48K 32 | - I2S_AUDIOFREQ_44K 33 | - I2S_AUDIOFREQ_32K 34 | - I2S_AUDIOFREQ_22K 35 | - I2S_AUDIOFREQ_16K 36 | - I2S_AUDIOFREQ_11K 37 | - I2S_AUDIOFREQ_8K 38 | 39 | 40 | ## API 41 | 42 | Below I demonstrate the basic API provided by this library. However, I recommend that you use the I2SStream class from the [Arduino Audio Tools](https://github.com/pschatzmann/arduino-audio-tools) library which uses this functionality. 43 | 44 | ### Sending Data 45 | 46 | ``` 47 | #include "AudioTools.h" 48 | #include "stm32-i2s.h" 49 | 50 | using namespace stm32_i2s; 51 | 52 | SineWaveGenerator sineWave(32000); // subclass of SoundGenerator with max amplitude of 32000 53 | I2SSettingsSTM32 i2s_settings; 54 | Stm32I2sClass I2S; 55 | int sample_rate = 8000; 56 | int channels = 1; 57 | 58 | void readToTransmit(uint8_t *buffer, uint16_t byteCount, void*) { 59 | uint16_t samples = byteCount / 2; 60 | int16_t *buffer_16 = (int16_t*) buffer; 61 | for (uint j = 0; j < samples; j+=2) { 62 | int16_t sample = sineWave.readSample(); 63 | buffer_16[j] = sample; 64 | buffer_16[j+1] = sample; 65 | } 66 | } 67 | 68 | void setup() { 69 | Serial.begin(115200); 70 | sineWave.begin(channels, sample_rate, N_B4); 71 | i2s_settings.sample_rate = I2S_AUDIOFREQ_8K; 72 | if (!I2S.beginWriteDMA(i2s_settings, readToTransmit)){ 73 | Serial.println("I2S Error"); 74 | } 75 | } 76 | 77 | void loop() {} 78 | 79 | ``` 80 | 81 | 82 | ### Receiving Data 83 | 84 | ``` 85 | #include "AudioTools.h" 86 | #include "stm32-i2s.h" 87 | 88 | using namespace stm32_i2s; 89 | 90 | CsvStream out(Serial, 2); // ASCII output stream 91 | I2SSettingsSTM32 i2s_settings; 92 | Stm32I2sClass I2S; 93 | 94 | void writeFromReceive(uint8_t *buffer, uint16_t byteCount, void*){ 95 | out.write(buffer, byteCount); 96 | } 97 | 98 | void setup() { 99 | Serial.begin(115200); 100 | i2s_settings.sample_rate = I2S_AUDIOFREQ_8K; 101 | if (!I2S.beginReadDMA(i2s_settings, writeFromReceive){ 102 | Serial.println("I2S Error"); 103 | } 104 | } 105 | 106 | void loop() {} 107 | 108 | ``` 109 | 110 | ## Documentation 111 | 112 | Here is the link to the [actual documentation](https://pschatzmann.github.io/stm32-i2s/html/classstm32__i2s_1_1_stm32_i2s_class.html). 113 | 114 | You might also find further information in [my Blogs](https://www.pschatzmann.ch/tags/stm32) 115 | 116 | 117 | ## Installation in Arduino 118 | 119 | You can download the library as zip and call include Library -> zip library. Or you can git clone this project into the Arduino libraries folder e.g. with 120 | 121 | ``` 122 | cd ~/Documents/Arduino/libraries 123 | git clone https://github.com/pschatzmann/stm32-i2s.git 124 | ``` 125 | 126 | I recommend to use git because you can easily update to the latest version just by executing the ```git pull``` command in the project folder. 127 | 128 | 129 | ## Copyright 130 | 131 | __Copyright © 2022 Phil Schatzmann__ 132 | 133 | [GNU General Public License](License.txt) 134 | 135 | -------------------------------------------------------------------------------- /docs/STM32F411-i2s-prototype.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/STM32F411-i2s-prototype.pdf -------------------------------------------------------------------------------- /docs/STM32F411-i2s-prototype.txt: -------------------------------------------------------------------------------- 1 | Configuration STM32F411-i2s-prototype 2 | STM32CubeMX 6.6.1 3 | Date 09/24/2022 4 | MCU STM32F411CEUx 5 | 6 | 7 | 8 | PERIPHERALS MODES FUNCTIONS PINS 9 | I2S3 Full-Duplex Master I2S3_CK PB3 10 | I2S3 Full-Duplex Master I2S3_SD PB5 11 | I2S3 Full-Duplex Master I2S3_WS PA4 12 | I2S3 Full-Duplex Master I2S3_ext_SD PB4 13 | I2S3 Activated I2S3_MCK PB10 14 | RCC Crystal/Ceramic Resonator RCC_OSC_IN PH0 - OSC_IN 15 | RCC Crystal/Ceramic Resonator RCC_OSC_OUT PH1 - OSC_OUT 16 | RCC Audio_ClockIn I2S_CKIN PA2 17 | SYS SysTick SYS_VS_Systick VP_SYS_VS_Systick 18 | USB_OTG_FS Device_Only USB_OTG_FS_DM PA11 19 | USB_OTG_FS Device_Only USB_OTG_FS_DP PA12 20 | 21 | 22 | 23 | Pin Nb PINs FUNCTIONs LABELs 24 | 5 PH0 - OSC_IN RCC_OSC_IN 25 | 6 PH1 - OSC_OUT RCC_OSC_OUT 26 | 12 PA2 I2S_CKIN 27 | 14 PA4 I2S3_WS 28 | 21 PB10 I2S3_MCK 29 | 32 PA11 USB_OTG_FS_DM 30 | 33 PA12 USB_OTG_FS_DP 31 | 39 PB3 I2S3_CK 32 | 40 PB4 I2S3_ext_SD 33 | 41 PB5 I2S3_SD 34 | PERIPHERALS MODES FUNCTIONS PINS 35 | I2S3 Full-Duplex Master I2S3_CK PB3 36 | I2S3 Full-Duplex Master I2S3_SD PB5 37 | I2S3 Full-Duplex Master I2S3_WS PA4 38 | I2S3 Full-Duplex Master I2S3_ext_SD PB4 39 | I2S3 Activated I2S3_MCK PB10 40 | RCC Crystal/Ceramic Resonator RCC_OSC_IN PH0 - OSC_IN 41 | RCC Crystal/Ceramic Resonator RCC_OSC_OUT PH1 - OSC_OUT 42 | RCC Audio_ClockIn I2S_CKIN PA2 43 | SYS SysTick SYS_VS_Systick VP_SYS_VS_Systick 44 | USB_OTG_FS Device_Only USB_OTG_FS_DM PA11 45 | USB_OTG_FS Device_Only USB_OTG_FS_DP PA12 46 | 47 | 48 | 49 | Pin Nb PINs FUNCTIONs LABELs 50 | 5 PH0 - OSC_IN RCC_OSC_IN 51 | 6 PH1 - OSC_OUT RCC_OSC_OUT 52 | 12 PA2 I2S_CKIN 53 | 14 PA4 I2S3_WS 54 | 21 PB10 I2S3_MCK 55 | 32 PA11 USB_OTG_FS_DM 56 | 33 PA12 USB_OTG_FS_DP 57 | 39 PB3 I2S3_CK 58 | 40 PB4 I2S3_ext_SD 59 | 41 PB5 I2S3_SD 60 | 61 | 62 | 63 | SOFTWARE PROJECT 64 | 65 | Project Settings : 66 | Project Name : STM32F411-i2s-prototype 67 | Project Folder : /Users/pschatzmann/STM32CubeIDE/workspace_1.10.1/Audio 68 | Toolchain / IDE : STM32CubeIDE 69 | Firmware Package Name and Version : STM32Cube FW_F4 V1.27.1 70 | 71 | 72 | Code Generation Settings : 73 | STM32Cube MCU packages and embedded software packs : Copy only the necessary library files 74 | Generate peripheral initialization as a pair of '.c/.h' files per peripheral : No 75 | Backup previously generated files when re-generating : No 76 | Delete previously generated files when not re-generated : Yes 77 | Set all free pins as analog (to optimize the power consumption) : No 78 | 79 | 80 | Toolchains Settings : 81 | Compiler Optimizations : 82 | 83 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /docs/html/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/bc_s.png -------------------------------------------------------------------------------- /docs/html/bc_sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/bc_sd.png -------------------------------------------------------------------------------- /docs/html/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/bdwn.png -------------------------------------------------------------------------------- /docs/html/classes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: Class Index 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
Class Index
66 |
67 |
68 |
H | I | S
69 |
70 |
71 |
H
72 |
HardwareConfig (stm32_i2s)
73 |
74 |
I
75 |
I2SPin (stm32_i2s)
I2SSettingsSTM32 (stm32_i2s)
76 |
77 |
S
78 |
Stm32I2sClass (stm32_i2s)
79 |
80 |
81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /docs/html/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/closed.png -------------------------------------------------------------------------------- /docs/html/dir_3992babe5b2b0fc797f068335cd4b1b1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: src/codecs Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 48 | 49 | 50 |
54 |
55 | 56 | 57 |
58 |
59 |
60 |
61 |
62 |
Loading...
63 |
Searching...
64 |
No Matches
65 |
66 |
67 |
68 |
69 | 70 | 74 |
75 |
76 |
codecs Directory Reference
77 |
78 |
79 | 80 | 82 | 83 | 84 | 85 | 86 |

81 | Directories

directory  cs43l22
 
directory  wm8994
 
87 |
88 | 89 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: src Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 | 49 |
53 |
54 | 55 | 56 |
57 | 60 |
61 | 62 | 66 |
67 |
68 |
69 |
src Directory Reference
70 |
71 |
72 | 73 | 75 | 76 | 77 | 78 | 79 | 80 | 81 |

74 | Files

file  hal_conf_extra.h [code]
 for details see https://github.com/stm32duino/wiki/wiki/HAL-configuration
 
file  stm32-i2s.h [code]
 Main entry point header for this library.
 
82 |
83 | 84 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /docs/html/dir_c1e7829af741e8afab89e4a6a6ad9ae0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: src/codecs/wm8994 Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 48 | 49 | 50 |
54 |
55 | 56 | 57 |
58 |
59 |
60 |
61 |
62 |
Loading...
63 |
Searching...
64 |
No Matches
65 |
66 |
67 |
68 |
69 | 70 | 74 |
75 |
76 |
wm8994 Directory Reference
77 |
78 |
79 | 80 | 82 | 83 | 84 | 85 |

81 | Files

file  wm8994.h [code]
 This file contains all the functions prototypes for the wm8994.c driver.
 
86 |
87 | 88 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /docs/html/dir_d283c8fce94f35c69e754dbe0e7c6cde.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: src/codecs/cs43l22 Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 48 | 49 | 50 |
54 |
55 | 56 | 57 |
58 |
59 |
60 |
61 |
62 |
Loading...
63 |
Searching...
64 |
No Matches
65 |
66 |
67 |
68 |
69 | 70 | 74 |
75 |
76 |
cs43l22 Directory Reference
77 |
78 |
79 | 80 | 82 | 83 | 84 | 85 |

81 | Files

file  cs43l22.h [code]
 This file contains all the functions prototypes for the cs43l22.c driver.
 
86 |
87 | 88 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /docs/html/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/doc.png -------------------------------------------------------------------------------- /docs/html/docd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/docd.png -------------------------------------------------------------------------------- /docs/html/folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/folderclosed.png -------------------------------------------------------------------------------- /docs/html/folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/folderopen.png -------------------------------------------------------------------------------- /docs/html/globals.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: File Members 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 48 | 49 |
50 | 51 |
55 |
56 | 57 | 58 |
59 |
60 |
61 |
62 |
63 |
Loading...
64 |
Searching...
65 |
No Matches
66 |
67 |
68 |
69 |
70 | 71 |
72 |
Here is a list of all documented file members with links to the documentation:
83 |
84 | 85 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /docs/html/globals_defs.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: File Members 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 48 | 49 |
50 | 51 |
55 |
56 | 57 | 58 |
59 |
60 |
61 |
62 |
63 |
Loading...
64 |
Searching...
65 |
No Matches
66 |
67 |
68 |
69 |
70 | 71 |
72 |   79 |
80 | 81 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /docs/html/globals_func.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: File Members 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 48 | 49 |
50 | 51 |
55 |
56 | 57 | 58 |
59 |
60 |
61 |
62 |
63 |
Loading...
64 |
Searching...
65 |
No Matches
66 |
67 |
68 |
69 |
70 | 71 |
72 |  
    73 |
  • startI2SReceive() : main.h
  • 74 |
  • startI2STransmit() : main.h
  • 75 |
  • startI2STransmitReceive() : main.h
  • 76 |
  • stopI2S() : main.h
  • 77 |
78 |
79 | 80 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /docs/html/group___b_s_p.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: BSP 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 | Modules
66 |
67 |
BSP
68 |
69 |
70 | 71 | 73 | 74 | 75 |

72 | Modules

 Component
 
76 |

Detailed Description

77 |
78 | 79 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /docs/html/group___c_s43_l22.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: CS43L22 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 48 | 49 |
50 | 51 |
55 |
56 | 57 | 58 |
59 |
60 |
61 |
62 |
63 |
Loading...
64 |
Searching...
65 |
No Matches
66 |
67 |
68 |
69 |
70 | 71 |
72 |
73 | Modules
74 |
CS43L22
75 |
76 |
77 | 78 | 80 | 81 | 82 | 83 | 84 |

79 | Modules

 CS43L22_Exported_Constants
 
 CS43L22_Exported_Functions
 
85 |

Detailed Description

86 |
87 | 88 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /docs/html/group___c_s43_l22___exported___macros.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: CS43L22_Exported_Macros 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
CS43L22_Exported_Macros
66 |
67 |
68 |
69 | 70 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /docs/html/group___c_s43_l22___exported___types.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: CS43L22_Exported_Types 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
CS43L22_Exported_Types
66 |
67 |
68 |
69 | 70 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /docs/html/group___c_s43_l22___function___prototypes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: CS43L22_Function_Prototypes 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
CS43L22_Function_Prototypes
66 |
67 |
68 |

Detailed Description

69 |
70 | 71 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /docs/html/group___c_s43_l22___private___defines.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: CS43L22_Private_Defines 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 | Macros
66 |
67 |
CS43L22_Private_Defines
68 |
69 |
70 | 71 | 73 | 75 | 76 |

72 | Macros

74 | #define VOLUME_CONVERT(Volume)   (((Volume) > 100)? 255:((uint8_t)(((Volume) * 255) / 100)))
 
77 |

Detailed Description

78 |
79 | 80 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /docs/html/group___c_s43_l22___private___macros.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: CS43L22_Private_Macros 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
CS43L22_Private_Macros
66 |
67 |
68 |
69 | 70 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /docs/html/group___c_s43_l22___private___types.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: CS43L22_Private_Types 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
CS43L22_Private_Types
66 |
67 |
68 |
69 | 70 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /docs/html/group___component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: Component 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 48 | 49 |
50 | 51 |
55 |
56 | 57 | 58 |
59 |
60 |
61 |
62 |
63 |
Loading...
64 |
Searching...
65 |
No Matches
66 |
67 |
68 |
69 |
70 | 71 |
72 |
73 | Modules
74 |
Component
75 |
76 |
77 | 78 | 80 | 81 | 82 | 83 | 84 |

79 | Modules

 CS43L22
 
 WM8994
 
85 |

Detailed Description

86 |
87 | 88 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /docs/html/group___components.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: Components 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 | Modules
66 |
67 |
Components
68 |
69 |
70 | 71 | 73 | 74 | 75 | 76 |

72 | Modules

 CS43L22
 This file provides a set of functions needed to drive the CS43L22 audio codec.
 
77 |

Detailed Description

78 |
79 | 80 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /docs/html/group___i2_s.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: I2S 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 | Macros
66 |
67 |
I2S
68 |
69 |
70 | 71 | 73 | 75 | 76 | 78 | 79 | 81 | 82 |

72 | Macros

74 | #define I2S_BUFFER_SIZE   512
 
77 | #define STM32_I2S_WITH_OBJECT
 
80 | #define USE_FULL_ASSERT
 
83 |

Detailed Description

84 |
85 | 86 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /docs/html/group___i2_s___exported___types.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: I2S_Exported_Types 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
49 | 50 |
54 |
55 | 56 | 57 |
58 | 61 |
62 | 63 |
64 |
65 |
I2S_Exported_Types
66 |
67 |
68 |
69 | 70 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /docs/html/group___w_m8994.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: WM8994 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 48 | 49 |
50 | 51 |
55 |
56 | 57 | 58 |
59 |
60 |
61 |
62 |
63 |
Loading...
64 |
Searching...
65 |
No Matches
66 |
67 |
68 |
69 |
70 | 71 |
72 |
73 | Modules
74 |
WM8994
75 |
76 |
77 | 78 | 80 | 81 | 82 | 83 | 84 |

79 | Modules

 WM8994_Exported_Constants
 
 WM8994_Exported_Functions
 
85 |

Detailed Description

86 |
87 | 88 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /docs/html/group___w_m8994___exported___macros.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: WM8994_Exported_Macros 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 48 | 49 |
50 | 51 |
55 |
56 | 57 | 58 |
59 |
60 |
61 |
62 |
63 |
Loading...
64 |
Searching...
65 |
No Matches
66 |
67 |
68 |
69 |
70 | 71 |
72 |
WM8994_Exported_Macros
73 |
74 |
75 |
76 | 77 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /docs/html/hal__conf__extra_8h.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: src/hal_conf_extra.h File Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 | 49 |
53 |
54 | 55 | 56 |
57 | 60 |
61 | 62 | 66 |
67 |
68 |
69 |
hal_conf_extra.h File Reference
70 |
71 |
72 | 73 |

for details see https://github.com/stm32duino/wiki/wiki/HAL-configuration 74 | More...

75 |
#include <stm32_def.h>
76 |
77 |

Go to the source code of this file.

78 |

Detailed Description

79 |

for details see https://github.com/stm32duino/wiki/wiki/HAL-configuration

80 |
Author
Phil Schatzmann
81 |
Version
0.1
82 |
Date
2022-09-25
83 | 84 |
85 | 86 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /docs/html/hal__conf__extra_8h_source.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: src/hal_conf_extra.h Source File 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 27 | 28 | 29 |
24 |
stm32f411-i2s 25 |
26 |
30 |
31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 | 49 |
53 |
54 | 55 | 56 |
57 | 60 |
61 | 62 | 66 |
67 |
68 |
69 |
hal_conf_extra.h
70 |
71 |
72 | Go to the documentation of this file.
1 
73 |
11 #pragma once
74 |
12 #include <stm32_def.h>
75 |
13 //#define HAL_ADC_MODULE_DISABLED
76 |
14 //#define HAL_SPI_MODULE_DISABLED
77 |
15 //#define HAL_DAC_MODULE_DISABLED
78 |
16 #define HAL_I2S_MODULE_ENABLED
79 |
80 | 81 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /docs/html/menu.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { 26 | function makeTree(data,relPath) { 27 | var result=''; 28 | if ('children' in data) { 29 | result+=''; 36 | } 37 | return result; 38 | } 39 | 40 | $('#main-nav').append(makeTree(menudata,relPath)); 41 | $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); 42 | if (searchEnabled) { 43 | if (serverSide) { 44 | $('#main-menu').append('
  • '); 45 | } else { 46 | $('#main-menu').append('
  • '); 47 | } 48 | } 49 | $('#main-menu').smartmenus(); 50 | } 51 | /* @license-end */ 52 | -------------------------------------------------------------------------------- /docs/html/menudata.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | var menudata={children:[ 26 | {text:"Main Page",url:"index.html"}, 27 | {text:"Classes",url:"annotated.html",children:[ 28 | {text:"Class List",url:"annotated.html"}, 29 | {text:"Class Members",url:"functions.html",children:[ 30 | {text:"All",url:"functions.html"}, 31 | {text:"Functions",url:"functions_func.html"}]}]}, 32 | {text:"Files",url:"files.html",children:[ 33 | {text:"File List",url:"files.html"}]}]} 34 | -------------------------------------------------------------------------------- /docs/html/modules.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: Modules 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 |
    20 | 21 | 22 | 23 | 27 | 28 | 29 |
    24 |
    stm32f411-i2s 25 |
    26 |
    30 |
    31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
    49 | 50 |
    54 |
    55 | 56 | 57 |
    58 | 61 |
    62 | 63 |
    64 |
    65 |
    Modules
    66 |
    67 |
    68 |
    Here is a list of all modules:
    69 | 70 | 71 |
     I2S
    72 |
    73 |
    74 | 75 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /docs/html/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/nav_f.png -------------------------------------------------------------------------------- /docs/html/nav_fd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/nav_fd.png -------------------------------------------------------------------------------- /docs/html/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/nav_g.png -------------------------------------------------------------------------------- /docs/html/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/nav_h.png -------------------------------------------------------------------------------- /docs/html/nav_hd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/nav_hd.png -------------------------------------------------------------------------------- /docs/html/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/open.png -------------------------------------------------------------------------------- /docs/html/pages.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | stm32f411-i2s: Related Pages 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 |
    20 | 21 | 22 | 23 | 27 | 28 | 29 |
    24 |
    stm32f411-i2s 25 |
    26 |
    30 |
    31 | 32 | 33 | 38 | 39 | 40 | 47 | 48 |
    49 | 50 |
    54 |
    55 | 56 | 57 |
    58 | 61 |
    62 | 63 |
    64 |
    65 |
    Related Pages
    66 |
    67 |
    68 |
    Here is a list of all related documentation pages:
    69 | 70 | 71 |
     Arduino STM32F411 I2S Library
    72 |
    73 |
    74 | 75 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /docs/html/search/all_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['arduino_20stm32f411_20i2s_20library_0',['Arduino STM32F411 I2S Library',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/all_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/all_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['begin_1',['begin',['../classstm32__i2s_1_1_stm32_i2s_class.html#ab2cdf54a05448b66c5aded8b8a632230',1,'stm32_i2s::Stm32I2sClass']]], 4 | ['beginreaddma_2',['beginReadDMA',['../classstm32__i2s_1_1_stm32_i2s_class.html#a0bd110eb19354cfd1317e68b4c74732a',1,'stm32_i2s::Stm32I2sClass']]], 5 | ['beginreadwritedma_3',['beginReadWriteDMA',['../classstm32__i2s_1_1_stm32_i2s_class.html#ab5ad88e38c7a426e4c5ab99ee5be6262',1,'stm32_i2s::Stm32I2sClass']]], 6 | ['beginwritedma_4',['beginWriteDMA',['../classstm32__i2s_1_1_stm32_i2s_class.html#a184c62a4b0e0b2bfed4c6760aca5b127',1,'stm32_i2s::Stm32I2sClass']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/html/search/all_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/all_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['cb_5fdmairqrx_5',['cb_dmaIrqRx',['../classstm32__i2s_1_1_stm32_i2s_class.html#ad8d19f61eff465692845d405fd321271',1,'stm32_i2s::Stm32I2sClass']]], 4 | ['cb_5fdmairqtx_6',['cb_dmaIrqTx',['../classstm32__i2s_1_1_stm32_i2s_class.html#a8f61f957a528292152ac3aa494d6c8f7',1,'stm32_i2s::Stm32I2sClass']]], 5 | ['cb_5fhal_5fi2s_5fmspdeinit_7',['cb_HAL_I2S_MspDeInit',['../classstm32__i2s_1_1_stm32_i2s_class.html#a368840768f5316846efbcfc7bfbe72da',1,'stm32_i2s::Stm32I2sClass']]], 6 | ['cb_5fhal_5fi2s_5fmspinit_8',['cb_HAL_I2S_MspInit',['../classstm32__i2s_1_1_stm32_i2s_class.html#aa6c222c37988e17de110bcee25a16040',1,'stm32_i2s::Stm32I2sClass']]], 7 | ['cb_5fi2s_5fmspdeinit_9',['cb_i2s_MspDeInit',['../classstm32__i2s_1_1_stm32_i2s_class.html#aa17f0e247e1fd708dd6b26dc2a480abe',1,'stm32_i2s::Stm32I2sClass']]], 8 | ['cb_5fi2s_5fmspinit_10',['cb_i2s_MspInit',['../classstm32__i2s_1_1_stm32_i2s_class.html#a568cbd430035151c964c90860711fd2b',1,'stm32_i2s::Stm32I2sClass']]], 9 | ['cb_5ftxrxcomplete_11',['cb_TxRxComplete',['../classstm32__i2s_1_1_stm32_i2s_class.html#a80d0a01ef377e25ab9e819240d9acb8d',1,'stm32_i2s::Stm32I2sClass']]], 10 | ['cb_5ftxrxhalfcomplete_12',['cb_TxRxHalfComplete',['../classstm32__i2s_1_1_stm32_i2s_class.html#aa68f9f957ef9dcf6022da95cc999b45d',1,'stm32_i2s::Stm32I2sClass']]] 11 | ]; 12 | -------------------------------------------------------------------------------- /docs/html/search/all_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/all_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['end_13',['end',['../structstm32__i2s_1_1_i2_s_pin.html#a74b9ea065dd62de38da823d2959c4a3a',1,'stm32_i2s::I2SPin']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/all_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/all_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['hal_5fconf_5fextra_2eh_14',['hal_conf_extra.h',['../hal__conf__extra_8h.html',1,'']]], 4 | ['hardwareconfig_15',['HardwareConfig',['../structstm32__i2s_1_1_hardware_config.html',1,'stm32_i2s']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/all_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/all_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['i2s_16',['I2S',['../stm32-i2s_8h.html#ac0af7d21820a3022884016c397fc2401',1,'stm32_i2s']]], 4 | ['i2s_5fbegin_17',['i2s_begin',['../classstm32__i2s_1_1_stm32_i2s_class.html#abc045de6c4c440593e3bb6ba0cf9921c',1,'stm32_i2s::Stm32I2sClass']]], 5 | ['i2spin_18',['I2SPin',['../structstm32__i2s_1_1_i2_s_pin.html',1,'stm32_i2s']]], 6 | ['i2spinfunction_19',['I2SPinFunction',['../stm32-i2s_8h.html#a44498895f4b65c359a7e5846c7c16053',1,'stm32_i2s']]], 7 | ['i2ssettingsstm32_20',['I2SSettingsSTM32',['../structstm32__i2s_1_1_i2_s_settings_s_t_m32.html',1,'stm32_i2s']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /docs/html/search/all_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/all_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mx_5fdma_5finit_21',['MX_DMA_Init',['../classstm32__i2s_1_1_stm32_i2s_class.html#a920ca6270f2a640e010f9a73f9805fba',1,'stm32_i2s::Stm32I2sClass']]], 4 | ['mx_5fgpio_5finit_22',['MX_GPIO_Init',['../classstm32__i2s_1_1_stm32_i2s_class.html#a7ea0054cb5a28db73d516bd9f12efe5a',1,'stm32_i2s::Stm32I2sClass']]], 5 | ['mx_5fi2s3_5finit_23',['MX_I2S3_Init',['../classstm32__i2s_1_1_stm32_i2s_class.html#a0b22eaee894545e639e40215fc411706',1,'stm32_i2s::Stm32I2sClass']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/all_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/all_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['readbytes_24',['readBytes',['../classstm32__i2s_1_1_stm32_i2s_class.html#a95c8ee5b3e293c9d4f553be2897a6cbb',1,'stm32_i2s::Stm32I2sClass']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/all_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/all_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['setupdma_25',['setupDMA',['../classstm32__i2s_1_1_stm32_i2s_class.html#aca5c1d70fd7e9a3f3aa0388749b6cb44',1,'stm32_i2s::Stm32I2sClass']]], 4 | ['stm32_2di2s_2eh_26',['stm32-i2s.h',['../stm32-i2s_8h.html',1,'']]], 5 | ['stm32i2sclass_27',['Stm32I2sClass',['../classstm32__i2s_1_1_stm32_i2s_class.html',1,'stm32_i2s']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/all_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/all_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['write_28',['write',['../classstm32__i2s_1_1_stm32_i2s_class.html#a1d8a05bc02fc2d184b9dc22376dc9cc7',1,'stm32_i2s::Stm32I2sClass']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/all_a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/all_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['stm32_2di2s_2eh_49',['stm32-i2s.h',['../stm32-i2s_8h.html',1,'']]], 4 | ['stm32f4xx_5fhal_5fmsp_2ec_50',['stm32f4xx_hal_msp.c',['../stm32f4xx__hal__msp_8c.html',1,'']]], 5 | ['stm32f4xx_5fit_2ec_51',['stm32f4xx_it.c',['../stm32f4xx__it_8c.html',1,'']]], 6 | ['stm32f4xx_5fit_2eh_52',['stm32f4xx_it.h',['../stm32f4xx__it_8h.html',1,'']]], 7 | ['svc_5fhandler_53',['SVC_Handler',['../stm32f4xx__it_8c.html#a3e5ddb3df0d62f2dc357e64a3f04a6ce',1,'SVC_Handler(void): stm32f4xx_it.c'],['../stm32f4xx__it_8h.html#a3e5ddb3df0d62f2dc357e64a3f04a6ce',1,'SVC_Handler(void): stm32f4xx_it.c']]], 8 | ['systemclock_5fconfig_54',['SystemClock_Config',['../main_8c.html#a70af21c671abfcc773614a9a4f63d920',1,'main.c']]], 9 | ['systick_5fhandler_55',['SysTick_Handler',['../stm32f4xx__it_8c.html#ab5e09814056d617c521549e542639b7e',1,'stm32f4xx_it.c']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /docs/html/search/all_b.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/all_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['usagefault_5fhandler_56',['UsageFault_Handler',['../stm32f4xx__it_8c.html#a1d98923de2ed6b7309b66f9ba2971647',1,'UsageFault_Handler(void): stm32f4xx_it.c'],['../stm32f4xx__it_8h.html#a1d98923de2ed6b7309b66f9ba2971647',1,'UsageFault_Handler(void): stm32f4xx_it.c']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/classes_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/classes_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['hardwareconfig_29',['HardwareConfig',['../structstm32__i2s_1_1_hardware_config.html',1,'stm32_i2s']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/classes_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/classes_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['i2spin_30',['I2SPin',['../structstm32__i2s_1_1_i2_s_pin.html',1,'stm32_i2s']]], 4 | ['i2ssettingsstm32_31',['I2SSettingsSTM32',['../structstm32__i2s_1_1_i2_s_settings_s_t_m32.html',1,'stm32_i2s']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/classes_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/classes_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['stm32i2sclass_32',['Stm32I2sClass',['../classstm32__i2s_1_1_stm32_i2s_class.html',1,'stm32_i2s']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 16 | 18 | image/svg+xml 19 | 21 | 22 | 23 | 24 | 25 | 27 | 31 | 32 | -------------------------------------------------------------------------------- /docs/html/search/defines_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/defines_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['systick_5fhandler_94',['SysTick_Handler',['../stm32f4xx__it_8c.html#ab5e09814056d617c521549e542639b7e',1,'stm32f4xx_it.c']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/enums_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/enums_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['i2spinfunction_56',['I2SPinFunction',['../stm32-i2s_8h.html#a44498895f4b65c359a7e5846c7c16053',1,'stm32_i2s']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/files_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/files_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['hal_5fconf_5fextra_2eh_33',['hal_conf_extra.h',['../hal__conf__extra_8h.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/files_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/files_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['stm32_2di2s_2eh_34',['stm32-i2s.h',['../stm32-i2s_8h.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/files_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/files_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['main_2eh_0',['main.h',['../main_8h.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/files_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/files_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['stm32_2di2s_2eh_0',['stm32-i2s.h',['../stm32-i2s_8h.html',1,'']]], 4 | ['stm32f4xx_5fit_2eh_1',['stm32f4xx_it.h',['../stm32f4xx__it_8h.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/files_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['wm8994_2eh_0',['wm8994.h',['../wm8994_8h.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/functions_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/functions_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['begin_35',['begin',['../classstm32__i2s_1_1_stm32_i2s_class.html#ab2cdf54a05448b66c5aded8b8a632230',1,'stm32_i2s::Stm32I2sClass']]], 4 | ['beginreaddma_36',['beginReadDMA',['../classstm32__i2s_1_1_stm32_i2s_class.html#a0bd110eb19354cfd1317e68b4c74732a',1,'stm32_i2s::Stm32I2sClass']]], 5 | ['beginreadwritedma_37',['beginReadWriteDMA',['../classstm32__i2s_1_1_stm32_i2s_class.html#ab5ad88e38c7a426e4c5ab99ee5be6262',1,'stm32_i2s::Stm32I2sClass']]], 6 | ['beginwritedma_38',['beginWriteDMA',['../classstm32__i2s_1_1_stm32_i2s_class.html#a184c62a4b0e0b2bfed4c6760aca5b127',1,'stm32_i2s::Stm32I2sClass']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/html/search/functions_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/functions_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['cb_5fdmairqrx_39',['cb_dmaIrqRx',['../classstm32__i2s_1_1_stm32_i2s_class.html#ad8d19f61eff465692845d405fd321271',1,'stm32_i2s::Stm32I2sClass']]], 4 | ['cb_5fdmairqtx_40',['cb_dmaIrqTx',['../classstm32__i2s_1_1_stm32_i2s_class.html#a8f61f957a528292152ac3aa494d6c8f7',1,'stm32_i2s::Stm32I2sClass']]], 5 | ['cb_5fhal_5fi2s_5fmspdeinit_41',['cb_HAL_I2S_MspDeInit',['../classstm32__i2s_1_1_stm32_i2s_class.html#a368840768f5316846efbcfc7bfbe72da',1,'stm32_i2s::Stm32I2sClass']]], 6 | ['cb_5fhal_5fi2s_5fmspinit_42',['cb_HAL_I2S_MspInit',['../classstm32__i2s_1_1_stm32_i2s_class.html#aa6c222c37988e17de110bcee25a16040',1,'stm32_i2s::Stm32I2sClass']]], 7 | ['cb_5fi2s_5fmspdeinit_43',['cb_i2s_MspDeInit',['../classstm32__i2s_1_1_stm32_i2s_class.html#aa17f0e247e1fd708dd6b26dc2a480abe',1,'stm32_i2s::Stm32I2sClass']]], 8 | ['cb_5fi2s_5fmspinit_44',['cb_i2s_MspInit',['../classstm32__i2s_1_1_stm32_i2s_class.html#a568cbd430035151c964c90860711fd2b',1,'stm32_i2s::Stm32I2sClass']]], 9 | ['cb_5ftxrxcomplete_45',['cb_TxRxComplete',['../classstm32__i2s_1_1_stm32_i2s_class.html#a80d0a01ef377e25ab9e819240d9acb8d',1,'stm32_i2s::Stm32I2sClass']]], 10 | ['cb_5ftxrxhalfcomplete_46',['cb_TxRxHalfComplete',['../classstm32__i2s_1_1_stm32_i2s_class.html#aa68f9f957ef9dcf6022da95cc999b45d',1,'stm32_i2s::Stm32I2sClass']]] 11 | ]; 12 | -------------------------------------------------------------------------------- /docs/html/search/functions_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/functions_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['end_47',['end',['../structstm32__i2s_1_1_i2_s_pin.html#a74b9ea065dd62de38da823d2959c4a3a',1,'stm32_i2s::I2SPin']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/functions_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/functions_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['i2s_5fbegin_48',['i2s_begin',['../classstm32__i2s_1_1_stm32_i2s_class.html#abc045de6c4c440593e3bb6ba0cf9921c',1,'stm32_i2s::Stm32I2sClass']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/functions_4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/functions_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mx_5fdma_5finit_49',['MX_DMA_Init',['../classstm32__i2s_1_1_stm32_i2s_class.html#a920ca6270f2a640e010f9a73f9805fba',1,'stm32_i2s::Stm32I2sClass']]], 4 | ['mx_5fgpio_5finit_50',['MX_GPIO_Init',['../classstm32__i2s_1_1_stm32_i2s_class.html#a7ea0054cb5a28db73d516bd9f12efe5a',1,'stm32_i2s::Stm32I2sClass']]], 5 | ['mx_5fi2s3_5finit_51',['MX_I2S3_Init',['../classstm32__i2s_1_1_stm32_i2s_class.html#a0b22eaee894545e639e40215fc411706',1,'stm32_i2s::Stm32I2sClass']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/functions_5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/functions_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['readbytes_52',['readBytes',['../classstm32__i2s_1_1_stm32_i2s_class.html#a95c8ee5b3e293c9d4f553be2897a6cbb',1,'stm32_i2s::Stm32I2sClass']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/functions_6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/functions_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['setupdma_53',['setupDMA',['../classstm32__i2s_1_1_stm32_i2s_class.html#aca5c1d70fd7e9a3f3aa0388749b6cb44',1,'stm32_i2s::Stm32I2sClass']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/functions_7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/functions_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['write_54',['write',['../classstm32__i2s_1_1_stm32_i2s_class.html#a1d8a05bc02fc2d184b9dc22376dc9cc7',1,'stm32_i2s::Stm32I2sClass']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/functions_8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/functions_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['pendsv_5fhandler_90',['PendSV_Handler',['../stm32f4xx__it_8c.html#a6303e1f258cbdc1f970ce579cc015623',1,'PendSV_Handler(void): stm32f4xx_it.c'],['../stm32f4xx__it_8h.html#a6303e1f258cbdc1f970ce579cc015623',1,'PendSV_Handler(void): stm32f4xx_it.c']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/functions_9.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/functions_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['svc_5fhandler_91',['SVC_Handler',['../stm32f4xx__it_8c.html#a3e5ddb3df0d62f2dc357e64a3f04a6ce',1,'SVC_Handler(void): stm32f4xx_it.c'],['../stm32f4xx__it_8h.html#a3e5ddb3df0d62f2dc357e64a3f04a6ce',1,'SVC_Handler(void): stm32f4xx_it.c']]], 4 | ['systemclock_5fconfig_92',['SystemClock_Config',['../main_8c.html#a70af21c671abfcc773614a9a4f63d920',1,'main.c']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/html/search/functions_a.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/functions_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['usagefault_5fhandler_93',['UsageFault_Handler',['../stm32f4xx__it_8c.html#a1d98923de2ed6b7309b66f9ba2971647',1,'UsageFault_Handler(void): stm32f4xx_it.c'],['../stm32f4xx__it_8h.html#a1d98923de2ed6b7309b66f9ba2971647',1,'UsageFault_Handler(void): stm32f4xx_it.c']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/groups_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/groups_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['i2s_6',['I2S',['../group___i2_s.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/groups_1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/groups_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['i2s_0',['I2S',['../group___i2_s.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/groups_2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/groups_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['wm8994_0',['WM8994',['../group___w_m8994.html',1,'']]], 4 | ['wm8994_5fexported_5fconstants_1',['WM8994_Exported_Constants',['../group___w_m8994___exported___constants.html',1,'']]], 5 | ['wm8994_5fexported_5ffunctions_2',['WM8994_Exported_Functions',['../group___w_m8994___exported___functions.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/html/search/mag.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 16 | 18 | image/svg+xml 19 | 21 | 22 | 23 | 24 | 25 | 27 | 33 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/mag_d.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 16 | 18 | image/svg+xml 19 | 21 | 22 | 23 | 24 | 25 | 27 | 33 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/mag_sel.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | 28 | 29 | 30 | 31 | 33 | 57 | 63 | 69 | 74 | 75 | -------------------------------------------------------------------------------- /docs/html/search/mag_seld.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 22 | 24 | image/svg+xml 25 | 27 | 28 | 29 | 30 | 31 | 33 | 57 | 63 | 69 | 74 | 75 | -------------------------------------------------------------------------------- /docs/html/search/nomatches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
    10 |
    No Matches
    11 |
    12 | 13 | 14 | -------------------------------------------------------------------------------- /docs/html/search/pages_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/pages_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['arduino_20stm32f411_20i2s_20library_57',['Arduino STM32F411 I2S Library',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/search/search_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/search/search_l.png -------------------------------------------------------------------------------- /docs/html/search/search_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/search/search_m.png -------------------------------------------------------------------------------- /docs/html/search/search_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/search/search_r.png -------------------------------------------------------------------------------- /docs/html/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "abcehimrsw", 4 | 1: "his", 5 | 2: "hs", 6 | 3: "bceimrsw", 7 | 4: "i", 8 | 5: "i", 9 | 6: "a" 10 | }; 11 | 12 | var indexSectionNames = 13 | { 14 | 0: "all", 15 | 1: "classes", 16 | 2: "files", 17 | 3: "functions", 18 | 4: "variables", 19 | 5: "enums", 20 | 6: "pages" 21 | }; 22 | 23 | var indexSectionLabels = 24 | { 25 | 0: "All", 26 | 1: "Classes", 27 | 2: "Files", 28 | 3: "Functions", 29 | 4: "Variables", 30 | 5: "Enumerations", 31 | 6: "Pages" 32 | }; 33 | 34 | -------------------------------------------------------------------------------- /docs/html/search/variables_0.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
    12 |
    Loading...
    13 |
    14 | 19 |
    Searching...
    20 |
    No Matches
    21 | 35 |
    36 | 37 | 38 | -------------------------------------------------------------------------------- /docs/html/search/variables_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['i2s_55',['I2S',['../stm32-i2s_8h.html#ac0af7d21820a3022884016c397fc2401',1,'stm32_i2s']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/html/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/splitbar.png -------------------------------------------------------------------------------- /docs/html/splitbard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/splitbard.png -------------------------------------------------------------------------------- /docs/html/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/sync_off.png -------------------------------------------------------------------------------- /docs/html/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/sync_on.png -------------------------------------------------------------------------------- /docs/html/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/tab_a.png -------------------------------------------------------------------------------- /docs/html/tab_ad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/tab_ad.png -------------------------------------------------------------------------------- /docs/html/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/tab_b.png -------------------------------------------------------------------------------- /docs/html/tab_bd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/tab_bd.png -------------------------------------------------------------------------------- /docs/html/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/tab_h.png -------------------------------------------------------------------------------- /docs/html/tab_hd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/tab_hd.png -------------------------------------------------------------------------------- /docs/html/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/tab_s.png -------------------------------------------------------------------------------- /docs/html/tab_sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/html/tab_sd.png -------------------------------------------------------------------------------- /docs/stm32f411.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pschatzmann/stm32-i2s/830ec637daf0c2276c55e186c50254ea969e5f33/docs/stm32f411.jpeg -------------------------------------------------------------------------------- /examples/i2s-in/i2s-in.ino: -------------------------------------------------------------------------------- 1 | #include "AudioTools.h" 2 | #include "stm32-i2s.h" 3 | 4 | using namespace stm32_i2s; 5 | 6 | CsvStream out(Serial, 2); // ASCII output stream 7 | I2SSettingsSTM32 i2s_settings; 8 | 9 | void writeFromReceive(uint8_t *buffer, uint16_t byteCount, void*){ 10 | out.write(buffer, byteCount); 11 | } 12 | 13 | void setup() { 14 | Serial.begin(115200); 15 | i2s_settings.sample_rate = I2S_AUDIOFREQ_8K; 16 | if (!I2S.beginReadDMA(i2s_settings, writeFromReceive)){ 17 | Serial.println("I2S Error"); 18 | } 19 | } 20 | 21 | void loop() { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /examples/i2s-out/i2s-out.ino: -------------------------------------------------------------------------------- 1 | #include "AudioTools.h" 2 | #include "stm32-i2s.h" 3 | 4 | using namespace stm32_i2s; 5 | 6 | SineWaveGenerator sineWave(32000); // subclass of SoundGenerator with max amplitude of 32000 7 | I2SSettingsSTM32 i2s_settings; 8 | int sample_rate = 8000; 9 | int channels = 1; 10 | 11 | void readToTransmit(uint8_t *buffer, uint16_t byteCount, void*) { 12 | uint16_t samples = byteCount / 2; 13 | int16_t *buffer_16 = (int16_t*) buffer; 14 | for (uint j = 0; j < samples; j+=2) { 15 | int16_t sample = sineWave.readSample(); 16 | buffer_16[j] = sample; 17 | buffer_16[j+1] = sample; 18 | } 19 | } 20 | 21 | void setup() { 22 | Serial.begin(115200); 23 | sineWave.begin(channels, sample_rate, N_B4); 24 | i2s_settings.sample_rate = I2S_AUDIOFREQ_8K; 25 | if (!I2S.beginWriteDMA(i2s_settings, readToTransmit)){ 26 | Serial.println("I2S Error"); 27 | } 28 | } 29 | 30 | void loop() { 31 | 32 | } 33 | -------------------------------------------------------------------------------- /examples/i2s-outin/i2s-outin.ino: -------------------------------------------------------------------------------- 1 | #include "AudioTools.h" 2 | #include "stm32-i2s.h" 3 | 4 | using namespace stm32_i2s; 5 | 6 | I2SSettingsSTM32 i2s_settings; 7 | int sample_rate = 44100; 8 | int channels = 1; 9 | uint8_t buffer[I2S_BUFFER_SIZE]; // byte buffer 10 | 11 | // from buffer to dac 12 | void readToTransmit(uint8_t *data, uint16_t byteCount, void*) { 13 | assert(byteCount==I2S_BUFFER_SIZE); 14 | memmove(data, buffer, byteCount); 15 | } 16 | 17 | // from mic to buffer 18 | void writeToReceive(uint8_t *data, uint16_t byteCount, void*) { 19 | assert(byteCount==I2S_BUFFER_SIZE); 20 | memmove(buffer, data, byteCount); 21 | } 22 | 23 | void setup() { 24 | Serial.begin(115200); 25 | i2s_settings.sample_rate =I2S_AUDIOFREQ_44K; 26 | if (!I2S.beginReadWriteDMA(i2s_settings, readToTransmit, writeToReceive)){ 27 | Serial.println("I2S Error"); 28 | return; 29 | } 30 | } 31 | 32 | void loop() { 33 | 34 | } -------------------------------------------------------------------------------- /library.properties: -------------------------------------------------------------------------------- 1 | name=stm32-i2s 2 | version=0.0.1 3 | author=Phil Schatzmann 4 | maintainer=Phil Schatzmann 5 | sentence=i2s for STM32 6 | paragraph=i2s for STM32 Microcontroller 7 | category=Signal Input/Output 8 | url=https://github.com/pschatzmann/stm32-i2s 9 | architectures=stm32 10 | -------------------------------------------------------------------------------- /src/hal_conf_extra.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file hal_conf_extra.h 3 | * @author Phil Schatzmann 4 | * @version 0.1 5 | * @date 2022-09-25 6 | * @brief for details see https://github.com/stm32duino/wiki/wiki/HAL-configuration 7 | * 8 | * @copyright Copyright (c) 2022 9 | * 10 | */ 11 | #pragma once 12 | #include 13 | //#define HAL_ADC_MODULE_DISABLED 14 | //#define HAL_SPI_MODULE_DISABLED 15 | //#define HAL_DAC_MODULE_DISABLED 16 | #define HAL_I2S_MODULE_ENABLED -------------------------------------------------------------------------------- /src/stm32-config-i2s.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define STM32_I2S_WITH_OBJECT 4 | #define USE_FULL_ASSERT 5 | 6 | #ifndef I2S_FULLDUPLEXMODE_DISABLE 7 | # define I2S_FULLDUPLEXMODE_DISABLE (0x00000000U) 8 | #endif 9 | #ifndef I2S_FULLDUPLEXMODE_ENABLE 10 | # define I2S_FULLDUPLEXMODE_ENABLE (0x00000001U) 11 | #endif 12 | 13 | #ifdef ARDUINO_BLACKPILL_F411CE 14 | #define SPI_INSTANCE_FOR_I2S SPI3 15 | #define STM_I2S_PINS \ 16 | {\ 17 | {mclk, PB_10, GPIO_AF6_SPI3},\ 18 | {bck, PB_3, GPIO_AF6_SPI3},\ 19 | {ws, PA_4, GPIO_AF6_SPI3}, \ 20 | {data_out, PB_4, GPIO_AF7_I2S3ext},\ 21 | {data_in, PB_5, GPIO_AF6_SPI3},\ 22 | } 23 | // 8 MHz / M * N / R => I2S Freq 24 | #define PLLM 16 25 | #define PLLN 192 26 | #define PLLR 2 27 | #define IS_F4 28 | 29 | #endif 30 | 31 | #ifdef ARDUINO_GENERIC_F411VETX 32 | #define SPI_INSTANCE_FOR_I2S SPI3 33 | #define STM_I2S_PINS \ 34 | { \ 35 | {mclk, PC_7, GPIO_AF6_SPI3},\ 36 | {bck, PC_10, GPIO_AF6_SPI3},\ 37 | {ws, PA_4, GPIO_AF6_SPI3},\ 38 | {data_out, PC_12, GPIO_AF6_SPI3},\ 39 | {data_in, PC_3, GPIO_AF6_SPI3}\ 40 | }; 41 | // 8 MHz / M * N / R => I2S Freq 42 | #define PLLM 16 43 | #define PLLN 100 44 | #define PLLR 2 45 | #define IS_F4 46 | 47 | #endif 48 | 49 | #ifdef STM32H750xx 50 | #define SPI_INSTANCE_FOR_I2S SPI3 51 | #define STM_I2S_PINS \ 52 | { \ 53 | {mclk, PC_7, GPIO_AF6_SPI3},\ 54 | {bck, PC_10, GPIO_AF6_SPI3},\ 55 | {ws, PA_4, GPIO_AF6_SPI3},\ 56 | {data_out, PB_2, GPIO_AF6_SPI3},\ 57 | {data_in, PC_11, GPIO_AF6_SPI3}\ 58 | }; 59 | #define IS_H7 60 | #endif 61 | 62 | #ifdef STM32H743xx 63 | #define SPI_INSTANCE_FOR_I2S SPI3 64 | #define STM_I2S_PINS \ 65 | { \ 66 | {mclk, PC_7, GPIO_AF6_SPI3},\ 67 | {bck, PC_10, GPIO_AF6_SPI3},\ 68 | {ws, PA_4, GPIO_AF6_SPI3},\ 69 | {data_out, PB_5, GPIO_AF6_SPI3},\ 70 | {data_in, PB_4, GPIO_AF6_SPI3}\ 71 | }; 72 | #define IS_H7 73 | #endif 74 | 75 | #ifdef STM32F723xx 76 | #define SPI_INSTANCE_FOR_I2S SPI3 77 | #define STM_I2S_PINS \ 78 | { \ 79 | {mclk, PC_7, GPIO_AF6_SPI3},\ 80 | {bck, PC_10, GPIO_AF6_SPI3},\ 81 | {ws, PA_4, GPIO_AF6_SPI3},\ 82 | {data_out, PC_12, GPIO_AF6_SPI3},\ 83 | {data_in, PC_11, GPIO_AF6_SPI3}\ 84 | }; 85 | #define IS_F7 86 | #define SPI_CLOCK_SOURCE LL_RCC_SPI123_CLKSOURCE_PLL1Q 87 | #endif 88 | -------------------------------------------------------------------------------- /src/stm32-i2s.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "stm32-i2s.h" 3 | 4 | #ifdef STM_I2S_PINS 5 | 6 | namespace stm32_i2s { 7 | 8 | //Stm32I2sClass I2S; 9 | Stm32I2sClass *self_I2S = nullptr; 10 | 11 | bool stm32_i2s_is_error = false; 12 | 13 | extern "C" void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s) { 14 | self_I2S->cb_TxRxComplete(hi2s); 15 | } 16 | 17 | extern "C" void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s) { 18 | self_I2S->cb_TxRxHalfComplete(hi2s); 19 | } 20 | 21 | extern "C" void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s) { 22 | self_I2S->cb_TxRxComplete(hi2s); 23 | } 24 | 25 | extern "C" void HAL_I2S_RxHalfCpltCallback(I2S_HandleTypeDef *hi2s) { 26 | self_I2S->cb_TxRxHalfComplete(hi2s); 27 | } 28 | 29 | extern "C" void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s) { Report_Error(10); } 30 | 31 | /** 32 | * @brief This function handles DMA1 stream0 global interrupt. 33 | */ 34 | extern "C" void DMA1_Stream0_IRQHandler(void) { self_I2S->cb_dmaIrqRx(); } 35 | 36 | /** 37 | * @brief This function handles DMA1 stream5 global interrupt. 38 | */ 39 | extern "C" void DMA1_Stream5_IRQHandler(void) { self_I2S->cb_dmaIrqTx(); } 40 | 41 | /** 42 | * @brief I2S MSP Initialization 43 | * This function configures the hardware resources used in this example 44 | * @param hi2s: I2S handle pointer 45 | * @retval None 46 | */ 47 | extern "C" void HAL_I2S_MspInit(I2S_HandleTypeDef *hi2s) { self_I2S->cb_HAL_I2S_MspInit(hi2s); } 48 | 49 | /** 50 | * @brief I2S MSP De-Initialization 51 | * This function freeze the hardware resources used in this example 52 | * @param hi2s: I2S handle pointer 53 | * @retval None 54 | */ 55 | extern "C" void HAL_I2S_MspDeInit(I2S_HandleTypeDef *hi2s) { self_I2S->cb_HAL_I2S_MspDeInit(hi2s); } 56 | /** 57 | * @brief This function is executed in case of error occurrence. 58 | * @retval None 59 | */ 60 | void Report_Error(int no) { 61 | stm32_i2s_is_error = true; 62 | STM32_LOG("%s %d", "stm32-i2s: Error", no); 63 | } 64 | 65 | /** 66 | * @brief Write log output to Serial 67 | */ 68 | void STM32_LOG(const char *fmt, ...) { 69 | char log_buffer[200]; 70 | strcpy(log_buffer, "STM32: "); 71 | va_list arg; 72 | va_start(arg, fmt); 73 | int len = vsnprintf(log_buffer + 7, 200, fmt, arg); 74 | va_end(arg); 75 | self_I2S->STM32_LOG(log_buffer); 76 | va_end(arg); 77 | } 78 | 79 | #ifdef USE_FULL_ASSERT 80 | /** 81 | * @brief Reports the name of the source file and the source line number 82 | * where the assert_param error has occurred. 83 | * @param file: pointer to the source file name 84 | * @param line: assert_param error line source number 85 | * @retval None 86 | */ 87 | extern "C" void assert_failed(uint8_t *file, uint32_t line) { 88 | /* User can add his own implementation to report the file name and line 89 | number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, 90 | line) */ 91 | STM32_LOG("stm32-i2s: Wrong parameters value: file %s on line %d", file, 92 | line); 93 | } 94 | #endif /* USE_FULL_ASSERT */ 95 | 96 | } 97 | 98 | #endif // STM_I2S_PINS 99 | 100 | --------------------------------------------------------------------------------