第32讲:实战——I2C传感器极简驱动快速验证
CSDN专栏嵌入式程序开发实战嵌入式双范式AI编程嵌入式开发必掌握嵌入式求职面试技术资料第32讲实战——I2C传感器极简驱动快速验证一、I2C传感器驱动基础I2C是最常用的传感器接口快速验证I2C传感器驱动是嵌入式开发的基本功。1.1 I2C传感器特点优点只需两根线SCL、SDA支持多设备共享总线协议简单常见I2C传感器温湿度SHT30、BME280加速度MPU6050、LIS3DH气压BMP280光照BH1750颜色TCS347251.2 I2C驱动要点基本操作写寄存器发送设备地址寄存器地址数据读寄存器发送设备地址寄存器地址然后读取数据时序要求Start/Stop条件ACK/NACK应答总线恢复时间二、SHT30温湿度传感器2.1 快速验证流程Prompt生成STM32F103 SHT30驱动 - I2C1PB6(SCL)、PB7(SDA) - 地址0x44 - 功能读取温度和湿度 - 使用HAL库AI生成#includestm32f1xx_hal.hI2C_HandleTypeDef hi2c1;#defineSHT30_ADDR0x44voidI2C1_Init(void){hi2c1.InstanceI2C1;hi2c1.Init.ClockSpeed100000;hi2c1.Init.DutyCycleI2C_DUTYCYCLE_2;hi2c1.Init.OwnAddress10;hi2c1.Init.AddressingModeI2C_ADDRESSINGMODE_7BIT;hi2c1.Init.DualAddressModeI2C_DUALADDRESS_DISABLE;hi2c1.Init.OwnAddress20;hi2c1.Init.GeneralCallModeI2C_GENERALCALL_DISABLE;hi2c1.Init.NoStretchModeI2C_NOSTRETCH_DISABLE;HAL_I2C_Init(hi2c1);}int8_tSHT30_Read(float*temperature,float*humidity){uint8_tcmd[2]{0x2C,0x06};uint8_tdata[6];// 发送测量命令if(HAL_I2C_Master_Transmit(hi2c1,SHT30_ADDR1,cmd,2,100)!HAL_OK){return-1;}// 等待测量完成HAL_Delay(20);// 读取数据if(HAL_I2C_Master_Receive(hi2c1,SHT30_ADDR1,data,6,100)!HAL_OK){return-1;}// 计算温度uint16_trawTemp(data[0]8)|data[1];*temperature-45.0f175.0f*(float)rawTemp/65535.0f;// 计算湿度uint16_trawHumi(data[3]8)|data[4];*humidity100.0f*(float)rawHumi/65535.0f;return0;}intmain(void){HAL_Init();SystemClock_Config();I2C1_Init();UART_Init();floattemp,humi;while(1){if(SHT30_Read(temp,humi)0){printf(Temperature: %.2f°C, Humidity: %.2f%%\r\n,temp,humi);}else{printf(SHT30 read failed\r\n);}HAL_Delay(1000);}}2.2 验证方法检查设备是否就绪voidSHT30_Check(void){if(HAL_I2C_IsDeviceReady(hi2c1,SHT30_ADDR1,3,100)HAL_OK){printf(SHT30 found at 0x%02X\r\n,SHT30_ADDR);}else{printf(SHT30 not found\r\n);}}I2C总线扫描voidI2C_Scan(void){printf(I2C Scan:\r\n);for(uint8_taddr0;addr128;addr){if(HAL_I2C_IsDeviceReady(hi2c1,addr1,1,10)HAL_OK){printf(Device found at 0x%02X\r\n,addr);}}}三、MPU6050加速度传感器3.1 MPU6050驱动Prompt生成STM32F103 MPU6050驱动 - I2C1PB6(SCL)、PB7(SDA) - 地址0x68 - 功能读取加速度和陀螺仪 - 使用HAL库AI生成#defineMPU6050_ADDR0x68int8_tMPU6050_Init(void){uint8_tdata;// 唤醒MPU6050data0x00;if(HAL_I2C_Mem_Write(hi2c1,MPU6050_ADDR1,0x6B,1,data,1,100)!HAL_OK){return-1;}// 配置加速度量程±2gdata0x00;HAL_I2C_Mem_Write(hi2c1,MPU6050_ADDR1,0x1C,1,data,1,100);// 配置陀螺仪量程±250°/sdata0x00;HAL_I2C_Mem_Write(hi2c1,MPU6050_ADDR1,0x1B,1,data,1,100);return0;}int8_tMPU6050_ReadAccel(float*ax,float*ay,float*az){uint8_tdata[6];if(HAL_I2C_Mem_Read(hi2c1,MPU6050_ADDR1,0x3B,1,data,6,100)!HAL_OK){return-1;}int16_trawX(data[0]8)|data[1];int16_trawY(data[2]8)|data[3];int16_trawZ(data[4]8)|data[5];// 转换为g±2g量程*ax(float)rawX/16384.0f;*ay(float)rawY/16384.0f;*az(float)rawZ/16384.0f;return0;}四、BME280环境传感器4.1 BME280驱动Prompt生成STM32F103 BME280驱动 - I2C1PB6(SCL)、PB7(SDA) - 地址0x76 - 功能读取温度、湿度、气压 - 使用HAL库AI生成核心代码#defineBME280_ADDR0x76int8_tBME280_Init(void){uint8_tdata;// 检查芯片IDif(HAL_I2C_Mem_Read(hi2c1,BME280_ADDR1,0xD0,1,data,1,100)!HAL_OK){return-1;}if(data!0x60){// BME280芯片IDreturn-1;}// 配置湿度过采样x1data0x01;HAL_I2C_Mem_Write(hi2c1,BME280_ADDR1,0xF2,1,data,1,100);// 配置温度和气压过采样、工作模式data0x27;// 温度x1、气压x1、正常模式HAL_I2C_Mem_Write(hi2c1,BME280_ADDR1,0xF4,1,data,1,100);// 配置待机时间、滤波器data0x00;HAL_I2C_Mem_Write(hi2c1,BME280_ADDR1,0xF5,1,data,1,100);return0;}int8_tBME280_Read(float*temperature,float*pressure,float*humidity){uint8_tdata[8];// 读取所有数据if(HAL_I2C_Mem_Read(hi2c1,BME280_ADDR1,0xF7,1,data,8,100)!HAL_OK){return-1;}// 解析数据简化版实际需要补偿计算uint32_trawPress(data[0]12)|(data[1]4)|(data[2]4);uint32_trawTemp(data[3]12)|(data[4]4)|(data[5]4);uint16_trawHumi(data[6]8)|data[7];// 简化计算实际需要补偿*temperature(float)rawTemp/100.0f;*pressure(float)rawPress/100.0f;*humidity(float)rawHumi/1024.0f;return0;}五、I2C调试技巧5.1 常见问题问题一设备未找到原因 - 设备地址错误 - I2C引脚配置错误 - 设备未供电 解决 - I2C总线扫描 - 检查引脚配置 - 检查供电问题二读取数据错误原因 - 寄存器地址错误 - 时序问题 - 总线干扰 解决 - 添加延时 - 降低I2C速率 - 检查寄存器地址5.2 调试代码I2C读取调试int8_tI2C_Read_Debug(uint8_taddr,uint8_treg,uint8_t*data,uint16_tlen){printf(I2C Read: Addr0x%02X, Reg0x%02X, Len%d\r\n,addr,reg,len);HAL_StatusTypeDef statusHAL_I2C_Mem_Read(hi2c1,addr1,reg,1,data,len,100);if(statusHAL_OK){printf(Data: );for(uint16_ti0;ilen;i){printf(%02X ,data[i]);}printf(\r\n);return0;}else{printf(Error: %d\r\n,status);return-1;}}六、本讲核心要点6.1 记住这三句话I2C传感器驱动写寄存器、读寄存器、数据转换快速验证设备扫描、读取数据、验证合理性调试技巧I2C扫描、读取调试、时序检查6.2 实践建议对于新手学习I2C协议实践传感器驱动使用调试技巧对于有经验工程师建立传感器驱动模板库实现通用I2C驱动框架优化性能6.3 下讲预告第33讲将深入讲解实战ADC采集、电压采样快速代码生成ADC是模拟量采集的基础如何快速生成ADC采集代码下一讲将详细讲解。

