فهرست منبع

Change i2c_struct to force 32bit access

me-no-dev 4 سال پیش
والد
کامیت
c31ba2b21b
2فایلهای تغییر یافته به همراه4 افزوده شده و 4 حذف شده
  1. 2 2
      components/hal/esp32s3/include/hal/i2c_ll.h
  2. 2 2
      components/soc/esp32s3/include/soc/i2c_struct.h

+ 2 - 2
components/hal/esp32s3/include/hal/i2c_ll.h

@@ -571,7 +571,7 @@ static inline void i2c_ll_get_scl_timing(i2c_dev_t *hw, int *high_period, int *l
 static inline void i2c_ll_write_txfifo(i2c_dev_t *hw, uint8_t *ptr, uint8_t len)
 {
     for (int i = 0; i< len; i++) {
-        hw->fifo_data.val = ptr[i];
+        hw->fifo_data.data = ptr[i];
     }
 }
 
@@ -587,7 +587,7 @@ static inline void i2c_ll_write_txfifo(i2c_dev_t *hw, uint8_t *ptr, uint8_t len)
 static inline void i2c_ll_read_rxfifo(i2c_dev_t *hw, uint8_t *ptr, uint8_t len)
 {
     for(int i = 0; i < len; i++) {
-        ptr[i] = hw->fifo_data.val;
+        ptr[i] = hw->fifo_data.data;
     }
 }
 

+ 2 - 2
components/soc/esp32s3/include/soc/i2c_struct.h

@@ -116,8 +116,8 @@ typedef volatile struct {
     } fifo_conf;
     union {
         struct {
-            uint8_t data;
-            uint8_t reserved[3];
+            uint32_t data                           :   8;
+            uint32_t reserved8                      :   24;
         };
         uint32_t val;
     } fifo_data;