基于STM32G431嵌入式学习笔记——九、IIC总线(一)EEPROM
创始人
2024-03-14 00:58:37
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.

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...