前言
shineblink core 开发板(简称Core)的库函数支持IIc通信功能,所以只需要调用两三个API,即可实现IIc通信功能。
PS:Core 仅用五、六行代码即可实现Wifi/Ble/NB/Lora/ThreadMesh/RFID/Eth/U***/RS485/RS232通信、以及30多种传感器/10多种硬件外设/10多种Mcu内设功能,并且这些功能最多可以 5 种随机组合同时运行。更多关于Core的内容可以在 shineblink.com 上了解。
一、实现功能
Core提供IIC0和IIC1两个同步串行口,分别对应管脚(SLC0,SDA0)和(SCL1,SDA1)。本例程通过利用LIB_IIC0Config,LIB_IIC0Write,LIB_IIC0Read这三个库函数,在IIC0口上实现了对SHT3x温湿度传感器的初始化,和读写功能,以达到读取温湿度功能。
本例只是为了展示Core提供的IIC库函数的使用方法,其实Core已经为SHT3x传感器提供了更易用更高效的库函数。Core提供IIC库的意义在于方便您将更多其他的不在Core库范围内的传感器或电子器件集成进来,如果Core库已有,还是尽量使用库函数会更高效一些。
二、接线图
三、完整代码
--配置print函数直接输出到电脑串口终端上
LIB_U***Config("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 measurern")
--写入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:%.2frnhumidity:%.2f", temprature, humidity))
end
end
四、代码运行效果
前言
shineblink core 开发板(简称Core)的库函数支持IIc通信功能,所以只需要调用两三个API,即可实现IIc通信功能。
PS:Core 仅用五、六行代码即可实现Wifi/Ble/NB/Lora/ThreadMesh/RFID/Eth/U***/RS485/RS232通信、以及30多种传感器/10多种硬件外设/10多种Mcu内设功能,并且这些功能最多可以 5 种随机组合同时运行。更多关于Core的内容可以在 shineblink.com 上了解。
一、实现功能
Core提供IIC0和IIC1两个同步串行口,分别对应管脚(SLC0,SDA0)和(SCL1,SDA1)。本例程通过利用LIB_IIC0Config,LIB_IIC0Write,LIB_IIC0Read这三个库函数,在IIC0口上实现了对SHT3x温湿度传感器的初始化,和读写功能,以达到读取温湿度功能。
本例只是为了展示Core提供的IIC库函数的使用方法,其实Core已经为SHT3x传感器提供了更易用更高效的库函数。Core提供IIC库的意义在于方便您将更多其他的不在Core库范围内的传感器或电子器件集成进来,如果Core库已有,还是尽量使用库函数会更高效一些。
二、接线图
三、完整代码
--配置print函数直接输出到电脑串口终端上
LIB_U***Config("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 measurern")
--写入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:%.2frnhumidity:%.2f", temprature, humidity))
end
end
四、代码运行效果
举报