Tool/software:
Hello, I would like to ask about how to set up the BQ79654-Q1 chip for UART communication. I'm using just one chip and I don't have a connection through COMHP, COMHN, so I have set this chip as [STACK_DEV] = 1 and [TOP_STACK] = 1 if I understood it correctly. Further, I'm enabling TX responses from the chip. I perform auto-addressing to address 0. After all this, I'm unable to get a response from the chip on the TX pin. I have no problem with waking up the chip. I'm using my own hardware design for the board. I'm using an Arduino Leonardo as the MCU. Where am I making a mistake?
#include <Arduino.h> String data = ""; byte messageCLEAN_REG1[] = { 0xD0, 0x05, 0x10, 0x00, 0x25, 0x25 }; // Clear ECC_DATA register for auto-addressing. byte messageCLEAN_REG2[] = { 0xD0, 0x05, 0x11, 0x00, 0x24, 0xB5 }; byte messageCLEAN_REG3[] = { 0xD0, 0x05, 0x12, 0x00, 0x24, 0x45 }; byte messageCLEAN_REG4[] = { 0xD0, 0x05, 0x13, 0x00, 0x25, 0xD5 }; byte messageCLEAN_REG5[] = { 0xD0, 0x05, 0x14, 0x00, 0x27, 0xE5 }; byte messageCLEAN_REG6[] = { 0xD0, 0x05, 0x15, 0x00, 0x26, 0x75 }; byte messageCLEAN_REG7[] = { 0xD0, 0x05, 0x16, 0x00, 0x26, 0x85 }; byte messageCLEAN_REG8[] = { 0xD0, 0x05, 0x17, 0x00, 0x27, 0x15 }; byte messageCLEAN_REG9[] = { 0xD0, 0x05, 0x18, 0x00, 0x22, 0xE5 }; byte messageCLEAN_REG11[] = { 0xD0, 0x03, 0x43, 0x00, 0xF9, 0xD4 }; byte messageCLEAN_REG12[] = { 0xD0, 0x03, 0x44, 0x00, 0xFB, 0xE4 }; byte messageCLEAN_REG13[] = { 0xD0, 0x03, 0x45, 0x00, 0xFA, 0x74 }; byte messageCLEAN_REG14[] = { 0xD0, 0x03, 0x46, 0x00, 0xFA, 0x84 }; byte messageCLEAN_REG15[] = { 0xD0, 0x03, 0x47, 0x00, 0xFB, 0x14 }; byte messageCLEAN_REG16[] = { 0xD0, 0x03, 0x48, 0x00, 0xFE, 0xE4 }; byte messageCLEAN_REG17[] = { 0xD0, 0x03, 0x49, 0x00, 0xFF, 0x74 }; byte messageCLEAN_REG18[] = { 0xD0, 0x03, 0x4A, 0x00, 0xFF, 0x84 }; byte messageCLEAN_REG19[] = { 0xD0, 0x03, 0x4B, 0x00, 0xFE, 0x14 }; byte messageTX_EN[] = { 0x90,0x00, 0x07, 0x01, 0x04, 0x55, 0x8F }; byte messageAUTOADRES_EN[] = { 0xD0, 0x03, 0x09, 0x01, 0x0F, 0x74 }; // Enable auto-addressing configuration byte messageCONFADR[] = { 0xD0, 0x00, 0x00, 0x00, 0x38, 0xE4 }; // Set address 0 byte message_CONF_KOM[] = { 0xD0, 0x03, 0x08, 0x03, 0x8F, 0x25 }; // Set device as both start and end of chain byte message_ACTIVE_CELL[] = { 0xD0, 0x00, 0x03, 0x08, 0x39, 0xD2 }; // Set active cells byte messageTX_HOLD_OFF[] = { 0xD0, 0x00, 0x1A, 0xAA, 0xB3, 0xFB }; byte messageV14[] = { 0x80, 0x00, 0x05, 0x6C, 0x1F, 0x59, 0x17 }; // Chip address 0 byte messageTSREF_EN[] = { 0x90, 0x00, 0x03, 0x0A, 0x01, 0xD3, 0x7D }; // Activate TSREF for NTC Chip address 0 byte messageDEV_CONF[] = { 0xD0, 0x00, 0x02, 0x74, 0x39, 0xA3 }; void setup() { pinMode(1, OUTPUT); digitalWrite(1, HIGH); delay(60); digitalWrite(1, LOW); delay(2); digitalWrite(1, HIGH); delay(2); Serial.begin(1000000); Serial1.begin(1000000); // Set to specified chip speed Serial.println("Initialization of communication with bq75614-Q1"); delay(1); Serial1.write(messageTX_EN, sizeof(messageTX_EN)); delay(1); Serial1.write(messageCLEAN_REG1, sizeof(messageCLEAN_REG1)); delay(1); Serial1.write(messageCLEAN_REG2, sizeof(messageCLEAN_REG2)); delay(1); Serial1.write(messageCLEAN_REG3, sizeof(messageCLEAN_REG3)); delay(1); Serial1.write(messageCLEAN_REG4, sizeof(messageCLEAN_REG4)); delay(1); Serial1.write(messageCLEAN_REG5, sizeof(messageCLEAN_REG5)); delay(1); Serial1.write(messageCLEAN_REG6, sizeof(messageCLEAN_REG6)); delay(1); Serial1.write(messageCLEAN_REG7, sizeof(messageCLEAN_REG7)); delay(1); Serial1.write(messageCLEAN_REG8, sizeof(messageCLEAN_REG8)); delay(1); Serial1.write(messageCLEAN_REG9, sizeof(messageCLEAN_REG9)); delay(1); Serial1.write(messageCLEAN_REG11, sizeof(messageCLEAN_REG11)); delay(1); Serial1.write(messageCLEAN_REG12, sizeof(messageCLEAN_REG12)); delay(1); Serial1.write(messageCLEAN_REG13, sizeof(messageCLEAN_REG13)); delay(1); Serial1.write(messageCLEAN_REG14, sizeof(messageCLEAN_REG14)); delay(1); Serial1.write(messageCLEAN_REG15, sizeof(messageCLEAN_REG15)); delay(1); Serial1.write(messageCLEAN_REG16, sizeof(messageCLEAN_REG16)); delay(1); Serial1.write(messageCLEAN_REG17, sizeof(messageCLEAN_REG17)); delay(1); Serial1.write(messageCLEAN_REG18, sizeof(messageCLEAN_REG18)); delay(1); Serial1.write(messageCLEAN_REG19, sizeof(messageCLEAN_REG19)); delay(1); Serial1.write(messageAUTOADRES_EN, sizeof(messageAUTOADRES_EN)); delay(10); Serial1.write(messageCONFADR, sizeof(messageCONFADR)); delay(10); Serial1.write(message_CONF_KOM, sizeof(message_CONF_KOM)); delay(10); Serial1.write(messageDEV_CONF, sizeof(messageDEV_CONF)); Serial1.write(messageTX_HOLD_OFF, sizeof(messageTX_HOLD_OFF)); Serial1.write(message_ACTIVE_CELL, sizeof(message_ACTIVE_CELL)); // Initialization of auto-addressing and communication settings //Serial1.write(messageInit, sizeof(messageInit)); delay(10); } void loop() { Serial1.write(messageV14, sizeof(messageV14)); // Reading response from device delay(100); while (Serial1.available()) { data += String(Serial1.read(), HEX); } Serial.println(data); delay(1000); // Repeat every second, adjust as necessary }