如何通过MAX2990 I2C接口向标准EEPROM (24C04)连接

引言

本文介绍了如何通过MAX2990电力线通信调制解调器的I2C接口与外部EEPROM 24C04连接,并给出了相应的固件例程。I²C总线受控于MAX2990 (主机),24C04 EEPROM为从机器件。以下框图给出了本文示例的硬件配置。

固件说明

I²C接口初始化

一旦使能I²C模块,SCL和SDA必须配置成漏极开路状态,以确保I²C总线通信正常。由于I²C是GPIO端口的一个替代功能,固件必须确保SCL和SDA输入在初始化期间禁止上拉(通过对端口控制器的输出位写零实现)。

示例中,时钟频率为250kHz。首先需要配置MAX2990的I²C接口:

PO1_bit.Bit2 = 0;   // Disables the GPIO function of the
PO1_bit.Bit3 = 0;   // I2C pins

I2CCN_bit.I2CEN = 0;  // Makes sure that I2C is disabled
   // to allow the changing of the I2C settings

I2CCN_bit.I2CMST = 1;   // Sets the I2C engine to master mode
I2CCN_bit.I2CEA = 0;   // 7-bit address mode
I2CCK_bit.I2CCKL = 0x40;  // 2µs CLK-low, to define I2C frequency
I2CCK_bit.I2CCKH = 0x40;  // 2µs CLK-high, to define I2C frequency

I2CTO = 200;   // I2C_TIMEOUT
I2CST = 0x400;   // Resets I2C status register

I2CCN_bit.I2CEN = 1;   // Enables the I2C engine
写模式
写入24C04 EEPROM时,必须通过I²C接口写入以下字节:

EEPROM的I²C总线地址(这里为0xA0)
EEPROM存储器的地址
数据字节(地址将自动递增)
示例中试图写入以下字节,从0x00地址开始,向EEPROM写入:0x12、0x34、0x56、0x78和0x90。

i2c_init_write();  // Sets the MAX2990 I2C Engine into write mode
i2c_write(0x50);  // 24C04 write (adr = 0b1010 000 0) = 0xA0
  // The MAX2990 I2C engine shifts the I2C address by
   // 1 bit, because it will generate the R/W bit
   // automatically

i2c_write(0x00);  // word address location
i2c_write(0x12);  // data1
i2c_write(0x34);  // data2
i2c_write(0x56);  // data3
i2c_write(0x78);  // data4
i2c_write(0x90);  // data5
I2C_STOP;   // Sends I2C stop-condition

 

   来源:电子发烧友
微信扫描分享本文到朋友圈
扫码关注5G通信官方公众号,免费领取以下5G精品资料
  • 1、回复“LTBPS”免费领取《《中国联通5G终端白皮书》
  • 2、回复“ZGDX”免费领取《中国电信5GNTN技术白皮书
  • 3、回复“TXSB”免费领取《通信设备安装工程施工工艺图解
  • 4、回复“YDSL”免费领取《中国移动算力并网白皮书
  • 5、回复“5GX3”免费领取《R1623501-g605G的系统架构1
  • 7、回复“6G31”免费领取《基于云网融合的6G关键技术白皮书
  • 8、回复“IM6G”免费领取《6G典型场景和关键能力白皮书
  • 本周热点本月热点

     

      最热通信招聘

      最新招聘信息

    最新技术文章

    最新论坛贴子