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

news/2025/10/25 21:13:44/文章来源:https://www.cnblogs.com/dshuidawsud/p/19165574

任务一. 解释什么是“软件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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/946432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nature子刊 | 基于生物学信息的神经网络

机器学习模型在多组学数据中的应用常常需要在预测准确性与生物学可解释性之间进行权衡。一种新兴的深度学习架构通过结构化地编码生物学知识,以提升预测能力和可解释性。然而,更广泛地采用这种架构仍面临着机遇与挑战…

2025年项目总延期?这30款项目进度管理软件一定有一款适合你!

项目总延期是困扰团队效率的常见难题,但选对工具能让交付率提升至85%以上。本文将为您精选30款高效的项目进度管理软件,覆盖从敏捷开发到传统瀑布模型的不同需求。无论是Codes的全流程管控、Jira的敏捷适配性,还是T…

Educational Codeforces Round 66 (Rated for Div. 2) A~F

A - From Hero to Zero 模拟。 能除 \(k\) 直接除 \(k\),否则减掉余数部分。点击查看代码 #include <bits/stdc++.h>using i64 = long long;void solve() {i64 n, k;std::cin >> n >> k;i64 ans = …

小程序原创--基于微信开发者工具实现的猜谜游戏程序 - 教程

小程序原创--基于微信开发者工具实现的猜谜游戏程序 - 教程2025-10-25 21:07 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importan…

stm32使用SPI外设读取W25Q32芯片

void SPI_GPIO_Init(void) {//SPI2-NSS PB12:PIN25 --CS//SPI2-SCK PB13:PIN26//SPI2-MISO PB14:PIN27 W25Q32:DO//SPI2-MOSI PB15:PIN28 W25Q32:DIGPIO_InitTypeDef GPIO_InitStruct; SPI_InitTypeDef …

Avjinder Singh Kaler | 数量遗传学基础

研究对象与核心思想• 数量遗传学研究数量性状(如身高、产量等连续变异性状)的遗传规律。 • 特点:受多基因控制,且环境效应显著。单基因模型基础• 单基因模型是数量遗传理论的起点,假设一个基因位点有两个等位基…

鲁东大学提出可解释的自适应集成机器学习全基因组选择算法用于小麦产量性状关键SNPs筛选

研究背景 全基因组选择(genomic selection, GS)是现代分子育种中的一项重要技术,作为一种强大的机器学习GS方法,堆叠集成学习(stacking ensemble learning, SEL)有效地融合了不同模型(基学习器)的优势,以精确…

台球厅收银台押金原路退回系统押金预授权—东方仙盟 - 详解

台球厅收银台押金原路退回系统押金预授权—东方仙盟 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consol…

数论专题小记

我的数论以前一只因为对数字的恐惧而搁置,准备这几天补回来 /kk。 狄利克雷卷积&莫比乌斯反演我们定义 狄利克雷卷积 这种运算是把两个数轮函数 \(f,g\) 卷成另一个函数 \(t\),其中 \(t\) 满足: \(\ \ \ \ \ \ …

ReactUse 与ahook对比 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

机械臂和相机的9点标定原理

9点标定到底怎么工作的? 这个问题困惑了我很久,虽然想海康VisionMaster 和Halcon 这种软件都提供了很好用的工件,但是最好懂原理,这样才不仅能做项目,还能做好项目。 最近好好研究了一下,感觉是搞清楚了,就记录…

遗传改良中的核心技术:交配设计

分享一则报告,系统总结了植物育种中常用的交配设计(Mating Designs)方法。定义与目的定义:交配设计是指为产生后代而在植物群体间有计划的杂交方案。目的:理解性状或行为的遗传控制机制;为作物品种开发提供基础群…

语言是火,视觉是光:论两种智能信号的宿命与人机交互的未来 - 教程

语言是火,视觉是光:论两种智能信号的宿命与人机交互的未来 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &quo…

书籍推荐 | 《数量遗传学》(王建康)

数量遗传学是智能育种必学课程,这里推荐一本由中国农科院作物科学研究所王建康老师主编的教材。本书系统介绍群体遗传与数量遗传的基本理论及其在动植物育种中的应用。全书分群体遗传、数量遗传、育种应用和基因定位四…

Plant Com | 一种新的多源数据(基因组、表型和跨环境)融合的基因组预测框架-GPS

基因组选择(GS)和表型选择(PS)被广泛用于加速植物育种。然而,在处理处理复杂性状时,这两种选择方法的准确性、稳健性和可转移性尚未得到充分探索。近日,南京农业大学丁艳锋团队在Plant Communications发表题为G…

分享二个实用正则

正则表达式是一种用于匹配和操作文本的强大工具。它由一系列字符和特殊字符组成,用于描述要匹配的文本模式。最近看到二个我觉得很实用的正则使用方式,一起来看看吧前言 正则表达式(Regular Expression,简称regex或…

国际水稻研究所推出 AI 驱动的全球杂交水稻育种与亲本筛选数字平台

菲律宾洛斯巴诺斯(2025 年 2 月 26 日)——国际水稻研究所(IRRI)正式发布全新 AI 驱动数字平台,可显著加速全球杂交水稻育种与亲本筛选工作,通过推广高产且气候智能型杂交水稻,为粮食安全与可持续农业作出贡献。…

《程序员修炼之道:从小工到专家》笔记1

1核心身份认同:本书开篇即定义了“注重实效的程序员”的形象。我们不仅是代码的搬运工,更是项目的看护人和利益的守护者。我们勇于承担责任,而不是找借口。 2两大核心哲学: “我的源码让猫给吃了”:这是一种反讽。…

深入解析:UNIX下C语言编程与实践3-Vi 编辑器从入门到精通:快捷键使用与高效编辑技巧

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

科普报告:分子标记辅助选择(MAS)育种

分享一则由埃及农业基因工程研究所(AGERI)的Dina El-Khishin教授撰写《Marker Assisted Selection(MAS,标记辅助选择)》的报告,系统介绍了分子标记在植物育种中的应用,特别是如何利用MAS技术应对气候变化背景下…