0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞萨RA6M3 MCU通过I2C读取HS3001温湿度传感器

jf_pJlTbmA9 来源:瑞萨MCU小百科 作者:瑞萨MCU小百科 2023-09-26 16:57 次阅读

简介

使用瑞萨RA MCU的灵活软件包(Flexible Software Package–FSP),配合e2 studio集成开发环境,或者使用第三方IDE和支持该IDE的RA智能配置器(RA Smart Configurator–RASC),可以简单方便的对外围器件添加驱动代码。

教程以RA6M3 MCU通过I2C接口控制HS3001温湿度传感器为例,展示如何一步一步的使用FSP添加外围器件驱动。

主要内容

wKgZomUD7keAJ18VAA7CfaJCojk278.png

本程序基于新晔电子RA6M3开发板及Sensor板(包含HS3001、ISL29033及ZMOD4410),由于ISL29033和HS3001的i2c地址都为0x44,所以将HS3001地址改为了0x31。

使用e2studio新建一个RA6M3的工程

工程目录中双击configuration.xml文件,可以打开软件自带的配置界面

配置界面中点击“Clocks”,进入配置时钟界面。根据自己的需求,配置好时钟

点击“Pins”,可以配置IO口功能。选择要使用的IIC,并且使能

wKgaomUD7kiAJ_kpAABBjv4Q-_o050.png

点击“Stacks”,然后点击“New Stack”→ “Driver”→“Connectivity”→“I2C Master Driver on r_iic_master”,增加iic驱动配置。

wKgaomUD7kmAfKS_AABhBcHrjBw372.png

效果如下图,“属性”窗口配置i2c:

1、Name为配置i2c的结构体名称

2、Channel配置要使用的i2c通道,配置好后,Pins中会显示使用的IO口

3、Rate配置i2c速率

4、Slave Address配置从机地址,可在程序中修改

5、Address Mode配置从机地址模式,多数为7-Bit模式

6、Callback配置i2c的中断函数(必须配置)

7、Interrupt Priority Level配置中断优先级

此例中,使用i2c通道2,端口为P511和P512,并配置好中断函数名

配置好后,点击“Generate Project Content”

wKgZomUD7kuAaLD1AAKsAES6KAU614.png

中断函数在hal_data.h中声明,需要使用者去完成此函数。此函数中可以读取中断事件,作者直接使用长延时等待i2c通信完成,所以此函数为空。

wKgaomUD7k2AOgoCAAASrCluAbQ071.png

文件ra_gen/hal_data.c中初始化了g_i2c_master0的结构体,此结构体中包含可调用的函数结构体和配置参数结构体。

修改hal_entry.c文件中的hal_entry函数,顺序完成以下代码:

1、初始化i2c

2、设置i2c从机地址(HS3001从机地址为0x31)

3、向HS3001发送请求测量命令,然后加入等待延时

4、读取HS3001温度数据和湿度数据,并等待通信完成

5、通过计算得到温湿度数值

注意:每次读取数据前要发送请求测量命令,否则HS3001会处于睡眠状态,读出的数据不变化。

wKgaomUD7k6AIWGDAAC9RrwB1DU516.png

将Sensor板与开发板的P1接口连接。

编译程序并仿真,将RH和TEMP变量添加到Watch Expressions窗,使能实时刷新(Expressions中选中变量,单击右键)。

wKgaomUD7lCAUcRGAABvic6K_Tg157.png

在Expressions中可以看到数据变化。

wKgZomUD7lGANNnnAAAs32IQraY374.png

总结:

从以上例子大家可以看到,使用瑞萨RA MCU的灵活软件包添加一个I2C外置的驱动,只需要在FSP的图形介面上对硬件和软件做好配置即可自动生成所需的驱动和初始化代码,整个应用就只需要10行的代码。硬件和驱动上的配置在介面上也是一目了然,无需工程师去查文档、看手册,非常方便。

来源:瑞萨MCU小百科

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2526

    文章

    48093

    浏览量

    740057
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16016

    浏览量

    343617
  • 瑞萨
    +关注

    关注

    32

    文章

    22214

    浏览量

    84915
