Просмотр исходного кода

fix(spi): fixed undesired touching to DMA

Closes https://github.com/espressif/esp-idf/issues/12241
Xiao Xufeng 2 лет назад
Родитель
Сommit
8315221523
3 измененных файлов с 9 добавлено и 3 удалено
  1. 3 1
      components/hal/spi_hal.c
  2. 3 1
      components/hal/spi_slave_hal.c
  3. 3 1
      components/hal/spi_slave_hd_hal.c

+ 3 - 1
components/hal/spi_hal.c

@@ -71,7 +71,9 @@ void spi_hal_init(spi_hal_context_t *hal, uint32_t host_id, const spi_hal_config
     spi_ll_set_mosi_free_level(hw, 0);
 #endif
     spi_ll_master_init(hw);
-    s_spi_hal_dma_init_config(hal);
+    if (config->dma_enabled) {
+        s_spi_hal_dma_init_config(hal);
+    }
 
     //Force a transaction done interrupt. This interrupt won't fire yet because
     //we initialized the SPI interrupt as disabled. This way, we can just

+ 3 - 1
components/hal/spi_slave_hal.c

@@ -41,7 +41,9 @@ void spi_slave_hal_init(spi_slave_hal_context_t *hal, const spi_slave_hal_config
     hal->dma_in = hal_config->dma_in;
     hal->dma_out = hal_config->dma_out;
 
-    s_spi_slave_hal_dma_init_config(hal);
+    if (hal->use_dma) {
+        s_spi_slave_hal_dma_init_config(hal);
+    }
     spi_ll_slave_init(hal->hw);
 
     //Force a transaction done interrupt. This interrupt won't fire yet because we initialized the SPI interrupt as

+ 3 - 1
components/hal/spi_slave_hd_hal.c

@@ -71,7 +71,9 @@ void spi_slave_hd_hal_init(spi_slave_hd_hal_context_t *hal, const spi_slave_hd_h
     hal->rx_dma_head = &hal->rx_dummy_head;
 
     //Configure slave
-    s_spi_slave_hd_hal_dma_init_config(hal);
+    if (hal_config->dma_enabled) {
+        s_spi_slave_hd_hal_dma_init_config(hal);
+    }
 
     spi_ll_slave_hd_init(hw);
     spi_ll_set_addr_bitlen(hw, hal_config->address_bits);