Post Go back to editing

Simple I2C Transaction on the LTC6811

Hi all,

My team and I are trying to implement I2C communication between the LTC2451 (ADC) and the LTC6811(Stack Monitor). Our test setup includes a Linduino One, DC2259A, and DC1383A-A.

Our first goal in mind is to capture any traces of I2C being written to the 6811. We are using the LTSketchbook libraries and the Arduino IDE to flash our code. So far, our software has been written as:

  • cell_asic initialized to the LTC2451 address(0010100) and we are sending data in D2(1010101)
    • Referenced on page 36 of the LTC6811 datasheet
  • wakeup_sleep() to send WAKEUP signal to 6811 core (possibly redundant)
    • Referenced on page 20 of the LTC6811 datasheet
  • LTC681x_set_cfgr_gpio() to pull the GPIO bits to HIGH, which GPIO4 and GPIO5 act as SDA and SCL
  • Referenced on page 36 of the LTC6811 datasheet
  • LTC6811_wrcfg and LTC6811_wrcomm are used to send our data to the WRCOMM register
  • LTC681x_stcomm to initiate I2C communication to the GPIO ports. 
    • Referenced on page 37 of the LTC6811 datasheet

In response, our COMM register is being cleared to 1's as a result of CSB being pulled high. According to the datasheet, this is a result of a PEC mismatch. There is already a pec15_calc() function that is included in the COMM functions in LTC6811.h, which lead to the conclusion that we do not have to calculate the PEC ourselves. We have also tried to analyze decoded protocols using a Logic Analyzer connected to ports GPIO4 and GPIO5 without success. 

How can we adjust our test configuration to have the PEC match and enable I2C communication? Thanks in advance for any help.