slmxiaodai 发表于 2026-8-4 12:06:34

【瑞萨RA-eco-RA6M4评测】 + 04 驱动AHT20温湿度模块测试

本帖最后由 slmxiaodai 于 2026-8-4 16:51 编辑

接着前面3篇
【瑞萨RA-eco-RA6M4评测】+ 01 开发板初体验及开发环境搭建 :https://www.eefocus.com/forum/thread-236019-1-1.html
【瑞萨RA-eco-RA6M4评测】+ 02 不同场景下的功耗测试:https://www.eefocus.com/forum/thread-236029-1-1.html
【瑞萨RA-eco-RA6M4评测】+ 03 驱动ADXL345三轴加速度计:https://www.eefocus.com/forum/thread-236049-1-1.html

9 驱动AHT20温湿度模块测试
测试对象:RA-Eco-RA6M4-100PIN-V2.0
测试设备:IoT Power
烧录程序:RA6M4_AHT20
程序说明:本程序为自建工程,在新建工程时有下面需要注意的点:
1):该模块与加速度模块相同,使用I2C协议通讯,因此可以在在创建I2C的stack时和配置引脚时可以直接参考,所需的核心代码如下。
------------------------------------------------------------------------------------------------------------------------------------------------------------------


// 写命令+两字节数据
static fsp_err_t aht20_write_command(uint8_t cmd, uint8_t data0, uint8_t data1)
{
    fsp_err_t err;
    uint8_t buf = {cmd, data0, data1};
    err = R_SCI_I2C_SlaveAddressSet(&g_i2c0_ctrl, AHT20_ADDR, I2C_MASTER_ADDR_MODE_7BIT);
    if (FSP_SUCCESS != err) return err;
    err = R_SCI_I2C_Write(&g_i2c0_ctrl, buf, 3, false);
    if (FSP_SUCCESS != err) return err;
    return wait_for_completion(100);
}
// 仅写单字节命令
static fsp_err_t aht20_write_command_only(uint8_t cmd)
{
    fsp_err_t err;
    err = R_SCI_I2C_SlaveAddressSet(&g_i2c0_ctrl, AHT20_ADDR, I2C_MASTER_ADDR_MODE_7BIT);
    if (FSP_SUCCESS != err) return err;
    err = R_SCI_I2C_Write(&g_i2c0_ctrl, &cmd, 1, false);
    if (FSP_SUCCESS != err) return err;
    return wait_for_completion(100);
}
// 直接读取若干字节(不指定寄存器,AHT20自动递增)
fsp_err_t aht20_read_bytes(uint8_t *p_data, uint8_t len)
{
    fsp_err_t err;
    err = R_SCI_I2C_SlaveAddressSet(&g_i2c0_ctrl, AHT20_ADDR, I2C_MASTER_ADDR_MODE_7BIT);
    if (FSP_SUCCESS != err) return err;
    err = R_SCI_I2C_Read(&g_i2c0_ctrl, p_data, len, false);
    if (FSP_SUCCESS != err) return err;
    return wait_for_completion(100);}
// 读取状态寄存器(1字节)
uint8_t AHT21_ReadState(void)
{   uint8_t state = 0;
    if (FSP_SUCCESS == aht20_read_bytes(&state, 1))
      return state;
    return 0xFF;// 错误返回值}
-----------------------------------------------------------------------------------------------------------------------------------------

以上是基础的底层读写函数,可以利用这些函数快速编写更复杂的初始化、测量、读取等函数。
2)打印时涉及到浮点数打印,默认情况下e2studio没有勾选支持浮点数,导致打印信息错误或者乱码的情况,需要手动开启,如下图所示。

设置浮点数支持
程序编写好之后上电测试效果,如下图所示。

读取温湿度数据

接下来开始进行功耗测试,持续读取AHT20温湿度模块得到的功耗数据如下图所示。

驱动AHT20温湿度模块得到的功耗数据



页: [1]
查看完整版本: 【瑞萨RA-eco-RA6M4评测】 + 04 驱动AHT20温湿度模块测试