基于STM32F401RET6智能锁项目(AT24C0X存储芯片)

一、IIC基本介绍

1、IIC通信接口

• I2C(Inter IC Bus)是由Philips公司开发的一种通用数据总线
• 两根通信线:SCL(串行时钟线)、SDA(串行数据线)
• 同步,半双工
• 带数据应答
• 支持总线挂载多设备(一主多从、多主多从)
一主多从:单片机作为主机,主导I2C总线的运行,挂载在I2C总线的所有外部模块都是从机,从机只有被主机点名之后才能控制I2C总线,不能在未经允许的情况下去碰I2C总线,防止冲突。
多主多从:在总线上的任何一个模块都可以是主机

2、IIC通信接口的特点

①.双线制。一根是SCL,作为时钟同步线;一根是SDA,作为数据传输线。

②.半双工。因为真正做数据传输的只有SDA,所以使用IIC通信的双方能双向通信,但不能同时

③.同步通信。有同步信号线SCL,通信协议时序严格,SDA在通信双方初步同步后在SCL的时序下按位传输数据。

④.通信为主从机模式。支持一主多从模式,通信过程中SCL一直由主机控制,而SDA则不固定

⑤.从属设备地址。因为支持主从机模式,所以IIC总线中主机在通信过程中为了确保找到具体的从机,需要先知道该从机的设备地址(Device Address)而主机则不需要设备地址。

二、IIC从设备的地址

1、设备地址的组成

①从机地址是7位,读写位是1位。

②读写位

因为lIC是半双工通信接口,所以在主机开始与从机通信前,主机需要告诉从机此次通信是谁做为发送方,谁做为接收方。故有了读写位。

其中最低位为0表示写模式----主机作为发送方;1表示读模式----主机作为接收方

2、设备地址的作用

用于在IIC总线上唯一标识每个从设备,以便主设备能够正确地与特定从设备进行通信。通过设备地址,主设备可以向特定的从设备发送数据或请求数据,从而实现设备之间的通信和数据交换。设备地址通常是一个唯一的数字或编码,每个从设备都有一个独特的地址,主设备根据这个地址来识别和访问相应的从设备。

三、AT24COX

1、 AT24C02介绍

AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息
存储介质:E2PROM
通讯接口:I2C总线
容量:256字节

2、硬件原理图

3、设备地址

写模式设备地址:OxA0

读模式设备地址:OxA1

2、时序单元

1、起始条件

在I2C 总线处于空闲状态时:SCL和SDA都处于高电平状态,是由SCL和SDA由外挂的上拉电阻拉高至高电平,总线处于平静的高电平状态。
主机需要进行数据收发时,当从机捕获到SCL高电平,SDA下降沿信号时,就会进行自身的复位,等待主机的召唤。然后在SDA下降沿之后,主机要再把SCL拽下来,拽下SCL:1、占用总线,2、方便拼接。

2、终止条件

SCL先放手,回到高电平;SDA再放手,回到高电平,产生一个上升沿。上升沿触发终止条件,同时终止条件之后,SCL和SDA都是高电平。

3、起始条件和终止代码实现

这些是封装的函数,还是对SCL、SDA的操作,根据时序看配置低电平还是高电平。

4、发送一个字节

主机如果想发送0,就拉底SDA到低电平;如果想发送1,就放手,SDA回到高电平,在SCL低电平期间,允许改变SDA的电平。当这一位的数据放好之后,主机就松手时钟线,SCL回到高电平。在高电平期间,是从机读取SDA的时候,所以高电平期间,SDA不允许变化。SCL处于高电平之后,从机需要尽快地读取SDA,一般在上升沿这个时刻,从机就已经读取完成了。主机在放手SCL一段时间后,就可以继续拉低SCL,然后传输下一位。

5、接收一个字节

SCL低电平期间,从机将数据位依次到SDA线上(高位先行),然后释放SCL,主机在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化。

6、发送应答和接收应答

• 发送应答:主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答

• 接收应答:主机在发送完一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA

四、AT24COX代码实现

指定地址写

对于指定设备(Slave Address),在指定地址(Reg Address)下,
写入指定数据(Data)
void AT24C02_W_REG(uint8_t adress,uint8_t data)   //指定地址写
{
	MyI2C_Start();  //起始条件
	MyI2C_SendByte(AT24C02_ADDR_W);  //指定从机设备写的地址:10100000
	MyI2C_ReceiveAck();   //主机接收从机的应答  判断从机是否收到
	MyI2C_SendByte(adress);//指定内部地址
	MyI2C_ReceiveAck(); 
	MyI2C_SendByte(data); //写入的数据
	MyI2C_ReceiveAck();
	MyI2C_Stop();
}

