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

Merge branch 'bugfix/fix_wrong_rmt_channel_signal' into 'master'

Bugfix/fix wrong rmt channel signal

See merge request espressif/esp-idf!11194
Michael (XIAO Xufeng) 5 лет назад
Родитель
Сommit
e7b97fe086

+ 1 - 0
components/hal/esp32/include/hal/timer_ll.h

@@ -103,6 +103,7 @@ static inline void timer_ll_set_counter_value(timg_dev_t *hw, timer_idx_t timer_
 FORCE_INLINE_ATTR void timer_ll_get_counter_value(timg_dev_t *hw, timer_idx_t timer_num, uint64_t *timer_val)
 {
     hw->hw_timer[timer_num].update = 1;
+    while (hw->hw_timer[timer_num].update) {}
     *timer_val = ((uint64_t) hw->hw_timer[timer_num].cnt_high << 32) | (hw->hw_timer[timer_num].cnt_low);
 }
 

+ 1 - 0
components/hal/esp32s2/include/hal/timer_ll.h

@@ -99,6 +99,7 @@ static inline void timer_ll_set_counter_value(timg_dev_t *hw, timer_idx_t timer_
 FORCE_INLINE_ATTR void timer_ll_get_counter_value(timg_dev_t *hw, timer_idx_t timer_num, uint64_t *timer_val)
 {
     hw->hw_timer[timer_num].update.update = 1;
+    while (hw->hw_timer[timer_num].update.update) {}
     *timer_val = ((uint64_t) hw->hw_timer[timer_num].cnt_high << 32) | (hw->hw_timer[timer_num].cnt_low);
 }
 

+ 1 - 0
components/hal/esp32s3/include/hal/timer_ll.h

@@ -100,6 +100,7 @@ static inline void timer_ll_set_counter_value(timg_dev_t *hw, timer_idx_t timer_
 FORCE_INLINE_ATTR void timer_ll_get_counter_value(timg_dev_t *hw, timer_idx_t timer_num, uint64_t *timer_val)
 {
     hw->hw_timer[timer_num].update.update = 1;
+    while (hw->hw_timer[timer_num].update.update) {}
     *timer_val = ((uint64_t) hw->hw_timer[timer_num].cnt_high.hi << 32) | (hw->hw_timer[timer_num].cnt_low);
 }
 

+ 12 - 12
components/soc/esp32/rmt_periph.c

@@ -22,35 +22,35 @@ const rmt_signal_conn_t rmt_periph_signals = {
     .channels = {
         [0] = {
             .tx_sig = RMT_SIG_OUT0_IDX,
-            .rx_sig = -1
+            .rx_sig = RMT_SIG_IN0_IDX
         },
         [1] = {
             .tx_sig = RMT_SIG_OUT1_IDX,
-            .rx_sig = -1
+            .rx_sig = RMT_SIG_IN1_IDX
         },
         [2] = {
             .tx_sig = RMT_SIG_OUT2_IDX,
-            .rx_sig = -1
+            .rx_sig = RMT_SIG_IN2_IDX
         },
         [3] = {
             .tx_sig = RMT_SIG_OUT3_IDX,
-            .rx_sig = -1
+            .rx_sig = RMT_SIG_IN3_IDX
         },
         [4] = {
-            .tx_sig = -1,
-            .rx_sig = RMT_SIG_IN0_IDX
+            .tx_sig = RMT_SIG_OUT4_IDX,
+            .rx_sig = RMT_SIG_IN4_IDX
         },
         [5] = {
-            .tx_sig = -1,
-            .rx_sig = RMT_SIG_IN1_IDX
+            .tx_sig = RMT_SIG_OUT5_IDX,
+            .rx_sig = RMT_SIG_IN5_IDX
         },
         [6] = {
-            .tx_sig = -1,
-            .rx_sig = RMT_SIG_IN2_IDX
+            .tx_sig = RMT_SIG_OUT6_IDX,
+            .rx_sig = RMT_SIG_IN6_IDX
         },
         [7] = {
-            .tx_sig = -1,
-            .rx_sig = RMT_SIG_IN3_IDX
+            .tx_sig = RMT_SIG_OUT7_IDX,
+            .rx_sig = RMT_SIG_IN7_IDX
         }
     }
 };