相关新闻

第31讲:实战——SPI屏驱动快速试错、点亮屏幕

第31讲:实战——SPI屏驱动快速试错、点亮屏幕

CSDN专栏: 嵌入式程序开发实战嵌入式双范式AI编程嵌入式开发必掌握嵌入式求职面试技术资料 第31讲:实战——SPI屏驱动快速试错、点亮屏幕 一、SPI屏幕驱动基础 SPI屏幕是嵌入式常见的显示设备,驱动屏幕需要正确配置SPI、理解屏幕控制命令…

2026/7/23 19:01:05阅读更多 →
揭露大模型本质,大模型入门必看的12本书!看完我直接跪了

揭露大模型本质,大模型入门必看的12本书!看完我直接跪了

敢不敢用一年时间读完这12本书,模型入门必看的12本书!建议收藏!! 第一本: 《基于GPT-3,ChatGPT,GPT-4等Transformer架构的自然语言处理》 主要内容 了解用于解决复杂语言问题的新技术。将GPT-3与T5、GPT-2和基于BE…

2026/7/23 19:01:05阅读更多 →
AI 写 wot-ui 总在猜 API?我们把 Skills、MCP 和 CLI 都配好了

AI 写 wot-ui 总在猜 API?我们把 Skills、MCP 和 CLI 都配好了

