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.
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.
The power supply is 5V, and the input is p Post ulled from the MCU side.
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:
0x00
from address 0x343
to 0x34A
.0x01
to 0x309
to enable the AA sequence.0x00
, 0x01
, 0x02
, 0x03
, etc., until all devices (including the base) have IDs (in the North direction).0x02
to 0x308
to set devices as a stack (the base will ignore this).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.delayus
while (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:
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