cancel
Showing results for 
Search instead for 
Did you mean: 

LPBAM: SRD indicates AHB3/APB3 is still active even after transfer is complete

yfen44
Associate

Hi ST community,

I'm developing an LPBAM use case using the B-U585AI-IOT02A dev board and it will be deployed in an IoT device empowered by an STM32U585 MCU.

My application is:
1. set up LPBAM such that: RTC wakeup will trigger an I2C3 master transmit and receive (to read the ID of an external sensor)
2. enter STOP 2 mode after starting LPBAM
3. wake up MCU by EXIT button and print the sensor ID result

Functional-wise, my application works. However, I found that the MCU current immediately increases to 200 uA after the I2C3 transaction is finished and it stays at 200 uA until the EXIT button is pushed. Whereas my expectation is, that the MCU current rises during the LPBAM I2C transaction and falls back to 4 uA, which is the current before the I2C3 transaction.

Since LPBAM is hard to debug, the only abnormality I can find is that SRDSTOP stays low even after the I2C3 transaction completes.

Your time and advice is much appreciated!

 

The Serial message from the MCU:

System reset cause: EXTERNAL_RESET_PIN_RESET.
Previous Backup SRAM content: 1
Current Backup SRAM content: 0
Entering LPBAM.
2 interrupt is enabled and pending.
Current Backup SRAM content: 1
BME680 sensor ID read: 97
Entering LPBAM.
2 interrupt is enabled and pending.
Current Backup SRAM content: 2
BME680 sensor ID read: 97
Entering LPBAM.

MCU current waveform:

I2C3_SDA.png

I2C3_SDA zoom-in:

SDA.png

SRDSTOP:

SRDSTOP.png

I'm also attaching the complete project files in case anyone wants to reproduce the issue:

https://github.com/yfen444/low_power_demo

The base code is generated from STM32CUbeMX and follows mainly this example:

NUCLEO-U575ZI-Q\Applications\LPBAM\LPBAM_I2C_TransmitReceive

I've also modified the RAM address in xxx_FLASH.ld and xxx_RAM.ld to make sure LPDMA is accessing SRAM4

@Sarra.S I saw you posted an article about LPBAM and think you're an expert in this.

2 REPLIES 2
Sarra.S
ST Employee

Hello @yfen44

Thank you for your detailed explanation and the quality of your post! 

From the I2C3_SDA zoom-in, I would expect to get a STOP at the end of the transmission which is not the case.  

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

Hi @Sarra.S ,

Thank you for the reply. I don't think an I2C STOP bit is missed there. The attached snapshots are the SDA waveform of the same communication using I2C3 with the external sensor under MCU RUN mode and MCU LPBAM mode, and I've sectionized and labelled the waveform. PS: the only difference is that in RUN mode I was using HAL_I2C_Mem_Read and in LPBAM mode I was using Master transmit followed by a Master receive.

I2C3_SDA in RUN mode:

I2C3_SDA_non_LPBAM.png

I2C3_SDA in LPBAM mode:

I2C3_SDA_LPBAM.png