Dozingfiretruck 11 месяцев назад
Родитель
Сommit
a2e425d220
2 измененных файлов с 35 добавлено и 51 удалено
  1. 5 4
      components/tp/luat_tp_gt911.c
  2. 30 47
      components/tp/luat_tp_reg.h

+ 5 - 4
components/tp/luat_tp_gt911.c

@@ -234,12 +234,13 @@ static int tp_gt911_gpio_init(luat_tp_config_t* luat_tp_config){
     // luat_gpio_set(luat_tp_config->pin_int, Luat_GPIO_HIGH);
     /* 0x5D */
     luat_gpio_set(luat_tp_config->pin_int, Luat_GPIO_LOW);
+    
+    if (luat_tp_config->pin_rst != LUAT_GPIO_NONE){
 
-    luat_rtos_task_sleep(1);
-    luat_gpio_set(luat_tp_config->pin_rst, Luat_GPIO_HIGH);
-    luat_rtos_task_sleep(5);
+        luat_rtos_task_sleep(1);
+        luat_gpio_set(luat_tp_config->pin_rst, Luat_GPIO_HIGH);
+        luat_rtos_task_sleep(5);
 
-    if (luat_tp_config->pin_rst != LUAT_GPIO_NONE){
         luat_rtos_task_sleep(2);
         luat_gpio_set(luat_tp_config->pin_rst, Luat_GPIO_HIGH);
     }

+ 30 - 47
components/tp/luat_tp_reg.h

@@ -12,73 +12,56 @@ static inline int tp_i2c_init(luat_tp_config_t* luat_tp_config){
     return 0;
 }
 
-static inline int tp_i2c_write_reg8(luat_tp_config_t* luat_tp_config, uint8_t reg, void* buff, size_t len){
-    uint8_t data_reg[len+1];
-    data_reg[0] = reg;
-    memcpy(data_reg+1, buff, len);
+static inline int tp_i2c_write_reg(luat_tp_config_t* luat_tp_config, uint8_t* reg, size_t reg_len, void* data, size_t data_len){
+    size_t len = reg_len+data_len;
+    uint8_t data_reg[len];
+    for (size_t i = 0; i < reg_len; i++){
+        data_reg[i] = reg[reg_len-i-1];
+    }
+    memcpy(data_reg+reg_len, data, data_len);
     if (luat_tp_config->soft_i2c != NULL){
-        return i2c_soft_send(luat_tp_config->soft_i2c, luat_tp_config->address, (char *)data_reg, len+1, 1);
+        return i2c_soft_send(luat_tp_config->soft_i2c, luat_tp_config->address, (char *)data_reg, len, 1);
     }else{
-        return luat_i2c_send(luat_tp_config->i2c_id, luat_tp_config->address, data_reg, len+1, 1);
+        return luat_i2c_send(luat_tp_config->i2c_id, luat_tp_config->address, data_reg, len, 1);
     }
 }
 
-static inline int tp_i2c_read_reg8(luat_tp_config_t* luat_tp_config, uint8_t reg, void* buff, size_t len, uint8_t stop){
+static inline int tp_i2c_read_reg(luat_tp_config_t* luat_tp_config, uint8_t* reg, size_t reg_len, void* data, size_t data_len, uint8_t stop){
+    uint8_t data_reg[reg_len];
+    for (size_t i = 0; i < reg_len; i++){
+        data_reg[i] = reg[reg_len-i-1];
+    }
     if (luat_tp_config->soft_i2c != NULL){
-        i2c_soft_send(luat_tp_config->soft_i2c, luat_tp_config->address, (char *)&reg, 1, stop);
-        return i2c_soft_recv(luat_tp_config->soft_i2c, luat_tp_config->address, buff, len);
+        i2c_soft_send(luat_tp_config->soft_i2c, luat_tp_config->address, (char *)data_reg, reg_len, stop);
+        return i2c_soft_recv(luat_tp_config->soft_i2c, luat_tp_config->address, data, data_len);
     }else{
-        luat_i2c_send(luat_tp_config->i2c_id, luat_tp_config->address, (char *)&reg, 1, stop);
-        return luat_i2c_recv(luat_tp_config->i2c_id, luat_tp_config->address, buff, len);
+        luat_i2c_send(luat_tp_config->i2c_id, luat_tp_config->address, (char *)data_reg, reg_len, stop);
+        return luat_i2c_recv(luat_tp_config->i2c_id, luat_tp_config->address, data, data_len);
     }
 }
 
+static inline int tp_i2c_write_reg8(luat_tp_config_t* luat_tp_config, uint8_t reg, void* buff, size_t len){
+    return tp_i2c_write_reg(luat_tp_config, &reg, sizeof(uint8_t), buff, len);
+}
+
+static inline int tp_i2c_read_reg8(luat_tp_config_t* luat_tp_config, uint8_t reg, void* buff, size_t len, uint8_t stop){
+    return tp_i2c_read_reg(luat_tp_config, &reg, sizeof(uint8_t), buff, len, stop);
+}
+
 static inline int tp_i2c_write_reg16(luat_tp_config_t* luat_tp_config, uint16_t reg, void* buff, size_t len){
-    uint8_t data_reg[len+2];
-    data_reg[0] = (reg>>8)&0xff;
-    data_reg[1] = (reg&0xff);
-    memcpy(data_reg+2, buff, len);
-    if (luat_tp_config->soft_i2c != NULL){
-        return i2c_soft_send(luat_tp_config->soft_i2c, luat_tp_config->address, (char *)data_reg, len+2, 1);
-    }else{
-        return luat_i2c_send(luat_tp_config->i2c_id, luat_tp_config->address, data_reg, len+2, 1);
-    }
+    return tp_i2c_write_reg(luat_tp_config, &reg, sizeof(uint16_t), buff, len);
 }
 
 static inline int tp_i2c_read_reg16(luat_tp_config_t* luat_tp_config, uint16_t reg, void* buff, size_t len, uint8_t stop){
-    uint8_t data_reg[sizeof(uint16_t)] = {reg>>8, reg&0xff};
-    if (luat_tp_config->soft_i2c != NULL){
-        i2c_soft_send(luat_tp_config->soft_i2c, luat_tp_config->address, (char *)data_reg, sizeof(uint16_t), stop);
-        return i2c_soft_recv(luat_tp_config->soft_i2c, luat_tp_config->address, buff, len);
-    }else{
-        luat_i2c_send(luat_tp_config->i2c_id, luat_tp_config->address, data_reg, sizeof(uint16_t), stop);
-        return luat_i2c_recv(luat_tp_config->i2c_id, luat_tp_config->address, buff, len);
-    }
+    return tp_i2c_read_reg(luat_tp_config, &reg, sizeof(uint16_t), buff, len, stop);
 }
 
 static inline int tp_i2c_write_reg32(luat_tp_config_t* luat_tp_config, uint32_t reg, void* buff, size_t len){
-    uint8_t data_reg[len+sizeof(uint32_t)];
-    data_reg[0] = (reg>>24)&0xff;
-    data_reg[1] = (reg>>16)&0xff;
-    data_reg[2] = (reg>>8)&0xff;
-    data_reg[3] = (reg&0xff);
-    memcpy(data_reg+sizeof(uint32_t), buff, len);
-    if (luat_tp_config->soft_i2c != NULL){
-        return i2c_soft_send(luat_tp_config->soft_i2c, luat_tp_config->address, (char *)data_reg, len+sizeof(uint32_t), 1);
-    }else{
-        return luat_i2c_send(luat_tp_config->i2c_id, luat_tp_config->address, data_reg, len+sizeof(uint32_t), 1);
-    }
+    return tp_i2c_write_reg(luat_tp_config, &reg, sizeof(uint32_t), buff, len);
 }
 
 static inline int tp_i2c_read_reg32(luat_tp_config_t* luat_tp_config, uint32_t reg, void* buff, size_t len, uint8_t stop){
-    uint8_t data_reg[sizeof(uint32_t)] = {(reg>>24)&0xff, (reg>>16)&0xff, (reg>>8)&0xff, reg&0xff};
-    if (luat_tp_config->soft_i2c != NULL){
-        i2c_soft_send(luat_tp_config->soft_i2c, luat_tp_config->address, (char *)data_reg, sizeof(uint32_t), stop);
-        return i2c_soft_recv(luat_tp_config->soft_i2c, luat_tp_config->address, buff, len);
-    }else{
-        luat_i2c_send(luat_tp_config->i2c_id, luat_tp_config->address, data_reg, sizeof(uint32_t), stop);
-        return luat_i2c_recv(luat_tp_config->i2c_id, luat_tp_config->address, buff, len);
-    }
+    return tp_i2c_read_reg(luat_tp_config, &reg, sizeof(uint32_t), buff, len, stop);
 }