指定地址读

对于指定设备(Slave Address),在当前地址指针指示的地址下,
读取从机数据(Data)
uint8_t AT24C02_R_REG(uint8_t adress)  //指定地址读
{
	uint8_t data;
	MyI2C_Start();  //起始条件
	MyI2C_SendByte(AT24C02_ADDR_W);  //指定从机设备写的地址:10100000
	MyI2C_ReceiveAck();   //主机接收从机的应答  判断从机是否收到
	MyI2C_SendByte(adress);//指定内部地址
	
	MyI2C_Start();  //起始条件
	MyI2C_SendByte(AT24C02_ADDR_R);//读从机的数据
	MyI2C_ReceiveAck();  //接收应答,从机开始发数据
	data = MyI2C_ReceiveByte();  //主机接收数据
	MyI2C_SendAck(1);//参数1:不给从机应答
	MyI2C_Stop();
	
	return data;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java后端的接口参数两个interger 类型情况解决

get请求 &#xff0c;对应请求头 RequestParm, post请求&#xff0c; 对应请求体 &#xff0c;RequestBody 两个Integer参数情况 GetMapping("/insertStaffClass")public R<Void> insertStaffClass(RequestParam Integer staffId,RequestParam List<Integ…

C++ | Leetcode C++题解之第75题颜色分类

题目&#xff1a; 题解&#xff1a; class Solution { public:void sortColors(vector<int>& nums) {int n nums.size();int p0 0, p2 n - 1;for (int i 0; i < p2; i) {while (i < p2 && nums[i] 2) {swap(nums[i], nums[p2]);--p2;}if (nums[i…

python跟C++选哪个?

选择使用Python还是C取决于你的具体需求和项目背景。我这里有一套编程入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习编程&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私信22&#xff0c;我在后台发给你。 在通信工程行业…

centos7安装zabbix-server

zabbixan-server安装 环境安装zabbix安装zabbix配置apachezabbix-UI前端配置修改zabbix为中文语言 环境 准备&#xff1a; centos7系统、mysql数据库/MariaDB数据库 mysql数据库可参照&#xff1a;https://blog.csdn.net/weixin_61367575/article/details/138774428?spm1001.…

Java(三)---逻辑控制

文章目录 前言1.逻辑控制语句的分类1.顺序结构2.分支结构2.1.if结构2.1.1.if...else语句2.2.2.if ... else if... else语句 2.2.switch语句 3.循环结构3.1.while3.2.break3.3.continue3.4.for循环3.5.do while循环 4.输入输出4.1.输入到控制台4.2.从键盘输入 前言 前两篇文章&…

EfficientNet网络结构详细解读+SE注意力机制+pytorch框架复现

文章目录 &#x1f680;&#x1f680;&#x1f680;前言一、1️⃣ 网络详细结构1.1 &#x1f393; MBConv结构1.2 ✨SE注意力机制模块1.3 ⭐️Depthwise Separable Convolution深度可分离卷积1.3.1 普通卷积操作(Convolution)1.3.2 逐深度卷积&#xff08;Depthwise Convoluti…

安全测试|常见SQL注入攻击方式、影响及预防

SQL注入 什么是SQL注入&#xff1f; SQL注入是比较常见的网络攻击方式之一&#xff0c;主要攻击对象是数据库&#xff0c;针对程序员编写时的疏忽&#xff0c;通过SQL语句&#xff0c;实现无账号登录&#xff0c;篡改数据库。 SQL注入简单来说就是通过在表单中填写包含SQL关键…

论文笔记:仅一个进程故障就无法达成共识

仅一个进程故障就无法达成共识 仅一个进程故障指的是在异步的分布式系统中 摘要 异步系统的共识问题&#xff08;consensus&#xff09;涉及一组进程&#xff0c;其中有的进程可能不可靠&#xff08;unreliable&#xff09;。共识问题要求可靠的进程一致地从两个侯选中决定&…

制造业如何挖掘数据价值,附数据分析处理软件推荐

制造业如何挖掘和利用数据价值&#xff1f; 在信息化、智能化高速发展的今天&#xff0c;制造业正迎来一场由数据驱动的深刻变革。数据&#xff0c;作为这场变革的核心驱动力&#xff0c;正被制造业企业深度挖掘和利用&#xff0c;以实现更高效、更智能的生产模式。 制造业在利…

【IP证书】公网IP地址SSL证书怎么获取和安装

一、获取SSL证书 1、选择支持IP证书的CA&#xff1a; 选择一个支持为IP地址颁发SSL证书的证书颁发机构&#xff0c;如JoySSL。 2、准备验证信息&#xff1a; 确保您的公网IP地址是可访问的&#xff0c;并准备好相关的组织信息或IP地址所有权证明&#xff0c;具体取决于CA的…

Goby 漏洞发布|瑞友天翼应用虚拟化系统 /hmrao.php SQL注入漏洞

漏洞名称&#xff1a;瑞友天翼应用虚拟化系统 /hmrao.php SQL注入漏洞 English Name&#xff1a; Ruiyou-Tianyi-App-Virtualization-Delivery-Platform /hmrao.php SQL Injection Vulnerability CVSS core: 9.8 影响资产数&#xff1a;75202 漏洞描述&#xff1a; 瑞友天…

揭秘 HTTP 代理:增强在线活动的安全性和匿名性

HTTP 代理在保护您的在线隐私、增强安全性以及允许访问受限内容方面发挥着关键作用。了解 HTTP 代理的工作原理以及如何有效地利用它们可以让您掌控自己的在线状态和浏览体验。让我们深入研究 HTTP 代理的世界&#xff0c;探索它们的优势、应用程序以及最大化其效用的最佳实践。…

基于SSM SpringBoot vue学校办公自动化系统

基于SSM SpringBoot vue学校办公自动化系统 系统功能 登录注册 个人中心 用户信息管理 部门信息管理 公共通知管理 个人邮箱管理 日常安排管理 管理员管理 签到记录管理 会议管理 开发环境和技术 开发语言&#xff1a;Java 使用框架: SSM(Spring SpringMVC Mybaits)或Spr…

1Panel应用推荐:Uptime Kuma

1Panel&#xff08;github.com/1Panel-dev/1Panel&#xff09;是一款现代化、开源的Linux服务器运维管理面板&#xff0c;它致力于通过开源的方式&#xff0c;帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用&#xff0c;1Panel特别开通应用商店&am…

【电路笔记】-无源带通滤波器

无源带通滤波器 文章目录 无源带通滤波器1、概述2、二阶带通滤波器的频率响应3、带通滤波器示例4、总结无源带通滤波器可以通过将低通滤波器与高通滤波器连接在一起制成。 1、概述 无源带通滤波器可用于隔离或滤除特定频带或频率范围内的某些频率。 简单 RC 无源滤波器中的截止…

ollama api只能局域网访问,该怎么破?

安装ollama: ollama离线安装,在CPU运行它所支持的那些量化的模型-CSDN博客文章浏览阅读178次,点赞2次,收藏6次。ollama离线安装,在CPU运行它所支持的哪些量化的模型 总共需要修改两个点,第一:Ollama下载地址;第二:Ollama安装包存放目录。第二处修改,修改ollama安装目…

vivado Kintex UltraScale+ 配置存储器器件

Kintex UltraScale 配置存储器器件 下表所示闪存器件支持通过 Vivado 软件对 Kintex UltraScale 器件执行擦除、空白检查、编程和验证等配置操作。 本附录中的表格所列赛灵思系列非易失性存储器将不断保持更新 &#xff0c; 并支持通过 Vivado 软件对其中所列非易失性存…

如何挑选护眼灯?分享最好的台灯品牌排行榜

作为家长&#xff0c;孩子的健康无疑是我们最为牵挂的事项。然而&#xff0c;通过研究数据显示&#xff0c;我国青少年儿童的近视率高达52.7%&#xff0c;这意味着在每十名儿童中&#xff0c;就有超过半数的孩子可能面临视力问题。这一数据无疑令人警觉。当我们看到孩子们在写作…

【刷题】一篇文章搞定“位运算”

只要春天不死&#xff0c;就有迎春的花朵年年岁岁开放&#xff0c;生命讲涅槃&#xff0c;生生不息&#xff0c;并会以另一种形式永存。 – 路遥 《平凡的世界》 (◦′ᆺ‵◦) ♬ ✧❥✧.•✧♡✧ ℒℴѵℯ ✧♡✧•.❥ (◦′ᆺ‵◦) ♬ ✧❥✧.•✧♡✧ ℒℴѵℯ ✧♡✧•.❥…

变分自编码器(Variational Autoencoder, VAE)

目录 why VAE&#xff1a; 关于变分自编码器&#xff0c;这篇文章讲的不错 1. 自编码器&#xff08;Autoencoder&#xff09;的基础 2. 引入概率图模型 3. 重参数化技巧 4. 损失函数 5. 应用 变分自编码器&#xff08;Variational Autoencoder, VAE&#xff09; why VAE…