294 Star 1.6K Fork 383

GVP合宙Luat / LuatOS

 / 详情

Air302 i2c.readSHT30期望增加读取超时

已完成
任务
创建于  
2021-09-07 22:24

固件版本

  • 固件名称: LuatOS@ec616 core V0007 bsp V0007

描述一下这个问题

Air302 i2c.readSHT30拔掉传感器时会一直卡在读取那边,导致后面代码无法执行。
最好可以设置超时。

复现步骤

    i2c.setup(0)
    local re, H, T = i2c.readSHT30(0)
    if re then  
        wd = T / 10
        sd = H / 10
    else
      log.info("sht30 error")
    end
    i2c.close(0)

日志

[2021-09-07 22:06:54.308] I/luat.main LuatOS@ec616 core V0007 bsp V0007
[2021-09-07 22:06:54.316] I/luat.main ROM Build: Sep 1 2021 22:44:41
[2021-09-07 22:06:54.316] D/luat.vfs register fs air302
[2021-09-07 22:06:54.316] D/luat.vfs register fs luadb
[2021-09-07 22:06:54.316] D/luat.vfs mount air302
[2021-09-07 22:06:54.316] D/luat.vfs mount luadb /luadb/
[2021-09-07 22:06:54.316] D/luat.fs.LFS luat_fs_fopen /update.bin rb 00000000
[2021-09-07 22:06:54.341] D/luat.fs.LFS luat_fs_fopen /rollback_mark rb 00000000
[2021-09-07 22:06:54.341] D/luat.main boot luavm 65528 2576 2576
[2021-09-07 22:06:54.341] D/luat.main boot sys 39336 8632 8800
[2021-09-07 22:06:54.341] D/luat.main loadlibs luavm 65528 7272 7272
[2021-09-07 22:06:54.341] D/luat.main loadlibs sys 39336 8544 9008
[2021-09-07 22:06:54.341] D/luat.fs.LFS luat_fs_fopen /main.luac r 00039810
[2021-09-07 22:06:54.341] D/luat.fs.LFS luat_fs_fopen /main.luac r 00039810
[2021-09-07 22:06:54.341] D/luat.fs.LFS luat_fs_fopen /main.luac rb 00039810
[2021-09-07 22:06:54.366] D/luat.fs.LFS luat_fs_fopen /sys.luac r 00039810
[2021-09-07 22:06:54.366] D/luat.fs.LFS luat_fs_fopen /sys.luac r 00039810
[2021-09-07 22:06:54.366] D/luat.fs.LFS luat_fs_fopen /sys.luac rb 00039810
[2021-09-07 22:06:54.374] I/user.NBWD_PSM 2.0.0 1005
[2021-09-07 22:06:54.374] D/luat.i2c i2c0 setup complete

评论 (8)

Mooke 创建了任务
Mooke 关联仓库设置为合宙Luat/LuatOS
展开全部操作日志

好,我试试

软件i2c读取SHT30传感器数据会不准确。 有时准确有时不准确。
应该是温度26.5 湿度66.3,读取出来温度是130,湿度100

  local softI2C = i2c.createSoft(10, 8, i2c.FAST)
  i2c.send(softI2C, 0x44, string.char(0x2C, 0x06))
  sys.wait(5) -- 5ms
  local data = i2c.recv(softI2C, 0x44, 6)
  if data ~= nil and #data == 6  then
      local _,tval,ccrc,hval,hcrc = pack.unpack(data, ">HbHb")
      wd = ((tval * 175) / 65535.0) - 45
      sd = ((hval * 100) / 65535.0)
  end

