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.

BQ79600EVM: TMS570LS1224(MCU)

Part Number: BQ79600EVM
Other Parts Discussed in Thread: TMS570LS1224, BQ79616, USB2ANY

Tool/software:

The architecture is based on the TMS570LS1224 as the MCU, communicating with the BQ79600. I used the SPI sample code provided officially for testing but found that I couldn’t successfully wake up the BQ79600.

  • J10: 1-2
  • J11: 1-2
  • J12: 2-3
  • J6: 1-2
  • J1: 2-3
  • J3: 2-3

The power supply is 5V, and the input is p Post ulled from the MCU side.

  • i can wake up the BQ79600 but i can wakeup the BQ79616 through SPI comm

  • Hi,

    I apologize for the delayed response due to holiday. I'll get back to your question next week.

    Best,

    Zachary

  • Currently, I am able to wake up the BQ79600 and BQ79616 and perform the auto-addressing process. However, during the subsequent address confirmation step, I find that the BQ79616 is unable to return data. As a result, the BQ79600 keeps waiting for a response from the BQ79616, causing the communication to fail. Additionally, I tested the USB2ANY solution, and the results were the same as when communicating with the MCU.

  • Hello,

    With the USB2ANY, you see that you can successfully wakeup the devices and then auto address. However, once you start polling, no communication is occurring?

    These are the steps for auto addressing, ensure they are being followed correctly:

    61X Devices

    Dummy write 0x00 from 0x343 to 0x34A

    Broadcast write 0x01 to 0x309 to enable AA sequence

    Broadcast write 0x00, 0x01, 0x02, 0x03 etc. until all devices (base included) have ID (North direction)

    Broadcast write 0x02 to 0x308 to set devices as stack (base will ignore).

    Single device write the last device: 0x03 to 0x308, to set as top of stack

    Validate, stack read 0x343 to 0x34A

    Validate, stack read 0x306

    Validate, single dev read 600 (base) 0x2001 to verify 0x14

    Best,

    Zachary

  • I can only implement the following lines of code:

    1. Dummy write 0x00 from address 0x343 to 0x34A.
    2. Broadcast write 0x01 to 0x309 to enable the AA sequence.
    3. Broadcast write 0x00, 0x01, 0x02, 0x03, etc., until all devices (including the base) have IDs (in the North direction).
    4. Broadcast write 0x02 to 0x308 to set devices as a stack (the base will ignore this).
    5. Write to a single device (the last device) with 0x03 to 0x308 to set it as the top of the stack.

    However, when I execute a READ operation, the program gets stuck in the following loop:

    void delayus(uint16 us) {
    if (us == 0)
    return;
    else {
    // CHANGE THE INTERRUPT COMPARE VALUES (PERIOD OF INTERRUPT)
    // Setup compare 0 value.
    rtiREG1->CMP[0U].COMPx = 10 * us; // 10 ticks of clock per microsecond, so multiply by 10
    // Setup update compare 0 value.
    rtiREG1->CMP[0U].UDCPx = 10 * us;

    // ENABLE THE NOTIFICATION FOR THE PERIOD WE SET
    rtiEnableNotification(rtiNOTIFICATION_COMPARE0);

    // START THE COUNTER
    rtiStartCounter(rtiCOUNTER_BLOCK0);

    // WAIT IN LOOP UNTIL THE INTERRUPT HAPPENS (HAPPENS AFTER THE PERIOD WE SET)
    // WHEN INTERRUPT HAPPENS, RTI_NOTIFICATION GETS SET TO 1 IN THAT INTERRUPT
    // GO TO notification.c -> rtiNotification() to see where RTI_TIMEOUT is set to 1
    while (RTI_TIMEOUT == 0);

    // RESET THE VARIABLE TO 0, FOR THE NEXT TIME WE DO A DELAY
    RTI_TIMEOUT = 0;

    // DISABLE THE INTERRUPT NOTIFICATION
    rtiDisableNotification(rtiNOTIFICATION_COMPARE0);

    // STOP THE COUNTER
    rtiStopCounter(rtiCOUNTER_BLOCK0);

    // RESET COUNTER FOR THE NEXT TIME WE DO A DELAY
    rtiResetCounter(rtiCOUNTER_BLOCK0);
    }
    }



    The program specifically gets stuck in the while (RTI_TIMEOUT == 0); loop.

  • I also noticed that my TMS570LS1224 occasionally gets stuck in the function. It specifically halts in the loop.delayuswhile (RTI_TIMEOUT == 0);

    This issue seems to occur intermittently, and I’m not sure if it’s related to the configuration of the RTI (Real-Time Interrupt) or the way the interrupt notifications are being handled.

    Could this be caused by:

    1. An issue with the interrupt not being triggered properly?
    2. A misconfiguration of the RTI compare or counter settings?
    3. A race condition in the interrupt handling logic?

    Let me know if you have any insights on how to debug or resolve this.

  • If possible, I urgently need on-site support from the local FAE to resolve this issue. We have purchased several development boards, but due to problems with your company's product, SPI communication has not been functioning properly to date.

    Your prompt assistance would be greatly appreciated to help us address this matter as soon as possible.

  •  Additionally, I found that communication issues arise due to the SPI RDY (SPIRDY) being occupied.

  • Hi,

    I understand the urgency, it seems that your procedure for auto addressing is correct. Can you also send me your procedure to wake the devices just to verify. Furthermore, it would be very useful for debugging if you are able to send the log file from your logic analyzer.

    Logic 2 program:

    File --> Save Capture

    If you would like FAE support, please contact your local TI office.

    Best,

    Zachary