瑞萨单片机论坛
直播中

华仔stm32

3年用户 2897经验值
擅长:嵌入式技术
私信 关注
[经验]

【RA4M2设计挑战赛】RTT sensor模块驱动hs3003

Sensor(传感器)是物联网重要的一部分,“Sensor 之于物联网”就相当于“眼睛之于人类”。人类如果没有了眼睛就看不到这大千的花花世界,对于物联网来说也是一样。

如今随着物联网的发展,已经有大量的 Sensor 被开发出来供开发者选择了,如:加速度计(Accelerometer)、磁力计(Magnetometer)、陀螺仪(Gyroscope)、气压计(Barometer/pressure)、湿度计(Humidometer)等。这些传感器,世界上的各大半导体厂商都有生产,虽然增加了市场的可选择性,同时也加大了应用程序开发的难度。因为不同的传感器厂商、不同的传感器都需要配套自己独有的驱动才能运转起来,这样在开发应用程序的时候就需要针对不同的传感器做适配,自然加大了开发难度。为了降低应用开发的难度,增加传感器驱动的可复用性,我们设计了 Sensor 设备。

Sensor 设备的作用是:为上层提供统一的操作接口,提高上层代码的可重用性

经查看sensor支持包,rtt支持该传感器的:

【RA4M2设计挑战赛】RTT 移植 这篇帖子基础上加入hs3003的温湿度采集

加入hs3003的sensor模块

在ra4m2-eco的目录下面打开ConEmu控制台,进入menuconfig界面,进入 RT-Thread online packages
image.png
进入peripheral libraries and drivers

image.png
进入sensors drivers
image.png

按向下键找到hs300x,并选中
image.png

添加Kconfig文件对I2C的支持

由于所下的包没有提供对i2c的支持,所以需要在board目录下的Kconfig进行修改,增加对i2c的支持:
在Kconfig中添加如下代码:
image.png

menuconfig BSP_USING_I2C
            bool "Enable I2C BUS"
            default n
            select RT_USING_I2C
            select RT_USING_I2C_BITOPS
            select RT_USING_PIN
            if BSP_USING_I2C
                config BSP_USING_HW_I2C
                    bool "Enable Hardware I2C BUS"
                    default n
                if BSP_USING_HW_I2C
                    config BSP_USING_HW_I2C1
                        bool "Enable Hardware I2C1 BUS"
                        default n
                endif
                if !BSP_USING_HW_I2C
                    menuconfig BSP_USING_I2C1
                        bool "Enable I2C1 BUS (software simulation)"
                        default y
                        if BSP_USING_I2C1
                            config BSP_I2C1_SCL_PIN
                                hex "i2c1 scl pin number"
                                range 0x0000 0x0B0F
                                default 0x050C
                            config BSP_I2C1_SDA_PIN
                                hex "I2C1 sda pin number"
                                range 0x0000 0x0B0F
                                default 0x050B
                        endif
                endif
            endif

然后在menuconfig中就可以看到i2c的配置

配置I2C

Hardware Drivers config-->
       On-chip Peripheral Drivers --->
            Enable I2C Bus --->
                 Enable I2C BUS (software  simulation)--->
                       0x0408  i2c1 scl pin number
                       0x0409  i2c1 sda pin number

这里使用软件模拟i2c 配置引脚为P0408、P0409为i2c1 指向开发板的i2c插座上。
退出后保存,并执行pkgs --update,等待包下载到本地:

下载结束后,多了一个packages的文件夹,下面有hs300x-latest的文件夹。
image.png
文件夹中有使用说明跟相关文档。

MDK工程配置

1、添加hs300x文件夹,按下面所示,添加hs300x文件夹,添加sensor_renesas_hs300x.c。同时在头文件路径下面添加hs300x-latest文件夹:

image.png
image.png
2、添加初始化hs3003代码,在sensor_renesas_hs300x.c最后添加代码如下:

#define HS300X_I2C_BUS  "i2c1"

int rt_hw_hs300x_port(void)
{
    struct rt_sensor_config cfg;

    cfg.intf.dev_name  = HS300X_I2C_BUS;
    cfg.intf.user_data = (void *)HS300X_I2C_ADDR;
    
    rt_hw_hs300x_init("hs300x", &cfg);

    return RT_EOK;
}
INIT_ENV_EXPORT(rt_hw_hs300x_port);

3、编译后下载到开发板,并且把hs3003插到开发板上,打开串口终端,成功启动,并初始化了sensor:
image.png

调试hs3003

根据使用手册,

- 通过导出的测试命令 `sensor_polling humi_hs3` ,判断能否成功读取湿度数据。
- 通过导出的测试命令 `sensor_polling temp_hs3` ,判断能否成功读取温度数据。

我们在终端执行命令,效果如下:

image.png

致此hs3003驱动成功。
【小结】RTT的sensor组件提供了完美对hs3003的驱动支持,可以让开发者零代码就驱动。
【注意】由于可能下载的源码版本不同,有些适配可能会弹出错误,大家按照提示修改就行。

更多回帖

发帖
×
20
完善资料,
赚取积分