尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

嵌入式基础作业--第七周--IIC协议采集温湿度与OLED显示

嵌入式基础作业--第七周--IIC协议采集温湿度与OLED显示
📅 发布时间:2026/6/20 18:23:53

任务一. 解释什么是“软件I2C”和“硬件I2C”
根据野火教材第23章"IC--读写EEPROM"的内容,详细解释软件I2C和硬件I2C的概念和区别:

I2C总线基础

I2C(Inter-Integrated Circuit)是一种两线式串行总线,包含:

SCL:串行时钟线
SDA:串行数据线

硬件I2C

定义:

硬件I2C是指使用微控制器内部专用的I2C硬件外设来实现通信。

特点:

  1. 专用硬件:MCU内部有专门的I2C控制器
  2. 自动处理:硬件自动处理起始条件、停止条件、应答位等
  3. 寄存器配置:通过配置相关寄存器来设置I2C参数
  4. 中断/DMA支持:通常支持中断和DMA传输

工作方式:

// 以STM32为例,硬件I2C初始化
I2C_InitTypeDef I2C_InitStructure;
I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
I2C_InitStructure.I2C_OwnAddress1 = 0x30;
I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
I2C_InitStructure.I2C_ClockSpeed = 400000; // 400kHz

软件I2C

定义:

软件I2C是通过通用GPIO引脚,用软件模拟I2C时序来实现通信。

特点:

  1. GPIO模拟:使用任意两个GPIO引脚模拟SCL和SDA
  2. 软件控制:通过代码控制引脚电平变化来产生时序
  3. 灵活性高:引脚选择灵活,时序可完全控制
  4. 资源占用:需要CPU实时参与,占用较多CPU资源

工作方式:

// 软件I2C关键函数示例
void I2C_Start(void)
{
SDA_HIGH();
SCL_HIGH();
Delay_us(5);
SDA_LOW();
Delay_us(5);
SCL_LOW();
}

void I2C_WriteByte(uint8_t data)
{
for(int i=0; i<8; i++) {
if(data & 0x80) SDA_HIGH();
else SDA_LOW();
Delay_us(5);
SCL_HIGH();
Delay_us(5);
SCL_LOW();
data <<= 1;
}
}

主要区别对比:

特性 硬件I2C 软件I2C
实现方式 专用硬件电路 GPIO软件模拟
CPU占用 低 高
通信速度 较高且稳定 受代码效率影响
引脚固定性 引脚固定 引脚可任意选择
开发难度 需要理解寄存器 时序控制相对直观
可靠性 较高 受中断等干扰
资源消耗 占用硬件资源 占用CPU时间

应用场景:

硬件I2C适用场景:

高速通信需求
多任务系统
低功耗应用
复杂的I2C通信(如时钟拉伸等)

软件I2C适用场景:

硬件I2C资源不足
引脚资源紧张需要重映射
学习理解I2C协议
简单的低速设备通信

总结

硬件I2C效率高但灵活性差,软件I2C灵活但效率低。在实际项目中,通常优先使用硬件I2C,只有在硬件资源不足或特殊需求时才使用软件模拟。通过学习两种实现方式,可以更深入地理解I2C通信协议的本质。

任务二.阅读AHT20数据手册,编程实现:每隔2秒钟采集一次温湿度数据,并通过串口发送到上位机(win11)
1.编写aht20.h头文件

屏幕截图 2025-10-25 210155
2.编写aht20.c源文件

屏幕截图 2025-10-25 210320

屏幕截图 2025-10-25 210351

屏幕截图 2025-10-25 210418
3.编写main.c主函数文件

屏幕截图 2025-10-25 210511

屏幕截图 2025-10-25 210535
4.编译并运行编写好的程序
编译运行成功:

屏幕截图 2025-10-25 210620

5.调用xcom串口调试助手进行测试:
测试结果:

屏幕截图 2025-10-25 210949

相关新闻

  • Nature子刊 | 基于生物学信息的神经网络
  • 2025年项目总延期?这30款项目进度管理软件一定有一款适合你!
  • 机械臂和相机的9点标定原理

最新新闻

  • MPC8641D双核SoC:嵌入式网络设计的集成化与多核编程实战
  • 6月西安奢侈品回收,闲置奢侈品包包手表首饰变现前先看看这篇 - 钦扬网络
  • 2026年6月评价高的别墅外墙石材/本地石材厂家推荐泌阳县丰源石业,加厚抗冻板材,北方低温户外不开裂不剥落 - 品牌鉴赏师
  • MAC7200微控制器时钟与复位机制深度解析与实战配置
  • 2026年详尽评测:10款好用的降AIGC软件,部分无限免费降AI!必看干货 - 降AI小能手
  • 2026南京品牌首饰保值白皮书,旧款磨损首饰,均按市场实价变现 - 讯息早知道

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号