基于STM32G431嵌入式学习笔记——九、IIC总线(一)EEPROM
创始人
2024-03-14 00:09:33
0

一、基础原理剖析

先前的实验中我们都是通过程序设计语言去调用串口、定时器、引脚等硬件设备进行从0到有的功能实现,所有的指令以及数据均来自程序设计语言,而没有想计算机一样将一些必要数据存入存储器中。
IIC总线是我们嵌入式板子上进行数据传输的主要通道,因此如果我们了解其中内部原理,便可以实现数据存储功能以及实时时间获取的功能。
在这里插入图片描述
我们今天首先介绍EEPROM的使用方法。
(具体原理以及内核操作会在寒假进行系统化剖析)

二、环境创建

在比赛资源包中官方已经给我们提供了IIC总线例程,我们可以直接去选择调用:
在这里插入图片描述
选择现有的工作环境进行复制(配置好LED、KEY、LCD的任意环境均可),重命名为EEPROM
在这里插入图片描述
将例程文件复制到相应文件夹中
在这里插入图片描述打开keil,加入对应的.c文件,随后编译
在这里插入图片描述
在这里插入图片描述

三、函数书写

以下函数均写入i2c_hal.c文件中

1.向EEPROM中写入数据
//EEPROM的写操作
void EEPROM_Write(unsigned char *pucBuf, unsigned char ucAddr, unsigned char ucNum)
{I2CStart();I2CSendByte(0xa0);//写标志I2CWaitAck();I2CSendByte(ucAddr);//送到的目标地址	I2CWaitAck();while(ucNum--){ I2CSendByte(*pucBuf++);//不断发送buffer中的数据进入存储器I2CWaitAck();	}I2CStop();delay1(500);//短暂延时
}

相关功能函数均位于该.c文件中
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

2.从EEPROM里读出数据
//EEPROM的读操作
void EEPROM_Read(unsigned char *pucBuf, unsigned char ucAddr, unsigned char ucNum)
{I2CStart();I2CSendByte(0xa0);//先要写数据I2CWaitAck();I2CSendByte(ucAddr);//指令送到的目标地址	I2CWaitAck();I2CStart();I2CSendByte(0xa1);//读数据的指令I2CWaitAck();while(ucNum--){*pucBuf++ = I2CReceiveByte();//不断从存储器中读数据进入bufferif(ucNum)I2CSendAck();	elseI2CSendNotAck();}I2CStop();	
}

四、程序书写

1.添加头文件

在这里插入图片描述

2.IIC初始化

在这里插入图片描述

3.

相关内容

热门资讯

杨伟民:刺激消费政策应该逐步转... 12月27日,中国财富管理50人论坛2025年会在京举行,第十三届全国政协经济委员会副主任杨伟民在会...
从KS直播异常事件切入,湖南芙... 12月22日晚,针对网络平台直播异常引发的社会关注事件,湖南芙蓉律师事务所围绕“黑灰产攻击、平台责任...
出行观 | 智驾出关“水土不服... (文/观察者网 高莘)据香港《南华早报》12月26日报道,香港有关部门将要调查一名违反“粤车南下”政...
全国人大常委会关于《中华人民共... 全国人民代表大会常务委员会关于 《中华人民共和国刑事诉讼法》 第二百九十二条的解释 (2025年12...
渊亭信息科技申请基于检索增强生... 国家知识产权局信息显示,厦门渊亭信息科技有限公司申请一项名为“基于检索增强生成的智能政策问答方法、系...
政策纾困与转型升级并举,中国乳... 乳制品行业是一二三产业深度融合的重要行业。近日,商务部一则公告引发外界对于这一行业发展形势的关注。 ...
重庆荣豪律师事务所:医疗纠纷处... 推荐指数:★★★★★ 在医疗纠纷频发的当下,如何高效、专业地处理医疗纠纷成为众多患者及其家属、医疗机...
(图表)三部重要法律案将提请2... 新华社图表,北京,2025年12月27日 十四届全国人大常委会第十九次会议12月27日表决通过相关...
《财经智库》总裁张燕冬:坚定的... 由三亚市人民政府主办,《财经》杂志、财经网、《财经智库》、三亚中央商务区管理局、三亚经济研究院共同承...
无证售烟:不起诉,亦须受罚! “未办理烟草专卖零售许可证销售卷烟,为何未追究刑事责任但是被行政处罚?”面对涉案商户的疑问,仁怀市人...