Переглянути джерело

update:tp i2c读写函数

Dozingfiretruck 11 місяців тому
батько
коміт
d9054f30e3
1 змінених файлів з 19 додано та 19 видалено
  1. 19 19
      components/tp/luat_tp_reg.h

+ 19 - 19
components/tp/luat_tp_reg.h

@@ -12,13 +12,11 @@ static inline int tp_i2c_init(luat_tp_config_t* luat_tp_config){
     return 0;
 }
 
-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;
+static inline int tp_i2c_write(luat_tp_config_t* luat_tp_config, uint8_t* cmd, size_t cmd_len, void* data, size_t data_len){
+    size_t len = cmd_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);
+    memcpy(data_reg, cmd, cmd_len);
+    memcpy(data_reg+cmd_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);
     }else{
@@ -26,42 +24,44 @@ static inline int tp_i2c_write_reg(luat_tp_config_t* luat_tp_config, uint8_t* re
     }
 }
 
-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];
-    }
+static inline int tp_i2c_read(luat_tp_config_t* luat_tp_config, uint8_t* cmd, size_t cmd_len, void* data, size_t data_len, uint8_t stop){
     if (luat_tp_config->soft_i2c != NULL){
-        i2c_soft_send(luat_tp_config->soft_i2c, luat_tp_config->address, (char *)data_reg, reg_len, stop);
+        i2c_soft_send(luat_tp_config->soft_i2c, luat_tp_config->address, (char *)cmd, cmd_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 *)data_reg, reg_len, stop);
+        luat_i2c_send(luat_tp_config->i2c_id, luat_tp_config->address, (char *)cmd, cmd_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);
+    uint8_t data_reg[sizeof(uint8_t)] = {reg};
+    return tp_i2c_write(luat_tp_config, data_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);
+    uint8_t data_reg[sizeof(uint8_t)] = {reg};
+    return tp_i2c_read(luat_tp_config, data_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){
-    return tp_i2c_write_reg(luat_tp_config, &reg, sizeof(uint16_t), buff, len);
+    uint8_t data_reg[sizeof(uint16_t)] = {reg>>8, reg&0xff};
+    return tp_i2c_write(luat_tp_config, data_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){
-    return tp_i2c_read_reg(luat_tp_config, &reg, sizeof(uint16_t), buff, len, stop);
+    uint8_t data_reg[sizeof(uint16_t)] = {reg>>8, reg&0xff};
+    return tp_i2c_read(luat_tp_config, data_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){
-    return tp_i2c_write_reg(luat_tp_config, &reg, sizeof(uint32_t), buff, len);
+    uint8_t data_reg[sizeof(uint32_t)] = {(reg>>24)&0xff,(reg>>16)&0xff,(reg>>8)&0xff,reg&0xff};
+    return tp_i2c_write(luat_tp_config, data_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){
-    return tp_i2c_read_reg(luat_tp_config, &reg, sizeof(uint32_t), buff, len, stop);
+    uint8_t data_reg[sizeof(uint32_t)] = {(reg>>24)&0xff,(reg>>16)&0xff,(reg>>8)&0xff,reg&0xff};
+    return tp_i2c_read(luat_tp_config, data_reg, sizeof(uint32_t), buff, len, stop);
 }