ZHCAGA5 August   2026 BQ78702B , BQ78706 , BQ79718B-Q1 , BQ79731-Q1 , BQ79731B-Q1

 

  1.   1
  2.   摘要
  3. 1AFE和BJB的I2C功能介绍
  4. 2AFE和BJB的I2C硬件介绍
  5. 3I2C 通讯指令实操
    1. 3.1 EEPROM写操作
    2. 3.2 EEPROM读操作
      1. 3.2.1 读取任意寄存器地址的一个字节
      2. 3.2.2 连续读取任意地址多个字节
  6. 4总结
  7. 5参考文档

AFE和BJB的I2C功能介绍

图 1-1 是BQ79718手册中I2C应用框图,该架构同样适用于78706以及79731。菊花链里每个AFE可以接多个I2C从节点。

 BQ797xx I2C应用示意图 图 1-1 BQ797xx I2C应用示意图

I2C数据收发主要依赖I2C_CRTL, I2C_WR_DATA, I2C_RD_DATA寄存器,在此之前还需要完成GPIO的功能配置(I2C使能) 。MCU通过菊花链将数据写进AFE的寄存器I2C_WR_DATA里,读回的数据放在I2C_RD_DATA里。I2C_CTRL设置SEND, RECEIVE, START, STOP, NACK以及启动I2C通讯。

 AFE和BJB I2C相关寄存器 图 1-2 AFE和BJB I2C相关寄存器

I2C_WR_DATA: 存放写进EEPROM的数据。

I2C_RD_DATA: 存放从EEPROM读出来的数据。

I2C_CTRL: I2C协议中数据前后的START, NACK, STOP通过这个寄存器设置。同时还定义这次通讯是发送还是接收,以及启动I2C通讯。

 I2C_CTRL寄存器定义  I2C_CTRL寄存器定义 图 1-3 I2C_CTRL寄存器定义

主节点(AFE或BJB)控制START和STOP来告诉EEPROM开始通讯和通讯结束。

从节点(EEPROM)收到8bit数据后拉低SDA 1bit(ACK)告诉Host数据接收完成可以发下一个字节。

 I2C通讯协议与寄存器对应关系 图 1-4 I2C通讯协议与寄存器对应关系

I2C详细通讯协议请看应用手册 Understanding the I2C Bus 。

读EEPROM通讯过程分为以下7个步骤:

  • Step 1: MCU通过菊花链将数据放到AFE的寄存器I2C_WR_DATA中。
  • Step 2: MCU写I2C_CTRL[I2C_GO] =1 让AFE进行I2C通讯。
  • Step 3: AFE 接收到指令后开始和EEPROM进行I2C通讯。
  • Step 4: 发送I2C读指令。
  • Step 5: I2C返回的数据放在I2C_RD_DATA中。
  • Step 6: MCU读出AFE寄存器数据。
  • Step 7: MCU读取AFE的FAULT_SYS寄存器,确认本次通讯没有发生异常。

 I2C 读EEPROM通讯7步流程示意图 图 1-5 I2C 读EEPROM通讯7步流程示意图