日志:
[2021-09-08 20:32:34.887] ECRDY
[2021-09-08 20:32:34.887] I/luat.main LuatOS@ec616 core V0007 bsp V0007
[2021-09-08 20:32:34.927] I/luat.main ROM Build: Sep 1 2021 22:44:41
[2021-09-08 20:32:34.927] D/luat.vfs register fs air302
[2021-09-08 20:32:34.927] D/luat.vfs register fs luadb
[2021-09-08 20:32:34.927] D/luat.vfs mount air302
[2021-09-08 20:32:34.927] D/luat.vfs mount luadb /luadb/
[2021-09-08 20:32:34.927] D/luat.fs.LFS luat_fs_fopen /update.bin rb 00000000
[2021-09-08 20:32:34.927] D/luat.fs.LFS luat_fs_fopen /rollback_mark rb 00000000
[2021-09-08 20:32:34.927] D/luat.main boot luavm 65528 2576 2576
[2021-09-08 20:32:34.927] D/luat.main boot sys 39336 9448 9616
[2021-09-08 20:32:34.927] D/luat.main loadlibs luavm 65528 7240 7240
[2021-09-08 20:32:34.927] D/luat.main loadlibs sys 39336 9448 9616
[2021-09-08 20:32:34.927] D/luat.fs.LFS luat_fs_fopen /main.luac r 00039B58
[2021-09-08 20:32:34.927] D/luat.fs.LFS luat_fs_fopen /main.luac r 00039B58
[2021-09-08 20:32:34.927] D/luat.fs.LFS luat_fs_fopen /main.luac rb 00039B58
[2021-09-08 20:32:34.927] D/luat.fs.LFS luat_fs_fopen /sys.luac r 00039B58
[2021-09-08 20:32:34.927] D/luat.fs.LFS luat_fs_fopen /sys.luac r 00039B58
[2021-09-08 20:32:34.927] D/luat.fs.LFS luat_fs_fopen /sys.luac rb 00039B58
[2021-09-08 20:32:35.030] I/user.NBWD_PSM 2.0.2 1005
[2021-09-08 20:32:35.093] I/luat.nbiot Level FlyMode, ret=0
[2021-09-08 20:32:35.156] I/user.sht30 130.0000 50.87816 3.280000
[2021-09-08 20:32:35.406] D/luat.nbiot +CPIN: READY
[2021-09-08 20:32:35.426] I/luat.nbiot SIM ready(imsi=460080716801358)
[2021-09-08 20:32:35.426] I/luat.nbiot +CEREG: 1,2,0000,00000000,9
[2021-09-08 20:32:36.773] I/luat.pm poweron: Power/Reset
[2021-09-08 20:32:36.792]
[2021-09-08 20:32:36.792] ECRDY
[2021-09-08 20:32:36.792] I/luat.main LuatOS@ec616 core V0007 bsp V0007
[2021-09-08 20:32:36.834] I/luat.main ROM Build: Sep 1 2021 22:44:41
[2021-09-08 20:32:36.834] D/luat.vfs register fs air302
[2021-09-08 20:32:36.834] D/luat.vfs register fs luadb
[2021-09-08 20:32:36.834] D/luat.vfs mount air302
[2021-09-08 20:32:36.834] D/luat.vfs mount luadb /luadb/
[2021-09-08 20:32:36.834] D/luat.fs.LFS luat_fs_fopen /update.bin rb 00000000
[2021-09-08 20:32:36.834] D/luat.fs.LFS luat_fs_fopen /rollback_mark rb 00000000
[2021-09-08 20:32:36.834] D/luat.main boot luavm 65528 2576 2576
[2021-09-08 20:32:36.834] D/luat.main boot sys 39336 9448 9616
[2021-09-08 20:32:36.834] D/luat.main loadlibs luavm 65528 7240 7240
[2021-09-08 20:32:36.834] D/luat.main loadlibs sys 39336 9448 9616
[2021-09-08 20:32:36.834] D/luat.fs.LFS luat_fs_fopen /main.luac r 00039B58
[2021-09-08 20:32:36.834] D/luat.fs.LFS luat_fs_fopen /main.luac r 00039B58
[2021-09-08 20:32:36.834] D/luat.fs.LFS luat_fs_fopen /main.luac rb 00039B58
[2021-09-08 20:32:36.834] D/luat.fs.LFS luat_fs_fopen /sys.luac r 00039B58
[2021-09-08 20:32:36.834] D/luat.fs.LFS luat_fs_fopen /sys.luac r 00039B58
[2021-09-08 20:32:36.834] D/luat.fs.LFS luat_fs_fopen /sys.luac rb 00039B58
[2021-09-08 20:32:36.940] I/user.NBWD_PSM 2.0.2 1005
[2021-09-08 20:32:36.993] I/luat.nbiot Level FlyMode, ret=0
[2021-09-08 20:32:37.058] I/user.sht30 129.9920 100.00000 3.280000
[2021-09-08 20:32:37.307] D/luat.nbiot +CPIN: READY
[2021-09-08 20:32:37.326] I/luat.nbiot SIM ready(imsi=460080716801358)
[2021-09-08 20:32:37.326] I/luat.nbiot +CEREG: 1,2,0000,00000000,9
[2021-09-08 20:32:53.989] I/luat.pm poweron: Power/Reset
[2021-09-08 20:32:54.011]
[2021-09-08 20:32:54.011] ECRDY
[2021-09-08 20:32:54.011] I/luat.main LuatOS@ec616 core V0007 bsp V0007
[2021-09-08 20:32:54.011] I/luat.main ROM Build: Sep 1 2021 22:44:41
[2021-09-08 20:32:54.011] D/luat.vfs register fs air302
[2021-09-08 20:32:54.079] D/luat.vfs register fs luadb
[2021-09-08 20:32:54.079] D/luat.vfs mount air302
[2021-09-08 20:32:54.079] D/luat.vfs mount luadb /luadb/
[2021-09-08 20:32:54.079] D/luat.fs.LFS luat_fs_fopen /update.bin rb 00000000
[2021-09-08 20:32:54.079] D/luat.fs.LFS luat_fs_fopen /rollback_mark rb 00000000
[2021-09-08 20:32:54.079] D/luat.main boot luavm 65528 2576 2576
[2021-09-08 20:32:54.079] D/luat.main boot sys 39336 9448 9616
[2021-09-08 20:32:54.079] D/luat.main loadlibs luavm 65528 7240 7240
[2021-09-08 20:32:54.079] D/luat.main loadlibs sys 39336 9448 9616
[2021-09-08 20:32:54.079] D/luat.fs.LFS luat_fs_fopen /main.luac r 00039B58
[2021-09-08 20:32:54.079] D/luat.fs.LFS luat_fs_fopen /main.luac r 00039B58
[2021-09-08 20:32:54.079] D/luat.fs.LFS luat_fs_fopen /main.luac rb 00039B58
[2021-09-08 20:32:54.079] D/luat.fs.LFS luat_fs_fopen /sys.luac r 00039B58
[2021-09-08 20:32:54.079] D/luat.fs.LFS luat_fs_fopen /sys.luac r 00039B58
[2021-09-08 20:32:54.079] D/luat.fs.LFS luat_fs_fopen /sys.luac rb 00039B58
[2021-09-08 20:32:54.079] I/user.NBWD_PSM 2.0.2 1005
[2021-09-08 20:32:54.213] I/luat.nbiot Level FlyMode, ret=0
[2021-09-08 20:32:54.276] I/user.sht30 129.2042 100.00000 3.280000
[2021-09-08 20:32:54.528] D/luat.nbiot +CPIN: READY
[2021-09-08 20:32:54.528] I/luat.nbiot SIM ready(imsi=460080716801358)
[2021-09-08 20:32:54.565] I/luat.nbiot +CEREG: 1,2,0000,00000000,9
[2021-09-08 20:32:56.780] I/luat.pm poweron: Power/Reset
[2021-09-08 20:32:56.797]
[2021-09-08 20:32:56.797] ECRDY
[2021-09-08 20:32:56.797] I/luat.main LuatOS@ec616 core V0007 bsp V0007
[2021-09-08 20:32:56.843] I/luat.main ROM Build: Sep 1 2021 22:44:41
[2021-09-08 20:32:56.843] D/luat.vfs register fs air302
[2021-09-08 20:32:56.843] D/luat.vfs register fs luadb
[2021-09-08 20:32:56.843] D/luat.vfs mount air302
[2021-09-08 20:32:56.843] D/luat.vfs mount luadb /luadb/
[2021-09-08 20:32:56.843] D/luat.fs.LFS luat_fs_fopen /update.bin rb 00000000
[2021-09-08 20:32:56.843] D/luat.fs.LFS luat_fs_fopen /rollback_mark rb 00000000
[2021-09-08 20:32:56.843] D/luat.main boot luavm 65528 2576 2576
[2021-09-08 20:32:56.843] D/luat.main boot sys 39336 9448 9616
[2021-09-08 20:32:56.843] D/luat.main loadlibs luavm 65528 7240 7240
[2021-09-08 20:32:56.843] D/luat.main loadlibs sys 39336 9448 9616
[2021-09-08 20:32:56.843] D/luat.fs.LFS luat_fs_fopen /main.luac r 00039B58
[2021-09-08 20:32:56.843] D/luat.fs.LFS luat_fs_fopen /main.luac r 00039B58
[2021-09-08 20:32:56.843] D/luat.fs.LFS luat_fs_fopen /main.luac rb 00039B58
[2021-09-08 20:32:56.843] D/luat.fs.LFS luat_fs_fopen /sys.luac r 00039B58
[2021-09-08 20:32:56.843] D/luat.fs.LFS luat_fs_fopen /sys.luac r 00039B58
[2021-09-08 20:32:56.843] D/luat.fs.LFS luat_fs_fopen /sys.luac rb 00039B58
[2021-09-08 20:32:56.951] I/user.NBWD_PSM 2.0.2 1005
[2021-09-08 20:32:56.999] I/luat.nbiot Level FlyMode, ret=0
[2021-09-08 20:32:57.063] I/user.sht30 129.9813 100.00000 3.280000
[2021-09-08 20:32:57.315] D/luat.nbiot +CPIN: READY
[2021-09-08 20:32:57.334] I/luat.nbiot SIM ready(imsi=460080716801358)
[2021-09-08 20:32:57.334] I/luat.nbiot +CEREG: 1,2,0000,00000000,9
[2021-09-08 20:32:59.046] I/luat.pm poweron: Power/Reset
[2021-09-08 20:32:59.065]
[2021-09-08 20:32:59.065] ECRDY
[2021-09-08 20:32:59.065] I/luat.main LuatOS@ec616 core V0007 bsp V0007
[2021-09-08 20:32:59.088] I/luat.main ROM Build: Sep 1 2021 22:44:41
[2021-09-08 20:32:59.088] D/luat.vfs register fs air302
[2021-09-08 20:32:59.088] D/luat.vfs register fs luadb
[2021-09-08 20:32:59.088] D/luat.vfs mount air302
[2021-09-08 20:32:59.088] D/luat.vfs mount luadb /luadb/
[2021-09-08 20:32:59.088] D/luat.fs.LFS luat_fs_fopen /update.bin rb 00000000
[2021-09-08 20:32:59.088] D/luat.fs.LFS luat_fs_fopen /rollback_mark rb 00000000
[2021-09-08 20:32:59.088] D/luat.main boot luavm 65528 2576 2576
[2021-09-08 20:32:59.088] D/luat.main boot sys 39336 9448 9616
[2021-09-08 20:32:59.088] D/luat.main loadlibs luavm 65528 7240 7240
[2021-09-08 20:32:59.088] D/luat.main loadlibs sys 39336 9448 9616
[2021-09-08 20:32:59.088] D/luat.fs.LFS luat_fs_fopen /main.luac r 00039B58
[2021-09-08 20:32:59.088] D/luat.fs.LFS luat_fs_fopen /main.luac r 00039B58
[2021-09-08 20:32:59.088] D/luat.fs.LFS luat_fs_fopen /main.luac rb 00039B58
[2021-09-08 20:32:59.170] D/luat.fs.LFS luat_fs_fopen /sys.luac r 00039B58
[2021-09-08 20:32:59.170] D/luat.fs.LFS luat_fs_fopen /sys.luac r 00039B58
[2021-09-08 20:32:59.170] D/luat.fs.LFS luat_fs_fopen /sys.luac rb 00039B58
[2021-09-08 20:32:59.170] I/user.NBWD_PSM 2.0.2 1005
[2021-09-08 20:32:59.269] I/luat.nbiot Level FlyMode, ret=0
[2021-09-08 20:32:59.332] I/user.sht30 130.0000 68.74952 3.280000
[2021-09-08 20:32:59.582] D/luat.nbiot +CPIN: READY
[2021-09-08 20:32:59.604] I/luat.nbiot SIM ready(imsi=460080716801358)
[2021-09-08 20:32:59.604] I/luat.nbiot +CEREG: 1,2,0000,00000000,9
[2021-09-08 20:33:01.659] I/luat.pm poweron: Power/Reset
[2021-09-08 20:33:01.675]
[2021-09-08 20:33:01.675] ECRDY
[2021-09-08 20:33:01.675] I/luat.main LuatOS@ec616 core V0007 bsp V0007
[2021-09-08 20:33:01.703] I/luat.main ROM Build: Sep 1 2021 22:44:41
[2021-09-08 20:33:01.703] D/luat.vfs register fs air302
[2021-09-08 20:33:01.703] D/luat.vfs register fs luadb
[2021-09-08 20:33:01.703] D/luat.vfs mount air302
[2021-09-08 20:33:01.703] D/luat.vfs mount luadb /luadb/
[2021-09-08 20:33:01.703] D/luat.fs.LFS luat_fs_fopen /update.bin rb 00000000
[2021-09-08 20:33:01.703] D/luat.fs.LFS luat_fs_fopen /rollback_mark rb 00000000
[2021-09-08 20:33:01.703] D/luat.main boot luavm 65528 2576 2576
[2021-09-08 20:33:01.703] D/luat.main boot sys 39336 9448 9616
[2021-09-08 20:33:01.703] D/luat.main loadlibs luavm 65528 7240 7240
[2021-09-08 20:33:01.703] D/luat.main loadlibs sys 39336 9448 9616
[2021-09-08 20:33:01.703] D/luat.fs.LFS luat_fs_fopen /main.luac r 00039B58
[2021-09-08 20:33:01.703] D/luat.fs.LFS luat_fs_fopen /main.luac r 00039B58
[2021-09-08 20:33:01.703] D/luat.fs.LFS luat_fs_fopen /main.luac rb 00039B58
[2021-09-08 20:33:01.780] D/luat.fs.LFS luat_fs_fopen /sys.luac r 00039B58
[2021-09-08 20:33:01.780] D/luat.fs.LFS luat_fs_fopen /sys.luac r 00039B58
[2021-09-08 20:33:01.780] D/luat.fs.LFS luat_fs_fopen /sys.luac rb 00039B58
[2021-09-08 20:33:01.780] I/user.NBWD_PSM 2.0.2 1005
[2021-09-08 20:33:01.880] I/luat.nbiot Level FlyMode, ret=0
[2021-09-08 20:33:01.944] I/user.sht30 130.0000 37.49905 3.280000
[2021-09-08 20:33:02.193] D/luat.nbiot +CPIN: READY
[2021-09-08 20:33:02.213] I/luat.nbiot SIM ready(imsi=460080716801358)
[2021-09-08 20:33:02.213] I/luat.nbiot +CEREG: 1,2,0000,00000000,9

改下延时 sys.wait(10) 能正常获取了

@晨旭 目前观察,使用软i2c + readSHT30的API

    local softi2c = i2c.createSoft(10,8,0x44)
    local re, humi, temp = i2c.readSHT30(softi2c)
    log.info("sht302", re, humi, temp)

-- 获得输出
-- [2021-09-10 11:45:28.277] I/user.sht302	true	1000	1300

当前现象是获取应答采样的时候,结果全部是FF
不确定是不是电平没有拉低还是别的原因

测试用SHT30
https://detail.tmall.com/item.htm?id=636612978310

Air302 直接I2C连接,没有额外上拉
SHT30本身正常,使用硬件I2C可以正常读取数据

复现用代码

PROJECT = "sht30demo"
VERSION = "1.0.0"
local sys = require "sys"

sys.taskInit(function()
    local softi2c = i2c.createSoft(10,8,0x44)
    while true do
        local re, humi, temp = i2c.readSHT30(softi2c)
        log.info("sht302", re, humi, temp)

        sys.wait(2000)
    end

end)

sys.run()

哦哦 本身API 有些问题,我再继续调研一下,然后报告

已经获得预期结果, 过会儿我将我的微调提交一个简易PR

可能文档有些陈旧了:

    local softi2c = i2c.createSoft(10,8,0x44)
该方法的第三个参数为 addr ,不是高速低速模式

简易提供一个可选参数,作为“询问/应答”间的等待间隔,默认为10ms这种

谢谢

Wendal 任务状态待办的 修改为已完成
Wendal 关联项目Air105-MCU项目 修改为Air302-NbIOT模块

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(3)
534181 chenxuuu 1578926871 Violation
Lua
1
https://gitee.com/openLuat/LuatOS.git
git@gitee.com:openLuat/LuatOS.git
openLuat
LuatOS
LuatOS

搜索帮助