版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 STM32单机基础15使硬件I2C读取温湿度传感器数据(SHT30)本篇详细的记录了如何使STM32CubeMX配置STM32L431RCT6的硬件I2C外设,读取SHT30温湿度传感器的数据并通过串发送。1.准备作硬件准备开发板先需要准备个开发板,这我准备的是:SHT30温湿度传感器SHT30温湿度传感器是个完全校准的、现的、带有温度补偿的数字输出型传感器,具有 2.4V-5.5V 的宽电压持,使IIC接进通信,最速率可达1M并且有两个户可选地址,除此之外,它还具有8个引脚的DFN超封装,如图:SHT30的原理图如下: 软件准备需要安装好Keil - MDK及芯对应的包,以便编译和下载成的
2、代码;Keil MDK和串助的安装包都可以关注“熊派开源社区”微信公众号,在资料教程栏中可获取安装包。2.成MDK程选择芯型号打开STM32CubeMX,打开MCU选择器: 搜索并选中芯:配置时钟源如果选择使外部速时钟(HSE),则需要在System Core中配置RCC;如果使默认内部时钟(HSI),这步可以略过;这我都使外部时钟:配置串 熊派开发板板载ST-Link并且虚拟了个串,原理图如下:这我将开关拨到模式,使PC的串与USART1之间连接。AT-MCU接下来开始配置:USART1配置I2C接 查看熊派E53接的原理图:接下来开始配置I2C接1:配置时钟树 STM32L4的最主频到80
3、M,所以配置PLL,最后使即可:成程设置代码成设置 最后设置成独的初始化件:成代码点击即可成MDK-V5程:3. 在MDK中编写、编译、下载户代码重定向printf( )函数参考:。修改I2C初始化代码的BUG 4. 编写SHT30驱动程序参考进编程。宏定义SHT30器件地址先来编写头件,SHT30的器件地址由端的低电平决定:ADDRsht30_i2c_drv.h注意数据册中给出了8位数据,只有低7位作地址,结合原理图,可以定义如下:/* ADDR Pin Conect to VSS */#define SHT30_ADDR_WRITE 0 x441#define SHT30_ADDR_REA
4、D (0 x44 8;cmd_buffer 1 = cmd;return HAL_I2C_Master_Transmit (&hi2c1, SHT30_ADDR_WRITE, (uint8_t* cmd_buffer, 2, 0 xFFFF);复位函数 /* brief 复位SHT30* param none* retval none*/HAL_Delay(20);SHT30作模式初始化函数(周期测量模式)/*return SHT30_Send_Cmd(MEDIUM_2_CMD);从SHTY30读取次数据(周期测量模式下)从SHT30数据册中可以得到在周期测量模式下读取次数据的时序,如图:根据
5、该时序可以看出,先要发送读数据的命令,然后接收6个字节的数据,编写程序如下:/* brief 从SHT30读取次数据* param dat 存储读取数据的地址(6个字节数组)* retval 成功 返回HAL_OK*/uint8_t SHT30_Read_Dat(uint8_t* dat)return HAL_I2C_Master_Receive (&hi2c1, SHT30_ADDR_READ, dat, 6, 0 xFFFF);从接收数据中校验并解析温度值和湿度值在数据册中可知,SHT30分别在温度数据和湿度数据之后发送了8-CRC校验码,确保了数据可靠性。CRC-8校验程序如下: uin
6、t8_t remainder ; /余数uint8_t i = 0, j = 0; /循环变量/* 初始化*/* 从最位开始依次计算*/* 返回计算的CRC码 */return remainder;计算温度值和湿度值的公式在数据册中已给出,如图:接下来编写解析数据的函数: /* brief 将SHT30接收的6个字节数据进CRC校验,并转换为温度值和湿度值* param dat 存储接收数据的地址(6个字节数组)* retval 校验成功 返回0*校验失败 返回1,并设置温度值和湿度值为0*/uint8_t SHT30_Dat_To_Float (uint8_t* const dat, flo
7、at* temperature , float* humidity)/* 校验温度数据和湿度数据是否接收正确*/if(CheckCrc8(dat, 0 xFF) != dat2 | CheckCrc8(&dat3, 0 xFF) != dat5)return 1;/* 转换温度数据*/* 转换湿度数据*/return 0;5. 测试SHT30驱动程序在main函数中对该驱动进测试,在中添加如下代码:main.c int main(void)HAL_Init();/* Infinite loop */* USER CODE BEGIN WHILE */while (1)/* USER CODE END WHILE */* USER CODE BEGIN 3 */HAL_Delay(1000);if(SHT30_Read_Dat(recv_dat) = HAL_OK)if(SHT30_Dat_To_Float (recv_dat, &temperature , &humidity)=0)printf(temperature = %f, humidity = %fn , temperature , humidity);elseprintf(crc check fail.n);elseprin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川省骨科医院招聘50人备考题库含答案详解(新)
- 2026广西现代职业技术学院招聘8人备考题库含答案详解(精练)
- 2026重庆科瑞制药(集团)有限公司招聘1人备考题库及答案详解(考点梳理)
- 2026年山东师范大学第二附属中学第二批公开招聘人员备考题库(4名)完整答案详解
- 2026恒丰银行广州分行社会招聘8人备考题库含答案详解(研优卷)
- 2026广东广州市海珠区事业单位定向招聘社区党组织书记11人备考题库及答案详解(真题汇编)
- 2026年福建省晋江一中教育集团紫帽中学关于教师应聘意向摸底的备考题库附答案详解(巩固)
- 2026中国人民大学团委招聘1人备考题库(北京)及完整答案详解1套
- 2026四川南充市仪陇县人力资源和社会保障局考调事业单位工作人员8人备考题库附答案详解(达标题)
- 2026浙江省海运集团股份有限公司招聘2人备考题库含答案详解(夺分金卷)
- 2025四川广安爱众股份有限公司对外招聘21人笔试考试参考试题及答案解析
- 雨课堂学堂云在线《临床思维与人际沟通 》单元测试考核答案
- 军队文职武警部队通知书
- 《中国临床肿瘤学会(csco)小细胞肺癌诊疗指南(2025版)》
- 电学实验 训练题-高考物理一轮复习(版含答案)
- 2025 年中职高考对口升学(幼儿教育学)真题试卷附参考答案
- 从传统到现代-西方现代艺术赏析课件-2025-2026学年高中美术湘美版(2019)美术鉴赏
- 企业收购尽职调查资料清单详解
- 某地铁供电系统维保项目技术方案
- 《宠物化毛球产品有效性评价方法和程序》
- 焦炉煤气综合利用制LNG项目可行性研究报告
评论
0/150
提交评论