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

[复制链接]
5875|77
 楼主| 数码小叶 发表于 2022-9-3 12:07 | 显示全部楼层 |阅读模式
本帖最后由 数码小叶 于 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湿度传感器模块的原理图
2022-09-01_20-11-04.png

其给出的接口是IIC形式,在STMod+的扩展板上,也引出了标准的IIC接口,刚好可以使用
2022-09-03_09-28-54.png

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

根据原理图,STMod+的扩展板上的IIC使用的是PD12和PD13两个管脚
2022-09-03_09-42-26.png

参考数据手册STM32H750xB pin/ball definition,PD12/PD13对应的是IIC4,初始化对应管脚为IIC功能
2022-09-03_09-48-03.png

  1. GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13;
  2.     GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
  3.     GPIO_InitStruct.Pull = GPIO_NOPULL;
  4.     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  5.     GPIO_InitStruct.Alternate = GPIO_AF4_I2C4;
  6.     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
  1. hi2c4.Instance = I2C4;
  2.   hi2c4.Init.Timing = 0x10C0ECFF;
  3.   hi2c4.Init.OwnAddress1 = 0;
  4.   hi2c4.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
  5.   hi2c4.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
  6.   hi2c4.Init.OwnAddress2 = 0;
  7.   hi2c4.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
  8.   hi2c4.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
  9.   hi2c4.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
  10.   if (HAL_I2C_Init(&hi2c4) != HAL_OK)
  11.   {
  12.     Error_Handler();
  13.   }

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

要驱动SHT3x,得从数据手册获取几个信息,比如IIC的地址、时序、基本的指令等。
2022-09-03_10-02-52.png

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


2022-09-03_10-05-54.png

在手册中,也找到了温湿度的换算关系式,数字式的就是这点方便
2022-09-03_10-07-08.png



微信图片_20220903093140.jpg

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


相比于其他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校验
2022-09-03_11-37-15.png

  1. #define CRC8_Polynomial 0x31
  2. uint8_t CheckCRC8(uint8_t* const Date_check, uint8_t Date_initial)
  3. {   
  4.     uint8_t  CRC_calculates;   
  5.     uint8_t  i = 0, j = 0;
  6.     CRC_calculates = Date_initial;   
  7.     for(j = 0; j<2;j++)   
  8.     {        
  9.         CRC_calculates ^= Date_check[j];              
  10.         for (i = 0; i<8; i++)        
  11.         {            
  12.             if (CRC_calculates & 0x80)            
  13.             {               
  14.                   CRC_calculates = (CRC_calculates <<1)^Polynomial;            
  15.             }            
  16.             else            
  17.             {               
  18.                  CRC_calculates = (CRC_calculates <<1);            
  19.             }        
  20.          }   
  21.     }      
  22.     return CRC_calculates;


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

2022-09-03_09-19-30.png

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

 楼主| 数码小叶 发表于 2022-9-3 12:08 | 显示全部楼层
这次记得沙发@21小跑堂  了
kkzz 发表于 2022-9-4 10:20 | 显示全部楼层
正准备学习的朋友推荐下载。                                 
dspmana 发表于 2022-9-4 11:05 | 显示全部楼层
很详细的开发板资料                                 
wangdezhi 发表于 2022-9-4 11:21 | 显示全部楼层
资料还是相当全面的                                 
mickit 发表于 2022-9-4 11:51 | 显示全部楼层
有时间需要好好看看   不错                                 
linfelix 发表于 2022-9-4 12:07 | 显示全部楼层
很详细的开发板资料                                 
sdlls 发表于 2022-9-4 12:22 | 显示全部楼层
资料的确是很全面                                 
qiufengsd 发表于 2022-9-4 13:08 | 显示全部楼层
正准备用 来做产品,刚好用上。         
xiaoyaodz 发表于 2022-9-4 13:23 | 显示全部楼层
这些资料太全了!!!                 
everyrobin 发表于 2022-9-4 14:10 | 显示全部楼层
资料的确是很全面                                 
robincotton 发表于 2022-9-4 14:25 | 显示全部楼层
感觉今后应该用的人很多                                   
lzbf 发表于 2022-9-4 15:12 | 显示全部楼层
内容还是非常丰富的                                 
olivem55arlowe 发表于 2022-9-4 15:27 | 显示全部楼层
以后多交流交流                  
wilhelmina2 发表于 2022-9-4 15:42 | 显示全部楼层
这些资料太全了!!!                 
macpherson 发表于 2022-9-4 16:28 | 显示全部楼层
资料还是相当全面的                                 
wuhany 发表于 2022-9-4 23:13 | 显示全部楼层
这个是原创吗
houjiakai 发表于 2022-9-5 15:00 | 显示全部楼层
官网自带的接口吗
 楼主| 数码小叶 发表于 2022-9-9 21:56 | 显示全部楼层
houjiakai 发表于 2022-9-5 15:00
官网自带的接口吗

只有几个官方的板卡引出了这种接口
tabmone 发表于 2022-10-3 20:11 | 显示全部楼层
回复查看一下相关的内容。                                 
您需要登录后才可以回帖 登录 | 注册

本版积分规则

105

主题

2560

帖子

19

粉丝
快速回复 在线客服 返回列表 返回顶部