接下来,我们深入分析I2C的初始化代码。首先,打开MDK-RAM文件夹中的工程文件Template.uvprojx,并确保无错误和警告后进行编译。然后,进入i2c.c文件,该文件由CubeMX自动生成,其中包含了I2C接口的初始化程序。函数MX_I2C1_Init()负责I2C1接口的初始化工作,它通过为I2C结构体变量hi2c1的成员变量赋值来完成配置。这...
3.I2C设备地址:I2C_OwnAddress1 = EEPROM_DEV_ADDR; 这个参数是第一个设备(从机)的地址,EEPROM_DEV_ADDR是我们自己宏定义的设备地址。 4.I2C应答:I2C_Ack = I2C_Ack_Enable; 这个参数的含义请结合上一篇文章“I2C协议”来理解。 5.地址位数:I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; 这个参数...
把与EEPROM 通讯使用的 I2C 号 、引脚号都以宏封装起来, 并且定义了自身的 I2C 地址及通讯速率,以便配置模式的时候使用。 #ifndef__I2C_EE_H#define__I2C_EE_H#include"stm32f10x.h"/***I2C参数定义,I2C1或I2C2***/#defineEEPROM_I2CxI2C1#defineEEPROM_I2C_APBxClock_FUNRCC_APB1PeriphClockCmd#define...
3.I2C设备地址:I2C_OwnAddress1 = EEPROM_DEV_ADDR; 这个参数是第一个设备(从机)的地址,EEPROM_DEV_ADDR是我们自己宏定义的设备地址。 4.I2C应答:I2C_Ack = I2C_Ack_Enable; 这个参数的含义请结合上一篇文章“I2C协议”来理解。 5.地址位数:I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; 这个参数...
我们了解了I2C的操作流程,这一篇,我们就使用I2C,来对EEPROM进行操作吧。 我们做两种选择: 1.时序由IO口模拟高低电平,需要了解协议并按照协议操作相应的IO口。 2.时序由硬件自行产生,不需要人工干预; 由硬件产生的I2C时序,我们借助Stm32Cube配置实现便可,我们这一篇,抛开Stm32Cube,手撕代码,根据I2C的时序,一步步地...
2.1 I2C接口的初始化 2.2 阻塞方式数据传输 2.3 中断方式数据传输 2.4 DMA方式数据传输 三、EEPROM芯片 24C02 3.1 接口和通信协议 3.1.1 写操作 3.1.2 读操作 3.2 写一个字节数据 3.3 连续写多字节数据 3.4 读1字节数据 3.5 连续读多字节数据 四、示例:通过I2C通信 读写24C02 ...
中断读取EEPROM M24C64,读取过程为 Start-器件地址(写0x50)-储存器地址高字节-储存器地址低字节-Start-器件地址(读0x51)-读取-读取….-STOP. 现在发现读取到的第一个字节,恰为储存器地址低字节,即读取前留在DR寄存器中的数据.波形上表现位少读取1次,因为第一次读取的并非EEPROM. 以读取3字节为例,器件地址0x...
硬件平台:stm32f10xZET6开发环境:keil MDK uVisionv4.10开发语言:C、ST_lib_3.5固件库EEPROM:电可擦可编程只读存储器。【stm32f10xZET6开发板的I2C外设物理层特点】(1)两条串行总线:一条双向数据线(SDA),一条时
关于EEPROM存储器,请参考“常用存储器介绍”章节,实验中的EEPROM,请参考其规格书《AT24C02》来了解。24.1. I2C协议简介 I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的...
总结 通过以上步骤,你可以在STM32上实现通过I2C接口读写EEPROM的功能。初始化I2C接口、配置EEPROM地址和读写参数、编写读写函数,并进行功能测试,确保读写操作正常。