stm32i2c的例程(STM32F103编程学习I2C通信)
stm32i2c的例程(STM32F103编程学习I2C通信)使用i2c1来连接EEPROM芯片24C02。为了防止意外擦写,特将WP引脚信号引出通过软件来控制,每次在需要写数据到eeprom中去时,需要先将该信号拉低,否则写保护。配置好上述基本设置后,生成工程,添加应用代码即可实现i2c读写操作。硬件连接图利用cube mx软件配置系统时钟,i2c外设等相关配置。时钟配置i2c配置
记录中年男人的编程学习之路
I2C的定义全称Inter IC Bus,即串行总线。该总线是Phlips公司推出的一种串行总线,只有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL。这两条信号线都需要上拉至电源,确保总线空闲时,两者电平都是高电平。
工作原理I2C总线进行数据传输时,SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号,SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。具体时序如下图所示。
I2C通信分主从设备,总线上可以有多个从设备,通信由主设备发起,通过不同地址寻址方式与从设备通信。ST的I2C的地址方式分为7位和10位寻址方式。可根据不同硬件进行软件配置。
工程配置利用cube mx软件配置系统时钟,i2c外设等相关配置。
时钟配置
i2c配置
硬件连接图
使用i2c1来连接EEPROM芯片24C02。为了防止意外擦写,特将WP引脚信号引出通过软件来控制,每次在需要写数据到eeprom中去时,需要先将该信号拉低,否则写保护。配置好上述基本设置后,生成工程,添加应用代码即可实现i2c读写操作。
总结:利用软件生成的代码中需要将i2c的时钟使能放到i2c的IO口初始化之前,否则会导致通信不成功,这可能是ST的一个bug吧。