收藏 人收藏

    评论

    相关推荐

    请问谁能分享单片机S7G2对DTH11温湿度传感器的支持,有.c和.h文件的?

    跪求单片机S7G2对DTH11温湿度传感器的支持。有.c和.h文件的,可否发我一下。我自己写
    发表于 07-17 17:33

    SDAH01评估板试用—HS3001温湿度传感器

    ` 本帖最后由 shikong2046 于 2019-1-5 17:46 编辑 IDT的SDAH01评估套件,包括SDAH01评估板、HS3001温湿度传感器、USB线、U盘(IDT demo
    发表于 01-05 17:31

    【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】通过I2C接口读取温湿度传感器

    `TinkerNode提供了一组I2C接口,通过I2C接口可以完成设备参数获取。1、硬件接口在端子P4上,2和4引脚分别引出了SCL和SDA管脚。2
    发表于 08-24 08:19

    I2C接口与温湿度传感器AM2320是如何进行通信的

    怎样将温湿度传感器AM2320接在一个硬件I2C引脚上呢?I2C接口与温湿度传感器AM2320是
    发表于 11-12 07:52

    基于I2C硬件协议的AHT20温湿度传感器的数据采集

    温湿度传感器采集1.完成基于I2C硬件协议的AHT20温湿度传感器的数据采集1.1 硬件I2C
    发表于 12-17 06:23

    如何通过I2C读取温湿度传感器信息

    Harmony OS设备开发学习记录(十一)-- 通过I2C读取温湿度传感器信息基于hispark wifi套件采用harmony os 2
    发表于 02-08 06:18

    如何去实现基于I2C的AHT20温湿度传感器的数据采集及串口输出

    文章目录基于I2C的AHT20温湿度传感器的数据采集及串口输出一、IIC协议1. 物理层特点2. 协议层特点二、软件I2C和硬件
    发表于 02-18 06:56

    利用GD32F310的I2C0实现对HDC1080的初始化及读取环境温湿度

    1、利用I2C接口通过温湿度传感器HDC1080读取当前环境温湿度  我拿到的开发板实际板载的
    发表于 11-08 16:24

    RA4M2设计挑战赛】2. 硬件IIC读取HS3003的温湿度数据

    开发板体验】9. 用两路DAC在示波器上显示一个爱心RA4M2挑战赛分享:【RA4M2设计挑战赛】1. RASC配置FreeRTOS前言本文将操作官方模块HS300X(温湿度
    发表于 02-11 20:21

    RA4M2设计挑战赛】2、H3003温湿度传感器使用

    RA4M2设计挑战赛】2、H3003温湿度传感器使用H3003简介HS3003是一个高度精确、完全校准的相对
    发表于 02-26 22:29

    RA4M2设计挑战赛】基于RA4M2开发板设计的多参数物联网采集终端(作品提交)

    的影响。根据比赛规则,本次主要采用R7FA4M2AD3CFP作为主控芯片,通过
    发表于 03-04 18:40

    基于RA4M2HS3003的温湿度测量

    一、前言HS3003是一种数字式温湿度传感器,可以测量环境中的温度和湿度读取HS3003的数据
    发表于 03-05 23:38

    【精品合集】RA4M2物联网网关设计挑战赛作品合集

    设计挑战赛】读取HS3003传感器温湿度值【RA4M2设计挑战赛】读取isl29035模块数据作
    发表于 03-07 14:33

    RA MCU创意氛围赛】3. 硬件I2C驱动OLED显示汉字

    SCI6,复用I2C模式。 配置stack,选择sci_i2c: 详细配置如下: 3. 代码实现 3.1 字库 下面是测试代码: I2c_I
    发表于 05-26 14:06

    【CW32饭盒派开发板试用体验】6.硬件I2C之连接HS300X读取温湿度数据

    initialization I2c_Init(); while(1) { Hs300x_StartSample(); delay(); Hs300x_ReadData(); delay(); } } 4 实验效果 如下是
    发表于 06-07 21:45