大家好,我是不如摸鱼去,wot-ui 的发起人,欢迎来到我的 AI Coding 分享专栏。 这两年我经常用 AI 写代码。它写页面确实快,几十秒就能给你搓出一份看起来像模像样的 Vue 文件。然后你把代码放进项目,熟悉的节目就开始了…

2026/7/23 19:01:05阅读更多 →
出海AI企业搭建算力基础设施,要满足哪些核心性能要求?

出海AI企业搭建算力基础设施,要满足哪些核心性能要求?

算力出海这件事,前前后后帮客户做了几十次,最关键的底线其实就四条:GPU算力密度、跨区域网络延迟、存储吞吐带宽、安全合规。不同阶段要求不一样,选错直接拉高成本还拖工期。一、AI算力出海,性能瓶颈通常卡在哪大部分问…

2026/7/23 20:17:30阅读更多 →
计算机毕业设计之中医经方查询与管理系统设计

计算机毕业设计之中医经方查询与管理系统设计

相比于以前的传统手工管理方式,智能化的管理方式可以大幅降低平台的运营人员成本,实现了中医经方查询与管理的标准化、制度化、程序化的管理,有效地防止了中医经方查询与管理的随意管理,提高了信息的处理速度和精确度,…

2026/7/23 20:17:30阅读更多 →
2026新余黄金回收白银回收铂金回收靠谱临街实体公安备案支持到店核验门店联系方式推荐

2026新余黄金回收白银回收铂金回收靠谱临街实体公安备案支持到店核验门店联系方式推荐

2026新余黄金白银铂金回收实测榜单|公安备案临街实体中检认证无折旧费门店推荐 新余本地贵金属回收店铺遍地丛生,行业套路层出不穷,不少市民变现遭遇虚高报价、克扣损耗、未经同意熔金压价等问题。为帮助本地居民规避消费陷阱,小编…

2026/7/23 20:17:30阅读更多 →
计算机毕业设计之中小学家小智慧平台设计与实现

计算机毕业设计之中小学家小智慧平台设计与实现

随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&#xf…

2026/7/23 20:17:30阅读更多 →
STM32从零到量产开发:四路继电器工业控制模块开发— Modbus RTU 通讯协议设计

STM32从零到量产开发:四路继电器工业控制模块开发— Modbus RTU 通讯协议设计

STM32从零到量产开发:四路继电器工业控制模块开发— Modbus RTU 通讯协议设计文档版本:v1.0.0(对应固件 v1.0.0 / 设备类型码 0x0002) 适用产品:P02_Relay_Controller_4Channels Relay Industrial Control Module 本文…

2026/7/23 20:17:30阅读更多 →
YOLOv8水果检测系统:从数据集构建到部署落地

YOLOv8水果检测系统:从数据集构建到部署落地

1. 项目概述:当计算机视觉遇上水果摊去年帮朋友改造水果店智能结算系统时,我深刻体会到传统图像处理方法在复杂场景下的局限性。光照变化、重叠遮挡、相似颜色干扰等问题,让基于OpenCV的方案准确率始终徘徊在80%左右。直到采用YOLOv8构建的水…

2026/7/23 20:15:30阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/23 18:58:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/23 18:58:18阅读更多 →