[STM32L4+]【STEVAL-STWINKT1B测评】传感器STTS751和 HTS221的使用

硬件概述
据ST官方HTS221的datasheet,HTS221支持相对湿度范围是0 至 100% ;供电电压1.7v至3.6v;功耗低 ,在1HZ ODR下只消耗2uA电流;16位ADC;湿度和温度都是16位输出数据;湿度精度± 3.5% rH,湿度范围20到80%rH;温度精度± 0.5 °C,温度范围:15到+40°C;与主机/MCU接口支持SPI和I2C。不过在我们的STEVAL-STWINKT1B开发板上,HTS221与主控STM32L4R9ZIJ6是通过I2C连接,具体的是I2C2,可看原理图:
 



据ST官方STTS751的datasheet,STTS751电压范围是2.25 V 至3.6 V;温度范围–40 °C至+125 °C;支持10种不同的conversion速率和4种不同的解析度;低电流;接口应该只支持I2C。在我们的STEVAL-STWINKT1B开发板上,STTS751与主控STM32L4R9ZIJ6也是通过I2C连接,具体的是I2C2, 请看原理图:
 



软件驱动
fp-sns-datalog2有这两传感器的驱动代码,位置在Drivers/BSP/Components/目录下,但是最终的传感器数据读取又被包装了一层,叫做BSP_ENV_SENSOR_GetValue()什么的,其实笔者更想用原始的接口, 所以
 

复制

git clone https://github.com/STMicroelectronics/STMems_Standard_C_drivers.git



git submodule update



把stts751_STdC/目录下的driver/stts751_reg.c driver/stts751_reg.h 和examples/stts751_read_data_polling.c拷贝到demo目录
修改stts751_read_data_polling.c的stts751_read_data_polling()函数:
1.分成两大块,初始化和数 据读取;
2.数据读取只读一次;
3.fix stm代码的一个bug,datasheet上说busy bit位为1表明conversion is in progress,所以笔者觉得这里应该把

复制

void stts751_read_data_polling(void)

{

    /* Read output only if not busy */

    uint8_t flag;

    stts751_flag_busy_get(&dev_ctx, &flag);



    if (flag) {

      /* Read temperature data */

     ....

    }

}

改成

复制

void stts751_read_data_polling(void)

{

/* Read output only if not busy */

uint8_t flag;

stts751_flag_busy_get(&dev_ctx, &flag);



if (!flag) {

/* Read temperature data */

....

}

}



4.修改stts751_read_data_polling.c的platform_write()和platform_read(),让它们用I2C2操作


对于HTS221传感器如法**制,它的在STMems_Standard_C_drivers仓库中的目录位置在hts221_STdC/,做法和STTS751做法几乎是一样的,这里不再赘述。

最后main函数的代码改成

复制

  HAL_Init();

  SystemClock_Config();

  SystemPower_Config();

  MX_USART2_UART_Init();

  MX_I2C2_Init();

  MX_GPIO_PE1_Init();



  printf("Demo\n");



  hts221_init();

  printf("hts221 init done.\n");



  stts751_init();

  printf("stts751 init done.\n");



  while (1) {

    stts751_read_data_polling();

    HAL_Delay(500);

    hts221_read_data_polling();

    HAL_Delay(500);

  }



最后别忘记在CMakeLists.txt中把newlibc的浮点打印支持打开

复制

 add_link_options(-mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16

                             -Wl,--gc-sections,--print-memory-usage,-Map,${PROJECT_NAME}.map

+                          -u_printf_float

                              --specs=nano.specs

                              --specs=nosys.specs)

 add_link_options(-T ${LINKER_SCRIPT})


烧录测试

 


---------------------
作者:xhackerustc
链接:https://bbs.21ic.com/icview-3400862-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值