Other Parts Discussed in Thread: BQ76PL455A
Hello All,
I am working on 2 bq76pl455a-q1 stacked configuration. Single IC works perfectly well by reading Voltages, Temperatures, Faults and balancing.
Now I am trying to interface 2 IC on the same PCB board. Both the IC have been waken up with VP,Vio voltages 5.3V with respect to local ground.
When using auto addressing method for addressing the bq76pl455a-q1, base board ID ids written 0 and Top board ID is written 1. While reading back device addresses, both base board and Top board reads 0.
So, i have a doubt in either Firmware code or Hardware design. But hardware design seems to be OK as TOP board gets waken up through Wake up tone on COMM+- lines.
I am attaching my initialization code below. Please let me know if i am missing out something.
nDev_ID = 0; nSent = WriteReg(nDev_ID, COMCONFIG, 0x10E0, 2, FRMWRT_ALL_NR); // set communications baud rate as 250KBaud nSent = WriteReg(nDev_ID, DEVCONFIG, 0x19, 1, FRMWRT_ALL_NR); nSent = WriteReg(nDev_ID, DEV_CTRL, 0x08, 1, FRMWRT_ALL_NR); // Auto Address enable uint8_t wTemp, wTemp1; // Set addresses for all boards in daisy-chain (section 1.2.3) for (nDev_ID = 0; nDev_ID < TOTALBOARDS; nDev_ID++) { nSent = WriteReg(nDev_ID, ADDR, nDev_ID, 1, FRMWRT_ALL_NR); // send address to each board } // read device ID to see if there is a response nDev_ID = 0; nRead = ReadReg(nDev_ID, ADDR, &wTemp, 1, 0); // 0ms timeout printf("Device id 0 : %d\r\n", wTemp); nDev_ID = 1; nRead = ReadReg(nDev_ID, ADDR, &wTemp1, 1, 0); // 0ms timeout printf("Device id 1 : %d\r\n", wTemp1); nDev_ID = 1; nSent = WriteReg(nDev_ID, COMCONFIG, 0x1020, 2, FRMWRT_SGL_NR); // enable only comm-low for the top board nDev_ID = 0; nSent = WriteReg(nDev_ID, COMCONFIG, 0x10C0, 2, FRMWRT_SGL_NR); // enable comm-high, single-end comm port on bottom board
Thanks
Ritul Shah