Sfoglia il codice sorgente

fix: 修复adxl34x数据处理BUG,修复spl06不可读取BUG

zenchrer 5 mesi fa
parent
commit
fd77b572b5

+ 2 - 5
module/Air780E/demolib/adxl34x.lua

@@ -135,11 +135,8 @@ log.info("adxl34x_data", "adxl34x_data.x"..(adxl34x_data.x),"adxl34x_data.y"..(a
 function adxl34x.get_data()
     local accel={x=nil,y=nil,z=nil}
     i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAX0)
-    _,accel.x = pack.unpack(i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 2),">h")
-    i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAY0)
-    _,accel.y = pack.unpack(i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 2),">h")
-    i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAZ0)
-    _,accel.z = pack.unpack(i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 2),">h")
+    rcvData = i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 6)
+    accel.x ,accel.y, accel.z = string.unpack("<hhh", rcvData)
     return accel
 end
 

+ 4 - 4
module/Air780E/demolib/spl06.lua

@@ -79,11 +79,11 @@ local function i2cReadTwoData(i2caddr,regaddr)
         msb = 0
         lsb = 0
         log.info("spl06 two data","the data is null")
-        return msb256+lsb
+        return msb*256+lsb
     else
     --log.info("spl06 two data","msb:"..msb.." lsb:"..lsb)
         if regaddr ==0x10 then
-            return msb16 + bit.rshift((lsb&0xF0),4)
+            return msb*16 + bit.rshift((lsb&0xF0),4)
         elseif regaddr ==0x11 then
             return (msb&0x0f)*256 + lsb
         else
@@ -106,7 +106,7 @@ local function chip_check()
         if revData:byte() ~= nil then
             SPL06_ADDRESS_ADR = SPL06_ADDRESS_ADR_LOW
         else
-            log.info("i2c", "Can't find adxl34x device")
+            log.info("i2c", "Can't find SPL06 device")
             return false
         end
     end
@@ -130,7 +130,7 @@ spl06初始化
 @usage
 spl06.init(0)
 ]]
-function spl06.init(i2cid)
+function spl06.init(i2c_id)
     i2cid = i2c_id
     sys.wait(20)--20 毫秒等待设备稳定
     if chip_check() then

+ 2 - 5
module/Air780EHM_Air780EHV_Air780EGH/demolib/adxl34x.lua

@@ -135,11 +135,8 @@ log.info("adxl34x_data", "adxl34x_data.x"..(adxl34x_data.x),"adxl34x_data.y"..(a
 function adxl34x.get_data()
     local accel={x=nil,y=nil,z=nil}
     i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAX0)
-    _,accel.x = pack.unpack(i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 2),">h")
-    i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAY0)
-    _,accel.y = pack.unpack(i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 2),">h")
-    i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAZ0)
-    _,accel.z = pack.unpack(i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 2),">h")
+    rcvData = i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 6)
+    accel.x ,accel.y, accel.z = string.unpack("<hhh", rcvData)
     return accel
 end
 

+ 4 - 4
module/Air780EHM_Air780EHV_Air780EGH/demolib/spl06.lua

@@ -79,11 +79,11 @@ local function i2cReadTwoData(i2caddr,regaddr)
         msb = 0
         lsb = 0
         log.info("spl06 two data","the data is null")
-        return msb256+lsb
+        return msb*256+lsb
     else
     --log.info("spl06 two data","msb:"..msb.." lsb:"..lsb)
         if regaddr ==0x10 then
-            return msb16 + bit.rshift((lsb&0xF0),4)
+            return msb*16 + bit.rshift((lsb&0xF0),4)
         elseif regaddr ==0x11 then
             return (msb&0x0f)*256 + lsb
         else
@@ -106,7 +106,7 @@ local function chip_check()
         if revData:byte() ~= nil then
             SPL06_ADDRESS_ADR = SPL06_ADDRESS_ADR_LOW
         else
-            log.info("i2c", "Can't find adxl34x device")
+            log.info("i2c", "Can't find SPL06 device")
             return false
         end
     end
@@ -130,7 +130,7 @@ spl06初始化
 @usage
 spl06.init(0)
 ]]
-function spl06.init(i2cid)
+function spl06.init(i2c_id)
     i2cid = i2c_id
     sys.wait(20)--20 毫秒等待设备稳定
     if chip_check() then

+ 2 - 5
module/Air780EPM/demolib/adxl34x.lua

@@ -135,11 +135,8 @@ log.info("adxl34x_data", "adxl34x_data.x"..(adxl34x_data.x),"adxl34x_data.y"..(a
 function adxl34x.get_data()
     local accel={x=nil,y=nil,z=nil}
     i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAX0)
-    _,accel.x = pack.unpack(i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 2),">h")
-    i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAY0)
-    _,accel.y = pack.unpack(i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 2),">h")
-    i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAZ0)
-    _,accel.z = pack.unpack(i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 2),">h")
+    rcvData = i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 6)
+    accel.x ,accel.y, accel.z = string.unpack("<hhh", rcvData)
     return accel
 end
 

+ 4 - 4
module/Air780EPM/demolib/spl06.lua

@@ -79,11 +79,11 @@ local function i2cReadTwoData(i2caddr,regaddr)
         msb = 0
         lsb = 0
         log.info("spl06 two data","the data is null")
