上一篇文章是“STM32F10x_模拟I2C读写EEPROM”,讲述使用IO口模拟I2C总线通信,对EEPROM(AT24Xxx)进行读写操作的过程。 上一篇文章主要内容:I2C协议、模拟I2C底层驱动、EEPROM(AT24Xxx)单字节读写操作。 本文主要内容:STM32硬件I2C详细配置、EEPROM(AT24Xxx)多字节读写操作、ST官方I2C存在问题。 实例
接下来,我们深入分析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; 这个参数...
1 *//* USER CODE END I2C1_MspInit 1 */}4.22 向EEPROM写入一个字节的数据uint32_t I2C_EE_...
main.c 硬件结构如下,EEPROM 芯片(AT24C02)的 SCL 及 SDA 引脚连接到了 STM32 的 I2C 引脚中,结合上拉电阻,构成了 I2C 通讯总线,它们通过 I2C 总线交互。 EEPROM 芯片的设备地址:一共有 7 位,其中高 4 位固定为:1010 b,低 3 位则由
I2C_DutyCycle_16_9:16比9占空比 感兴趣的朋友可以把时钟配置高于100KHz(如:400KHz),用示波器测一下SCL引脚,可以看得出来占空比不一样。 3.I2C设备地址:I2C_OwnAddress1 = EEPROM_DEV_ADDR; 这个参数是第一个设备(从机)的地址,EEPROM_DEV_ADDR是我们自己宏定义的设备地址。
我们了解了I2C的操作流程,这一篇,我们就使用I2C,来对EEPROM进行操作吧。 我们做两种选择: 1.时序由IO口模拟高低电平,需要了解协议并按照协议操作相应的IO口。 2.时序由硬件自行产生,不需要人工干预; 由硬件产生的I2C时序,我们借助Stm32Cube配置实现便可,我们这一篇,抛开Stm32Cube,手撕代码,根据I2C的时序,一步步地...
配置硬件I2C 首先查看小熊派开发板的原理图,确定EEPROM接在哪个I2C接口上,如图: 接下来开始配置I2C接口1: 配置时钟树 STM32L4的最高主频到80M,所以配置PLL,最后使HCLK = 80Mhz即可: 生成工程设置 代码生成设置 最后设置生成独立的初始化文件: 生成代码
硬件平台:stm32f10xZET6开发环境:keil MDK uVisionv4.10开发语言:C、ST_lib_3.5固件库EEPROM:电可擦可编程只读存储器。【stm32f10xZET6开发板的I2C外设物理层特点】(1)两条串行总线:一条双向数据线(SDA),一条时
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 ...