2037|2

274

帖子

8

TA的资源

纯净的硅(初级)

楼主
 

第五篇 读取DHT12的数据 [复制链接]

 

一、连接DHT12

DHT12温湿度传感器使用I2C接口进行通信,因此需要使用RVB2601开发板上的I2C接口。默认情况下,板上的I2C接口通过跳线帽连接到了板载的ES7210和ES8156上,因此需要取下跳线帽,I2C、电源和地的位置如下。

二、代码编写

RVB2601提供了I2C的驱动函数。使用时需要引入头文件: __#include <drv/iic.h>__ 。需要用到的函数包括:

  1. csi_error_t csi_iic_init(csi_iic_t *iic, uint32_t idx),初始化一个I2C设备的句柄,其中iic为用户创建的变量,idx为I2C设备的编号,从0开始,初始化之前记得设置PIN的功能
  2. csi_error_t csi_iic_mode(csi_iic_t *iic, csi_iic_mode_t mode),配置I2C设备的工作模式,在这里是做主机使用,因此需配置为 IIC_MODE_MASTER;
  3. csi_error_t csi_iic_addr_mode(csi_iic_t *iic, csi_iic_addr_mode_t addr_mode),设置I2C通信的地址模式,包括7位地址和10位地址,这里使用7位地址,IIC_ADDRESS_7BIT;
  4. csi_error_t csi_iic_speed(csi_iic_t *iic, csi_iic_speed_t speed),设置I2C的通信速度,这里使用标准速度,IIC_BUS_SPEED_STANDARD;
  5. int32_t csi_iic_master_send(csi_iic_t iic,uint32_t devaddr,const void data,uint32_t size,uint32_t timeout),发送数据,这里要注意第二个参数devaddr是7位的地址,比如说DHT12手册上给出的地址0xB8,这个地址是包含最低位读写标志位的,因此需要将0xB8左移一位,得到0x5C
  6. int32_t csi_iic_master_receive(csi_iic_t iic, uint32_t devaddr, void data, uint32_t size, uint32_t timeout),读取数据。

操作代码如下:

static csi_iic_t g_iic;

void dht12_init()
{
    csi_pin_set_mux(PA8, PA8_IIC0_SCL);
    csi_pin_set_mux(PA9, PA9_IIC0_SDA);

    csi_iic_init(&g_iic, 0);
    csi_iic_mode(&g_iic, IIC_MODE_MASTER);
    csi_iic_addr_mode(&g_iic, IIC_ADDRESS_7BIT);
    csi_iic_speed(&g_iic, IIC_BUS_SPEED_STANDARD);
}

void dht12_get_data()
{
    unsigned char buf[10]={0};
    char str_data[50];
    csi_iic_master_send(&g_iic,0x5c,buf,1,1000);
    csi_iic_master_receive(&g_iic,0x5c,buf,5,1000);
    sprintf(str_data,"T:%d.%dtH:%d.%d",buf[2],buf[3],buf[0],buf[1]);
    LOGD(TAG,"%s",str_data);    
}

下图为显示截图

RVB2601的驱动函数用起来挺简单了,I2C的使用也很简洁。就是在从机地址那里卡了一下,从机地址应该为7位的地址。

 

最新回复

使用起来确实简单。就是跳线有点麻烦。谢谢分享。  详情 回复 发表于 2022-5-4 15:32
点赞 关注
 
 

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

发送数据第二个参数devaddr是7位的地址提醒的很好,这里最容易出错,谢谢

 
 
 

回复

7047

帖子

11

TA的资源

版主

板凳
 
使用起来确实简单。就是跳线有点麻烦。谢谢分享。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表