This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BQ76PL455A: very urgent!about BQ76PL455A

Part Number: BQ76PL455A


Dear friends,

         In my applicatin,there meet  a problem.

        I use one stm32f107 and one bq76pl455a chip. They communicate with uart.

        now in my progrm ,i use a low voltage which last 100us,then give a 3.3v bq76pl455a .

       then i want to know whether the uart communicate is ok by this code :

nRead = ReadReg(0, 10, &wTemp, 1, 0);

but there is no response. I use  oscilloscope ensure that send 81 00 0A 00 2E 9C.

so the uart of stm32f107 send data is ok,but why do bq76pl455a have no response ?

How can i confirm that bq76pl455a is working ok,is there some test frame?

can you help me?

   

  • the uart set is 250k 8-1-n
  • Hi user4240682,

    Thanks for the question. Please help us to rule out that the bq76pl455a is working incorrectly by testing the device with our GUI first to check communication. Then if this is working we can check on the code to make sure it is performing the necessary auto-addressing steps shown in the software reference design guide here: www.ti.com/.../slva617a.pdf and probe the device see wakeup and rx/txlines to see activity. The wakeup pulse should be a 0-1-0 100us pulse as shown in the datasheet and you should measure VP/VDIG rise after that. Are you basing your code off of our example code?

    Best Regards,

    Taylor
  • Dear Taylor,
    I use stm32f103 as cpu.i use the example code of TI,but do some revise, i only use pl44.c,revise the uart send/receive function.
    I only use one BQ76PL455A chip ,so the address is 0 default.
    in the main function ,i use WakePL455() and nRead = ReadReg(0, 13, &wTemp, 1, 0);
    i test the voltage of vp/vdig ,they are 5.3v,the vio is 3.3v.
  • Hi,Taylor,
    I used BQ76PL455A-Q1-GUI,that open uart,and show a window with this infomation:
    Auto addressing finished successfully。
    Total Board(s)innetwork=1
    Top of Stack address =0.
    But when i use oter uart debug software which only send this infomation:81 00 0A 00 2E 9C,there is no response。
    Why?If there only BQ76PL455A chip ,what steps do i must deploy or configure?
    I use baudrate 250k,8 data bit ,1 stop bit ,no check bit。
    if I only two sentence in program:
    WakePL455();
    nRead = ReadReg(0, 10, &wTemp, 1, 0);
    nSent = WriteReg(0, 13, 10, 1, FRMWRT_SGL_R); // set number of cells to 16
    nRead = ReadReg(0, 13, &wTemp, 1, 0);
    then can reply wTemp =10?????????
    I am very anxious,can you quick reply me?
  • Hi user4240682,

    If the GUI is successfully auto-addressing the device, then this issue is likely related to the code changes you have implemented. Please make sure that you are changing the TOTALBOARDS variable in the pl455.c file to the correct value and have included the exact autoaddressing scheme in the sysmain.c file that is in the example code. This will be difficult to help debug from our side since we are familiar with the TMS570 mcu. So you will have to double check all of your hardware connections and porting of the code to the stm interface is working properly.

    Best Regards,

    Taylor
  • dear Taylor,
    I 'm awake for this problem in the midnigth, and espercially wake up for your email.
    There is only one stm32f103 and one BQ76PL455A chip communicate with uart in the board.
    I simply the main function ,I only use three sentence:
    WakePL455();
    nRead = ReadReg(0, 10, &wTemp, 1, 0);
    nSent = WriteReg(0, 13, 10, 1, FRMWRT_SGL_R); // set number of cells to 16
    nRead = ReadReg(0, 13, &wTemp, 1, 0);
    but i find that wTemp =0,not 10,that means there is no reply response.why?because there is only one board and one BQ76PL455A.So I
    did not use anto addressing.
    then I cut the uart between stm32f103 and one BQ76PL455A. I connect the uart of BQ76PL455A and PC with TTL-UART cable.
    then i open BQ76PL455A-Q1-GUI,that show com open success,and show
    Auto addressing finished successfully。
    Total Board(s)innetwork=1
    Top of Stack address =0.
    then i close BQ76PL455A-Q1-GUI, i use another uart debug software ,i send frame like this 81 00 0A 00 2E 9C.
    but there is no response frame .why ?Is this correct?I am very anxious for this problem.
    I am waiting for your answer online,can you give me help quickly?
  • Hi user4240682,

    This is likely because you are not addressing the device so it doesn't know to respond as device 0, all you are doing is waking the part up. Please follow all of the example code and the auto addressing steps in the software reference guide here: www.ti.com/.../slva617a.pdf

    Regards,

    Taylor
  • i revise my program:

    WakePL455();
    // Auto-address all boards (section 1.2.2)
    nSent = WriteReg(0, 14, 0x19, 1, FRMWRT_ALL_NR); // set auto-address mode on all boards
    nSent = WriteReg(0, 12, 0x08, 1, FRMWRT_ALL_NR); // enter auto address mode on all boards, the next write to this ID will be its address

    // 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, 10, nDev_ID, 1, FRMWRT_ALL_NR); // send address to each board
    }

    nSent = WriteReg(0, 13, 10, 1, FRMWRT_SGL_R); // set number of cells to 16
    nRead = ReadReg(0, 13, &wTemp, 1, 0);

    but wTemp is still 0,not 10, why?
  • because i first open BQ76PL455A-Q1-GUI,and this may auto addressing,then i close BQ76PL455A-Q1-GUI,
    use another uart debug software ,i send frame like this 81 00 0A 00 2E 9C.but no response frame.
  • Can you please check this with the entire initialization portion of the example code and then start removing what you don't need after it is working? This includes some commclear/resets, setting baud rate and clearing other flags/faults. Also if you have a logic analyzer please probe the TX/RX lines so we can see what is actually being transmitted.

    Thanks,

    Taylor
  • dear Taylor:
    I want to get 16 cell voltage and two temperature. I configure in the follow sentence:
    nSent = WriteReg(nDev_ID, 13, 0x10, 1, FRMWRT_SGL_NR); // set number of cells to 16
    nSent = WriteReg(nDev_ID, 3, 0xFFFF0300, 4, FRMWRT_SGL_NR); // select all cell, AUX channels 0 and 1
    nSent = WriteReg(nDev_ID, 2, 0x01, 1, FRMWRT_SGL_NR); // send sync sample command
    nSent = WaitRespFrame(bFrame, 39, 0); // 36 bytes data + packet header + CRC, 0ms timeout

    in the reponse message bFrame,i find that the 16 cell voltage data is right,but the aux 0 is not right.
    why does this happen?can you tell me the reason? I test the voltage of aux0 is 3.5v. aux 1 is disconnect.
  • Hi user,

    I am closing this thread as it seems you were able to get a response from the pl455a and now have a different issue with recieving AUX data that you have created a new thread for. Please refer to your newly created thread for advice on this as we have responded to you over there.

    Best Regards,

    Taylor