STM32F103学习笔记(7.1)——IIC读写AT24C02

2023-12-31 21:50

本文主要是介绍STM32F103学习笔记(7.1)——IIC读写AT24C02,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先附上AT24C02的读写程序:提取码:spl0

目录

写字节时序

读字节时序


首先要知道,IIC的地址是七位,不是八位(有8位还有10位,只不过AT24C02用7位,以前大多用7位),在发送地址的时候,高7位是地址,最后一位是读写位

首先AT24C02的从机地址:1 0 1 0 A2 A1 A0 R/W

读写位0表写,1表读

前面四位1010是固定的,A2、A1、A0由芯片引脚决定,如果只有这一个设备,完全可以全部接地

所以AT24C02在A0 A1 A2全部接地时,地址是0x50,左移一位后是0xA0

写字节时序

1.发送起始条件

2.发送七位地址和读写位(需要接收应答)

3.发送数据地址(需要接收应答)

4.发送要写入的数据(需要接收应答)

5.继续发送要写入的数据,会按顺序写进内存,不需要再发送地址(每次发送需要接收应答)

6.直到不想继续写入,不发送应答

7.发送停止条件

代码可以是这样:

/***
addr:		从机地址
dataAdd:	数据地址
data:		数据指针
len:		写入数据长度
*/void AT24C02_WriteByte(u8 addr, u8 dataAdd, unsigned char *data, u8 len)
{unsigned char i;IIC_Start();			//发送起始条件IIC_SendByte(addr<<1);	//发送七位地址,第零位0,表示写入IIC_ReadBck();			//读应答位IIC_SendByte(dataAdd);	//发送数据地址位IIC_ReadBck();			//读应答位for( i=0; i<len; i++){IIC_SendByte(*(data+i));		//发送数据IIC_ReadBck();					//读应答位}IIC_Stop();				//发送停止条件delay_ms(10);
}

读字节时序

AT24C02的读有点不一样,它会直接从当前地址读出数据给主机,所以需要先需要用到写字节时序,让它内部的指针指向需要读字节的地址,然后发送起始条件再开始读。

代码可以是这样:

void AT24C02_ReadByte(u8 addr, u8 dataAdd, unsigned char *data, u8 len)
{unsigned char i;IIC_Start();				//发送起始条件IIC_SendByte(addr<<1);		//发送七位地址,第零位0,写入IIC_ReadBck();				//读应答位IIC_SendByte(dataAdd);		//发送数据地址位IIC_ReadBck();				//读应答位//重新发送起始条件IIC_Start();					//发送起始条件IIC_SendByte(addr<<1|1<<0);		//发送七位地址,第零位1,读IIC_ReadBck();					//读应答位for(i=0; i<len; i++){*(data+i) = IIC_ReadByte();			//读一个字节IIC_SendBck();						//发送应答}IIC_Stop();						//发送停止条件delay_ms(10);
}

这篇关于STM32F103学习笔记(7.1)——IIC读写AT24C02的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/557228

相关文章

C++读写word文档(.docx)DuckX库的使用详解

《C++读写word文档(.docx)DuckX库的使用详解》DuckX是C++库,用于创建/编辑.docx文件,支持读取文档、添加段落/片段、编辑表格,解决中文乱码需更改编码方案,进阶功能含文本替换... 目录一、基本用法1. 读取文档3. 添加段落4. 添加片段3. 编辑表格二、进阶用法1. 文本替换2

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

C#读写文本文件的多种方式详解

《C#读写文本文件的多种方式详解》这篇文章主要为大家详细介绍了C#中各种常用的文件读写方式,包括文本文件,二进制文件、CSV文件、JSON文件等,有需要的小伙伴可以参考一下... 目录一、文本文件读写1. 使用 File 类的静态方法2. 使用 StreamReader 和 StreamWriter二、二进

MySQL主从复制与读写分离的用法解读

《MySQL主从复制与读写分离的用法解读》:本文主要介绍MySQL主从复制与读写分离的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、主从复制mysql主从复制原理实验案例二、读写分离实验案例安装并配置mycat 软件设置mycat读写分离验证mycat读

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio