教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 法律文档 >

STM32 - -6 - -I2C读写AT24C02

来源:网络收集 时间:2026-09-04
导读: STM32----6----I2C读写AT24C02 文章发表于:2011-05-09 13:51 STM32作为主机I2C,读写24C02 EEPROM 1、 时钟和数据的传输:开始和停止条件,数据在SCL的高电平期间有效,在SCL的低电平期间改变。 2、 开始条件:在SCL高电平期间,SDA产生一个下降沿 3、 停止

STM32----6----I2C读写AT24C02

文章发表于:2011-05-09 13:51

STM32作为主机I2C,读写24C02 EEPROM

1、 时钟和数据的传输:开始和停止条件,数据在SCL的高电平期间有效,在SCL的低电平期间改变。 2、 开始条件:在SCL高电平期间,SDA产生一个下降沿 3、 停止条件:在SCL高电平期间,SDA产生一个上升沿

4、 应答:成功接收到数据(地址和数据),产生一个应答位(在第9个时钟周期,将SDA拉低) 下面是源程序:原理上说,下面程序再移植时,只要将数据类型变化,可以应用到任何处理器 AT24c02.h

#ifndef __24CXX_H #define __24CXX_H #include \

/*************************************************************** - 说明:以下参数是AT24Cxx的寻址空间,C0x ,X 表示XK 如C01表示1K - 127表示2^7 1Kbit/8=128Byte 128字节 - 255表示2^8 2Kbit/8=256Byte 256字节 - 512表示2^9 4Kbit/8=512Byte 512字节 -

***************************************************************/ #define AT24C01 127 #define AT24C02 255 #define AT24C04 511 #define AT24C08 1023 #define AT24C16 2047 #define AT24C32 4095 #define AT24C64 8191 #define AT24C128 16383 #define AT24C256 32767

/************************************************************** --板子使用的是24c02,所以定义EE_TYPE为AT24C02

**************************************************************/ #define EE_TYPE AT24C02

/************************************************************** --EEPROM的操作函数 --24CXX驱动函数

**************************************************************/

u8 AT24CXX_ReadOneByte(u16 ReadAddr); //指定地址读取一个字节

void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite); //指定地址写入一个字节

void AT24CXX_WriteLenByte(u16 WriteAddr,u32 DataToWrite,u8 Len);//指定地址开始写入指定长度的数据

u32 AT24CXX_ReadLenByte(u16 ReadAddr,u8 Len); //指定地址开始读取指定长度数据

void AT24CXX_Write(u16 WriteAddr,u8 *pBuffer,u16 NumToWrite); //从指定地址开始写入指定长度的数据

void AT24CXX_Read(u16 ReadAddr,u8 *pBuffer,u16 NumToRead); //从指定地址开始读出指定长度的数据

u8 AT24CXX_Check(void); //检查器件 void AT24CXX_Init(void); //初始化IIC #endif

----------------------------------------------------------------------------------------------------------------------------------------- AT24c02.c

#include \ #include \

/*************************************************************************** - 功能描述:STM32f103 EEPORM初始化函数 - 隶属模块:STM32 EEPROM操作 - 函数属性:外部,使用户使用 - 参数说明:无 - 返回说明:无

- 函数功能:实现I2C的初始化。

***************************************************************************/ void AT24CXX_Init(void) { IIC_Init(); }

/*************************************************************************** - 功能描述:STM32f103 任意读取EEPORM一个字节的函数 - 隶属模块:STM32 EEPROM操作

- 函数属性:外部,使用户使用

- 参数说明:ReadAddr为所读取EEPROM字节的地址 - 返回说明:无

- 函数功能:返回所要读取的地址的数据

- 函数说明:要任意读取EEPROM地址中的一个字节的步骤为: (1)发送开始START信号

(2)发送器件器件地址,最后一位为0

(3)从机检测到主机发送的地址与自己的地址相同时发送一个应答信号ACK,而主机等待ACK (4)发送待操作的字节地址 (5)等待一个ACK

(6)重新发送START起始信号

(7)发送7位器件地址,最后一位为1,表示读EEPROM。 (8)等待ACK,读取一个字节。 (9)I2C停止,返回读取的数据。

这里注意AT24C0x系列的地址有两字节和一字节之分,这里把两种情况都包含了 ***************************************************************************/ u8 AT24CXX_ReadOneByte(u16 ReadAddr) {

u8 temp=0; IIC_Start(); if(EE_TYPE>AT24C16) {

IIC_Send_Byte(0XA0); //发送写命令 IIC_Wait_Ack();

IIC_Send_Byte(ReadAddr>>8);//发送高地址 IIC_Wait_Ack(); } else

IIC_Send_Byte(0XA0+((ReadAddr/256)<<1)); //发送器件地址0XA0,写数据 IIC_Wait_Ack();

IIC_Send_Byte(ReadAddr%6); //发送低地址 IIC_Wait_Ack(); IIC_Start();

IIC_Send_Byte(0XA1); //进入接收模式 IIC_Wait_Ack();

temp=IIC_Read_Byte(0); IIC_Stop();//产生一个停止条件

return temp; }

/*************************************************************************** - 功能描述:STM32f103 任意写EEPORM一个字节的函数 - 隶属模块:STM32 EEPROM操作 - 函数属性:外部,使用户使用

- 参数说明:WriteAddr :写入数据的目的地址 ,DataToWrite:要写入的数据 - 返回说明:无

- 函数功能:返回所要读取的地址的数据

- 函数说明:要任意读取EEPROM地址中的一个字节的步骤为: (1)发送开始START信号

(2)发送器件器件地址,最后一位为0

(3)从机检测到主机发送的地址与自己的地址相同时发送一个应答信号ACK (4)发送待操作的字节地址 (5)等待一个ACK (6)发送字节数据 (7)等待一个ACK

(8)I2C停止,返回读取的数据。

***************************************************************************/ void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite) { IIC_Start(); if(EE_TYPE>AT24C16) {

IIC_Send_Byte(0XA0); //发送写命令 IIC_Wait_Ack();

IIC_Send_Byte(WriteAddr>>8);//发送高地址 IIC_Wait_Ack(); } else {

IIC_Send_Byte(0XA0+((WriteAddr/256)<<1)); //发送器件地址0XA0,写数据 }

IIC_Wait_Ack();

IIC_Send_Byte(WriteAddr%6); //发送低地址 IIC_Wait_Ack();

IIC_Send_Byte(DataToWrite); //发送字节 IIC_Wait_Ack();

IIC_Stop();//产生一个停止条件 delay_ms(10); }

/*************************************************************************** - 功能描述:STM32f103 任意写EEPORM指定地址开始写入长度为Len的数据 - 隶属模块:STM32 EEPROM操作 - 函数属性:外部,使用户使用

- 参数说明:WriteAddr …… 此处隐藏:3067字,全部文档内容请下载后查看。喜欢就下载吧 ……

STM32 - -6 - -I2C读写AT24C02.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/436006.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)