今天我们学习合宙低功耗4G模组Air780E的I2C接口操作方法,文末【阅读原文】获取最新资料。
一、I2C概述
Air780E可支持1路I2C接口,如果复用的话最多有两路:
I2C配置:
兼容PhilipsI2C标准协议。
支持Fastmode(400Kbps)和Slowmode(100Kbps)。
只支持master模式,不支持slaver模式。
可通过软件来配置内部的上拉电阻,1.8K或者20K。
理论上最多可支持127个从设备。
管脚名 | 类型 | 序号 | 电压域 | 描述 |
I2C_SCL |
IO |
67 |
VDD_EXT |
I2C时钟信号,用作I2C时需外加上拉 |
I2C_SDA |
IO |
66 |
VDD_EXT |
I2C时钟信号,用作I2C时需外加上拉 |
I2C的参考电路如下:
Air780E的I2C接口电压是1.8V/3.3V可配置,通过PIN100IO_SEL配置IO口电平,能够满足大部分外设的直接需求,但是如果要和5V或者以上电平的外设通信,那就必须要加电平转换电路
二、演示功能概述
本例程将使用I2C协议读取传感器数据并打印出来。
三、准备硬件环境
3.1 780E开发板一套
此核心板的详细使用说明参考:Air780E产品手册中的<<开发板Core_Air780E使用说明V1.0.5.pdf>>;核心板使用过程中遇到任何问题,可以直接参考这份使用说明pdf文档。
3.2 数据通信线
typec接口USB数据线即可。
3.3 PC电脑
WINDOWS系统。
3.4 sht20温湿度传感器一个
3.5 780E与sht20接线图如下
四、准备软件环境
4.1 基本的下载调试工具
使用说明参考:Luatools下载和详细使用;
https://docs.openluat.com/Luatools/
五、使用I2C读取sht20软硬件资料
5.1 文档和工具:
-
780E模块使用固件:SDK&Demo-合宙文档中心,本demo使用的固件版本是:
LuatOS-SoC_V1112_EC618_FULL.soc
-
本教程使用的demo:
https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/sht20
-
将固件和脚本烧录到模块中:Luatools下载和使用教程-合宙模组资料中心
-
源码和固件已打包,如下所示:右键点我,另存为,下载完整压缩文件包
5.2demo使用api介绍
i2c.setup(id,speed,pullup)
作用:i2c初始化
参数:
传入值类型 | 解释 |
int |
设备id,例如i2c1的id为1,i2c2的id为2 |
int |
I2C速度,例如i2c.FAST |
bool |
是否软件上拉,默认不开启,需要硬件支持 |
返回值:
返回值类型 | 解释 |
int |
成功就返回1,否则返回0 |
i2c.send(id,addr,data,stop)
作用:i2c发送数据
参数:
传入值类型 | 解释 |
int |
设备id,例如i2c1的id为1,i2c2的id为2 |
int |
I2C子设备的地址,7位地址 |
integer/string/table |
待发送的数据,自适应参数类型 |
integer |
可选参数是否发送停止位1发送0不发送默认发送(105不支持) |
返回值:
传入值类型 | 解释 |
true/false |
发送是否成功 |
i2c.recv(id,addr,len)
作用:i2c接收数据
传入值类型 | 解释 |
int |
设备id,例如i2c1的id为1,i2c2的id为2 |
int |
I2C子设备的地址,7位地址 |
int |
接收数据的长度 |
返回值:
传入值类型 | 解释 |
string |
收到的数据 |
六、代码示例介绍
6.1 读取SHT20温湿度传感器
6.1.1 SHT20简介:
SHT20是使用I2C协议进行通信的温湿度传感器。
首先我们可以发送STH20的7位从机地址+1位读写位(写0读1),然后发送8位的命令,0xF3是读取温度的命令,0xF5是读取湿度的命令。发送完后接收应答,等待20us之后我们发出I2C的结束时序。
6.1.2 demo介绍
首先初始化i2c,然后给sht20发送读取温湿度命令,接收sht20回传的数据即可。
6.1.3 将程序下载到开发板:
使用说明参考:Luatools下载和详细使用
https://docs.openluat.com/Luatools/
七、功能验证
成功使用I2C协议读取到sht20传感器的温湿度数值。
八、总结
本例程使用i2c协议读取了sht20传感器传输的温湿度数值。
九、常见问题
9.1 i2c每次读写数据前都需要setup一次吗?
不需要。
正常的业务逻辑为:
i2c.setup,
…此处可以多次读写数据,
i2c.close,
setup之后,只要没有close,就可以反复读写数据,
一旦执行了close,下次读写数据前,必须再次setup。
9.2 i2c通信时模块可以做从设备吗?
注意:模块I2C只能做主设备,外部需要上拉,在配置FAST速率时,上拉电阻阻值不要大于4.7K。
9.3 i2c设备7位的地址为0x38,需要我手动转换到8位地址吗?
这里i2c_addr地址是7bit地址,如果i2c外设手册中给的是8bit地址,需要把8bit地址右移1位,赋值给i2c_addr变量;如果i2c外设手册中给的是7bit地址,直接把7bit地址赋值给i2c_addr变量即可。
标签:sht20,I2C,int,地址,使用指南,Air780E,id,i2c From: https://www.cnblogs.com/luatos/p/18530269