首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

FlexLua低代码单片机三行代码实现IIc总线串行通信

IIc

本教程来至 FlexLua 官网 ShineBlink 开发板教程,即使不懂单片机开发也可很容易用FlexLua零门槛开发各种 IoT 硬件。

一、实现功能

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

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

二、接线图

三、完整代码

--配置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查询。

四、代码运行效果

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O7TFuCr1Z_Pry8VkHRPxjg6Q0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券