Преглед изворни кода

i2s: add notes for the read task of i2s basic examples

laokaiyao пре 3 година
родитељ
комит
3bdcf2edf5

+ 1 - 1
components/driver/i2s/i2s_common.c

@@ -242,7 +242,7 @@ static esp_err_t i2s_register_channel(i2s_controller_t *i2s_obj, i2s_dir_t dir,
 
     esp_err_t ret = ESP_OK;
 
-    i2s_chan_handle_t new_chan = (i2s_chan_handle_t)heap_caps_calloc(1, sizeof(struct i2s_channel_t), I2S_MEM_ALLOC_CAPS);
+    i2s_chan_handle_t new_chan = (i2s_chan_handle_t)heap_caps_calloc(1, sizeof(struct i2s_channel_obj_t), I2S_MEM_ALLOC_CAPS);
     ESP_RETURN_ON_FALSE(new_chan, ESP_ERR_NO_MEM, TAG, "No memory for new channel");
     new_chan->mode = I2S_COMM_MODE_NONE;
     new_chan->role = I2S_ROLE_MASTER; // Set default role to master

+ 3 - 0
examples/peripherals/i2s/i2s_basic/i2s_pdm/main/i2s_pdm_rx.c

@@ -60,6 +60,9 @@ void i2s_example_pdm_rx_task(void *args)
     i2s_chan_handle_t rx_chan = i2s_example_init_pdm_rx();
 
     size_t r_bytes = 0;
+    /* ATTENTION: The print and delay in the read task only for monitoring the data by human,
+     * Normally there shouldn't be any delays to ensure a short polling time,
+     * Otherwise the dma buffer will overflow and lead to the data lost */
     while (1) {
         /* Read i2s data */
         if (i2s_channel_read(rx_chan, r_buf, EXAMPLE_BUFF_SIZE, &r_bytes, 1000) == ESP_OK) {

+ 3 - 0
examples/peripherals/i2s/i2s_basic/i2s_std/main/i2s_std_example_main.c

@@ -53,6 +53,9 @@ static void i2s_example_read_task(void *args)
     uint8_t *r_buf = (uint8_t *)calloc(1, EXAMPLE_BUFF_SIZE);
     assert(r_buf); // Check if r_buf allocation success
     size_t r_bytes = 0;
+    /* ATTENTION: The print and delay in the read task only for monitoring the data by human,
+     * Normally there shouldn't be any delays to ensure a short polling time,
+     * Otherwise the dma buffer will overflow and lead to the data lost */
     while (1) {
         /* Read i2s data */
         if (i2s_channel_read(rx_chan, r_buf, EXAMPLE_BUFF_SIZE, &r_bytes, 1000) == ESP_OK) {

+ 3 - 0
examples/peripherals/i2s/i2s_basic/i2s_tdm/main/i2s_tdm_example_main.c

@@ -38,6 +38,9 @@ static void i2s_example_read_task(void *args)
     uint8_t *r_buf = (uint8_t *)calloc(1, EXAMPLE_BUFF_SIZE);
     assert(r_buf); // Check if r_buf allocation success
     size_t r_bytes = 0;
+    /* ATTENTION: The print and delay in the read task only for monitoring the data by human,
+     * Normally there shouldn't be any delays to ensure a short polling time,
+     * Otherwise the dma buffer will overflow and lead to the data lost */
     while (1) {
         /* Read i2s data */
         if (i2s_channel_read(rx_chan, r_buf, EXAMPLE_BUFF_SIZE, &r_bytes, 1000) == ESP_OK) {