【雅特力AT32F435-V1.0 开发板评测】I2C测试-温湿度传感器HS300X
雅特力AT32F435 V1.0 IIC接口
开发板:雅特力AT32F435 V1.0
开发环境:RT-Thread studio V2.2.6
RT-Thread版本:5.0.0
I2C1外设资源:PB8—SCL PB9—SDA
温湿度传感器:HS300X
雅特力AT32F435ZMT7基于ARM® 32位的Cortex® -M4微控制器+FPU,带256 K字节至4032 K字节内部闪存、sLib、双QSPI、SDRAM、双OTGFS、以太网、摄像头、18个定时器、3个ADC、23个通信接口, 3个I2C接口,支持SMBus/PMBus, 能够工作于多主模式或从模式。它们支持标准模式(standard mode,最高100 kHz)、快速模式(fast mode,最高400 kHz)、和增强快速模式(fast mode plus,最高1MHz),部分GPIO支持超高电流吸入能力20mA。I2C接口支持7位或10位寻址,7位从模式时支持双从地址寻址。内置了硬件CRC发生器/校验器。它们可以使用DMA操作并支持SMBus总线2.0版/PMBus总线。4个SPI接口(36 M位/秒),4个均可用为I2S接口,其中I2S2/I2S3支持全双工。既可做主设备也可做从设备。
- 新建工程
见文章雅特力AT-START-F435开发板试用】1-构建RTT-Stdio开发环境 - 国产芯片交流 - 电子工程世界-论坛 (eeworld.com.cn)
- 配置IIC及HS300X软件包
在左侧项目资源管理器中打开新建的项目,按图1双击RT-Tread Setting设置项,按图2、3、4完成相关项设置。
图1 打开RT-Thread Settings
图2 驱动设置
图3 添加温湿度传感器HS300X软件包
图4设置IIC1配置项
注意:
雅特力的GPIO引脚编号在官方使用说明书是通过GPIO_PORT、GPIO_PIN给出,与RT-Thread Studio的pin编号不一致,我们可以通过修改rtconfig.h文件来实现,修改如下:
打开rtconfig.h文件,找到On-chip Peripheral Drivers段,将
#define BSP_I2C1_SCL_PIN 139
#define BSP_I2C1_SDA_PIN 140
修改为:
#define BSP_I2C1_SCL_PIN GET_PIN(B,6)
#define BSP_I2C1_SDA_PIN GET_PIN(B,7)
本文I2C1_SCL引脚为PB6, I2C1_SDA引脚为PB7。
- 添加头文件
因使用IIC驱动,打开main.c文件,需添加以下三个头文件:
#include <i2c.h>
#include <drv_i2c.h>
#include "sensor_renesas_hs300x.h"
- 添加路径
图5 设置新增头文件路径
按照图5步骤分别添加i2c.h、drv_i2c.h、sensor_renesas_hs300x.h所在目录路径:
“..\AT32F435\rt-thread\components\drivers\include\drivers"”
“..\AT32F435\rt-thread\components\drivers\i2c”
“..\AT32F435\packages\hs300x-latest”
- 修改程序
打开sensor_renesas_hs300x.c在程序开头增加
#define HS300X_I2C_ADDR 0x44
#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);
至此修改工作全部结束,编译下载运行。
系统接线图:
图6 传感器接线图
图7 系统运行界面
我们可以看到i2c1和HS300X成功挂载。
使用传感器命令运行,分别输入sensor_polling tm-hs300x和 sensor_polling hm-hs300x
图9 温度测量值
图9 湿度测量值
由以上例子我们可以看出,在雅特力科技的《雅特力AT32F435-STB 开发板》上利用Rt-thread进行传感器二次开发,可以做到低代码编写,用户上手较容易,开发效率高。