-        return msb256+lsb
+        return msb*256+lsb
     else
     --log.info("spl06 two data","msb:"..msb.." lsb:"..lsb)
         if regaddr ==0x10 then
-            return msb16 + bit.rshift((lsb&0xF0),4)
+            return msb*16 + bit.rshift((lsb&0xF0),4)
         elseif regaddr ==0x11 then
             return (msb&0x0f)*256 + lsb
         else
@@ -106,7 +106,7 @@ local function chip_check()
         if revData:byte() ~= nil then
             SPL06_ADDRESS_ADR = SPL06_ADDRESS_ADR_LOW
         else
-            log.info("i2c", "Can't find adxl34x device")
+            log.info("i2c", "Can't find SPL06 device")
             return false
         end
     end
@@ -130,7 +130,7 @@ spl06初始化
 @usage
 spl06.init(0)
 ]]
-function spl06.init(i2cid)
+function spl06.init(i2c_id)
     i2cid = i2c_id
     sys.wait(20)--20 毫秒等待设备稳定
     if chip_check() then

+ 2 - 5
module/Air8000/demolib/adxl34x.lua

@@ -135,11 +135,8 @@ log.info("adxl34x_data", "adxl34x_data.x"..(adxl34x_data.x),"adxl34x_data.y"..(a
 function adxl34x.get_data()
     local accel={x=nil,y=nil,z=nil}
     i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAX0)
-    _,accel.x = pack.unpack(i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 2),">h")
-    i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAY0)
-    _,accel.y = pack.unpack(i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 2),">h")
-    i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAZ0)
-    _,accel.z = pack.unpack(i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 2),">h")
+    rcvData = i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 6)
+    accel.x ,accel.y, accel.z = string.unpack("<hhh", rcvData)
     return accel
 end
 

+ 4 - 4
module/Air8000/demolib/spl06.lua

@@ -79,11 +79,11 @@ local function i2cReadTwoData(i2caddr,regaddr)
         msb = 0
         lsb = 0
         log.info("spl06 two data","the data is null")
-        return msb256+lsb
+        return msb*256+lsb
     else
     --log.info("spl06 two data","msb:"..msb.." lsb:"..lsb)
         if regaddr ==0x10 then
-            return msb16 + bit.rshift((lsb&0xF0),4)
+            return msb*16 + bit.rshift((lsb&0xF0),4)
         elseif regaddr ==0x11 then
             return (msb&0x0f)*256 + lsb
         else
@@ -106,7 +106,7 @@ local function chip_check()
         if revData:byte() ~= nil then
             SPL06_ADDRESS_ADR = SPL06_ADDRESS_ADR_LOW
         else
-            log.info("i2c", "Can't find adxl34x device")
+            log.info("i2c", "Can't find SPL06 device")
             return false
         end
     end
@@ -130,7 +130,7 @@ spl06初始化
 @usage
 spl06.init(0)
 ]]
-function spl06.init(i2cid)
+function spl06.init(i2c_id)
     i2cid = i2c_id
     sys.wait(20)--20 毫秒等待设备稳定
     if chip_check() then

+ 2 - 5
module/Air8101/demolib/adxl34x.lua

@@ -135,11 +135,8 @@ log.info("adxl34x_data", "adxl34x_data.x"..(adxl34x_data.x),"adxl34x_data.y"..(a
 function adxl34x.get_data()
     local accel={x=nil,y=nil,z=nil}
     i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAX0)
-    _,accel.x = pack.unpack(i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 2),">h")
-    i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAY0)
-    _,accel.y = pack.unpack(i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 2),">h")
-    i2c.send(i2cid, ADXL34X_ADDRESS_ADR,ADXL34X_DATAZ0)
-    _,accel.z = pack.unpack(i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 2),">h")
+    rcvData = i2c.recv(i2cid, ADXL34X_ADDRESS_ADR, 6)
+    accel.x ,accel.y, accel.z = string.unpack("<hhh", rcvData)
     return accel
 end
 

+ 4 - 4
module/Air8101/demolib/spl06.lua

@@ -79,11 +79,11 @@ local function i2cReadTwoData(i2caddr,regaddr)
         msb = 0
         lsb = 0
         log.info("spl06 two data","the data is null")
-        return msb256+lsb
+        return msb*256+lsb
     else
     --log.info("spl06 two data","msb:"..msb.." lsb:"..lsb)
         if regaddr ==0x10 then
-            return msb16 + bit.rshift((lsb&0xF0),4)
+            return msb*16 + bit.rshift((lsb&0xF0),4)
         elseif regaddr ==0x11 then
             return (msb&0x0f)*256 + lsb
         else
@@ -106,7 +106,7 @@ local function chip_check()
         if revData:byte() ~= nil then
             SPL06_ADDRESS_ADR = SPL06_ADDRESS_ADR_LOW
         else
-            log.info("i2c", "Can't find adxl34x device")
+            log.info("i2c", "Can't find SPL06 device")
             return false
         end
     end
@@ -130,7 +130,7 @@ spl06初始化
 @usage
 spl06.init(0)
 ]]
-function spl06.init(i2cid)
+function spl06.init(i2c_id)
     i2cid = i2c_id
     sys.wait(20)--20 毫秒等待设备稳定
     if chip_check() then