IIC(I 2 C)串行EEPROM存储器芯片

最常见最常见的IIC种线,正确叫法是I方C总线,有时打名称为方便,直接打成IIC。

IIC总线最有代表的型号不用说就是AT24C02了。

阿昆聊IIC(I 2 C)串行EEPROM存储器芯片

 

IIC总线最早是由飞利浦公司所提出的两线式接口,是应用的非常广的一种EEPROM。IIC总线上不但可以连接多个从属控制器,还可以连接多个主控制器,因而可以在总线上连接多个主机,共享总线。

阿昆聊IIC(I 2 C)串行EEPROM存储器芯片

 

总线的速度由Verision1.0所定义的早期标准模式(时钟为100KHZ),加上快速模式(到400KHZ),提高到1998年上市的Version2.0的3.4Mbps速度.

而我们常用的AT24CXX系列是基于版本Version1.0,因此最高时钟速度达400KHZ。

阿昆聊IIC(I 2 C)串行EEPROM存储器芯片

 

阿昆聊IIC(I 2 C)串行EEPROM存储器芯片

 

从规格书可以看出,工作电压决定了芯片可以工作在的最大频率(有的芯片则是固定)。

IIC总线上的数据传输单位为8位,因为在发送完8位完整数据后,接收方将返回1位的状态值 (也就是应答信号),因此IIC是以共9个时钟周期为一个传输单位。

阿昆聊IIC(I 2 C)串行EEPROM存储器芯片

 

多个存储器与一个主机接线连接应用参考图,根据A0 A1 A2地址组合,可知主机上最多可以连接8个地址,生个地址多为8位(256个字节,2K位)的存储器。

因为可以连接地址为8位(256字节,2K位)的8个器件。因此总线上最大的存储空间为8*2K=16K位。这样的空间不能满足目前需要。为此将地址字段设置为2字节,将IIC总线扩展成最多可连接8个64KB(512K位)的存储器,这样可以应用于超过16K位容量的EEPROM。

阿昆聊IIC(I 2 C)串行EEPROM存储器芯片

 

阿昆聊IIC(I 2 C)串行EEPROM存储器芯片

 

  • VCC和VSS:电源和接地脚。(不同品牌型号的器件,工作电压不同,其最高时钟频率也不一样)
  • SCL :串行时钟时钟输入引脚 。
  • SDA: 串行数据 输入输出脚 传输数据和地址的引脚。
  • A0 A1 A2:器件地址输入通过三个引脚的高低电平组合来决定此器件的有效地址,这样主机才知道是对哪个器件进行操作。IIC总线上的器件将主机送来的器件地址与通过A0 A1 A2引脚所提供的值进行比较,如果一样,说明自己被选中。
  • WP:写保护高电平有效,是否允许对器件进行擦除许可。

 

以上只是对最常规的比较有代表性的IIC器件进行了简单的介绍,不同的器件均会有所差别,大家可以自己研究。

到此EEPROM串行存储器的三种常见总线方式到此简单介绍完了,主要是想让大家对EEPROM的几种总线方式有个大概的认识,还想要深入的了解,可以自行深入学习。

 

原文:https://www.toutiao.com/i6958699625717023262/

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
IIC是一种串行通讯协议,也叫I2C(Inter-Integrated Circuit)。EEPROM是一种可编程的非易失性存储器,它可以被多次擦写,适用于一些需要频繁存储和更新数据的场合。本文将基于GD32F450芯片介绍如何使用IIC读写EEPROM。 1. 硬件连接 首先需要将GD32F450芯片EEPROM进行连接。EEPROM的地址可以通过调整硬件连接或者修改代码实现。下面是一种常见的硬件连接方式: GD32F450芯片 EEPROM SCL(PB10) ------> SCL SDA(PB11) ------> SDA GND ------> GND VCC ------> VCC 2. 初始化IIC 在使用IIC之前,需要进行IIC的初始化,包括设置IIC的时钟和引脚等。下面是初始化IIC的代码: ``` /* IIC GPIO PIN define */ #define IIC_SCL_PIN GPIO_PIN_10 #define IIC_SDA_PIN GPIO_PIN_11 #define IIC_GPIO_PORT GPIOB #define IIC_GPIO_CLK RCU_GPIOB /* IIC driver instance */ i2c_handle_t i2c_handle; /* GPIO function configure */ gpio_init(IIC_GPIO_PORT, GPIO_MODE_AF_OD, GPIO_OSPEED_50MHZ, IIC_SCL_PIN | IIC_SDA_PIN); gpio_af_set(IIC_GPIO_PORT, GPIO_AF_4, IIC_SCL_PIN | IIC_SDA_PIN); /* IIC function configure */ i2c_deinit(I2C0); i2c_clock_config(I2C0, 400000U, I2C_DTCY_2); i2c_mode_addr_config(I2C0, I2C_I2CMODE_ENABLE, EEPROM_ADDR, I2C_ADDFORMAT_7BITS); i2c_enable(I2C0); ``` 3. 读写EEPROM 在初始化IIC之后,就可以进行EEPROM的读写操作了。下面是读取EEPROM中地址为0x00的数据的代码: ``` #define EEPROM_ADDR 0xA0 /* Read data from EEPROM */ uint8_t read_data; i2c_transmit(I2C0, EEPROM_ADDR, 0x00, I2C_SEND_MODE); i2c_receive(I2C0, EEPROM_ADDR, &read_data, 1U, I2C_RECEIVE_MODE); ``` 下面是向EEPROM中地址为0x00写入数据的代码: ``` #define EEPROM_ADDR 0xA0 /* Write data to EEPROM */ uint8_t write_data = 0x12; i2c_transmit(I2C0, EEPROM_ADDR, 0x00, I2C_SEND_MODE); i2c_transmit(I2C0, EEPROM_ADDR, &write_data, 1U, I2C_SEND_MODE); ``` 以上代码中,EEPROM的地址为0xA0,读取数据的地址为0x00,写入数据的地址也为0x00,读取和写入数据的长度都为1字节。 4. 总结 通过以上代码示例,我们可以看到使用GD32F450芯片读写EEPROM的过程。需要注意的是,具体的操作和代码实现可能会因为不同的EEPROM型号而略有不同。同时,使用IIC读写EEPROM的速度较慢,如果需要高速读写数据,可以考虑使用SPI或者其他存储器芯片

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一口Linux

众筹植发

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值