跳到主要内容

IIc

一、实现功能

Core 提供 IIc0 和 IIc1 两个同步串行口,分别对应管脚(SLC0,SDA0)和(SCL1,SDA1)。本例程通过利用LIB_IIC0Config,LIB_IIC0Write,LIB_IIC0Read这三个库函数,在 IIc0 口上实现了对SHT3x温湿度传感器的初始化,和读写功能,以达到读取温湿度功能。

本例只是为了展示Core提供的IIC库函数的使用方法,其实Core已经为SHT3x传感器提供了更易用更高效的库函数,只不过这里为了展示 IIc 直接使用了 IIc 库函数来实现。Core提供 IIc 库的意义在于方便您将更多其他的不在Core的专有库范围内的传感器或电子器件集成进来,如果Core库已有,还是尽量使用库函数会更高效一些。

二、接线图

layout

三、完整代码

--配置print函数直接输出到电脑串口终端上
LIB_UsbConfig("CDC")
--定义一个数组
command = {}
--配置IIC0以400Khz的频率开始工作
LIB_IIC0Config("400K")
--配置sht30 ,写入命令0x2737,转换精度为High,每秒出10次数
command[1] = 0x27
command[2] = 0x37
LIB_IIC0Write(0x44, command)
--开始大循环
while(GC(1) == true)
do
LIB_DelayMs(300)
print("Start measure\r\n")
--写入fetch命令 0xE000
command[1] = 0xE0
command[2] = 0x00
LIB_IIC0Write(0x44, command)
--读取sht30温湿度
result,data = LIB_IIC0Read(0x44,6)
--通过读取到的6个字节数据,计算出温湿度
if result == 1 then
ST = data[1]*256
ST = ST + data[2]
SRH = data[4]*256
SRH = SRH + data[5]
temprature = -45.0 + (175.0 * (ST / 65535.0))
humidity = 100.0 * (SRH / 65535.0)
print(string.format("temprature:%.2f\r\nhumidity:%.2f", temprature, humidity))
end
end
如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

四、代码运行效果

result_iic