打印
[GUI]

【STM32H750B-DK评测】三:STMod+接口驱动温湿度传感器

[复制链接]
楼主: 数码小叶
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
43
本帖最后由 数码小叶 于 2022-9-3 11:58 编辑

在第一篇:【STM32H750B-DK评测】一:开箱 https://bbs.21ic.com/icview-3248872-1-1.html?fromuser=%E6%95%B0%E7%A0%81%E5%B0%8F%E5%8F%B6(出处: 21ic电子技术开**坛)。
中提到,跟随STM32H750B-DK一起有块STMod+的扩展板以及SHT3x湿度传感器模块,因此需要驱动起来。

查看SHT3x湿度传感器模块的原理图


其给出的接口是IIC形式,在STMod+的扩展板上,也引出了标准的IIC接口,刚好可以使用


为了后面不占用太多的CPU资源,决定用硬件IIC,这样再加上DMA基本可以忽略对cpu的占用。

根据原理图,STMod+的扩展板上的IIC使用的是PD12和PD13两个管脚


参考数据手册STM32H750xB pin/ball definition,PD12/PD13对应的是IIC4,初始化对应管脚为IIC功能


GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    GPIO_InitStruct.Alternate = GPIO_AF4_I2C4;
    HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
hi2c4.Instance = I2C4;
  hi2c4.Init.Timing = 0x10C0ECFF;
  hi2c4.Init.OwnAddress1 = 0;
  hi2c4.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
  hi2c4.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
  hi2c4.Init.OwnAddress2 = 0;
  hi2c4.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
  hi2c4.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
  hi2c4.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
  if (HAL_I2C_Init(&hi2c4) != HAL_OK)
  {
    Error_Handler();
  }

SHT3x系列湿度传感器包括低成本版本SHT30、标准版本SHT31,以及高端版本SHT35,模块板载的是SHT30-DIS-B,,2.15 - 5.5 V的宽电压支持,其精度可以达到
湿度:±2@10-90% RH 、温度:±0.2@0-65 °C。

要驱动SHT3x,得从数据手册获取几个信息,比如IIC的地址、时序、基本的指令等。


跟很多器件一样,一个ADDR引脚决定了地址的末位。剩下的指令操作,发现数据手册也都给出了解释以及操作时序图,这个确实比一般手册给的生动的多





在手册中,也找到了温湿度的换算关系式,数字式的就是这点方便






虽然给的接口都是标准的,但美中不足的是配套的SHT3x湿度传感器模块给的是排针,STMod+的扩展板是XA接插件连接方式,两者不能直接相连,最后只能使用杜邦线连接了。



相比于其他IIC器件,驱动SHT3x主要在CRC校验上多花了点时间,在数据手册以及时序图上都有表述:
“All SHT3x-DIS commands and data are mapped to a 16-bit address space. Additionally, data and commands are protected with a CRC checksum. This increases communication reliability. The 16 bits commands to the sensor already include a 3 bit CRC checksum. Data sent from and received by the sensor is always succeeded by an 8 bit CRC.”

最后结合给的CRC参数,失败几次后,成功完成了CRC校验


#define CRC8_Polynomial 0x31
uint8_t CheckCRC8(uint8_t* const Date_check, uint8_t Date_initial)
{   
    uint8_t  CRC_calculates;   
    uint8_t  i = 0, j = 0;
    CRC_calculates = Date_initial;   
    for(j = 0; j<2;j++)   
    {        
        CRC_calculates ^= Date_check[j];              
        for (i = 0; i<8; i++)        
        {            
            if (CRC_calculates & 0x80)            
            {               
                  CRC_calculates = (CRC_calculates <<1)^Polynomial;            
            }            
            else            
            {               
                 CRC_calculates = (CRC_calculates <<1);            
            }        
         }   
    }      
    return CRC_calculates;


数次卡在CRC校验失败后终于校验通过了



下一步就是利用touchGFX的Model-View-Presenter的思路,将数值传到屏幕上,再结合控件完成温湿度值的监测。

使用特权

评论回复
44
数码小叶|  楼主 | 2022-9-3 12:08 | 只看该作者
这次记得沙发@21小跑堂  了

使用特权

评论回复
45
kkzz| | 2022-9-4 10:20 | 只看该作者
正准备学习的朋友推荐下载。                                 

使用特权

评论回复
46
dspmana| | 2022-9-4 11:05 | 只看该作者
很详细的开发板资料                                 

使用特权

评论回复
47
wangdezhi| | 2022-9-4 11:21 | 只看该作者
资料还是相当全面的                                 

使用特权

评论回复
48
mickit| | 2022-9-4 11:51 | 只看该作者
有时间需要好好看看   不错                                 

使用特权

评论回复
49
linfelix| | 2022-9-4 12:07 | 只看该作者
很详细的开发板资料                                 

使用特权

评论回复
50
sdlls| | 2022-9-4 12:22 | 只看该作者
资料的确是很全面                                 

使用特权

评论回复
51
qiufengsd| | 2022-9-4 13:08 | 只看该作者
正准备用 来做产品,刚好用上。         

使用特权

评论回复
52
xiaoyaodz| | 2022-9-4 13:23 | 只看该作者
这些资料太全了!!!                 

使用特权

评论回复
53
everyrobin| | 2022-9-4 14:10 | 只看该作者
资料的确是很全面                                 

使用特权

评论回复
54
robincotton| | 2022-9-4 14:25 | 只看该作者
感觉今后应该用的人很多                                   

使用特权

评论回复
55
lzbf| | 2022-9-4 15:12 | 只看该作者
内容还是非常丰富的                                 

使用特权

评论回复
56
olivem55arlowe| | 2022-9-4 15:27 | 只看该作者
以后多交流交流                  

使用特权

评论回复
57
wilhelmina2| | 2022-9-4 15:42 | 只看该作者
这些资料太全了!!!                 

使用特权

评论回复
58
macpherson| | 2022-9-4 16:28 | 只看该作者
资料还是相当全面的                                 

使用特权

评论回复
59
wuhany| | 2022-9-4 23:13 | 只看该作者
这个是原创吗

使用特权

评论回复
60
houjiakai| | 2022-9-5 15:00 | 只看该作者
官网自带的接口吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

103

主题

2536

帖子

19

粉丝