CY8CKIT-042,BLE&SPI slave communication,How can i reduce the power consumption?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

In the project,I use BLE Component on CY8C4247LQI-BL483 and the board runs in deepsleep mode that refer to the application note(AN92584 Designing for Low Power and Estimating Battery Life for BLE Applications),when BLE is not advertising ,the current of the board(4247LQI-BL483) is 2uA(enter into deepsleep mode,advertisement interval is configured to 3s).

   

but when added SPI(slave mode) commponent and there is no SPI communication on the bus,the current of the board is increased to 300uA.

   

In the project code :

   

(1) initializatin:call SPIS_Start()

   

(2) before and after calling CySysPmDeepSleep():call function SPIS_Sleep() and SPIS_Wakeup() 

   

so,what do i need to do to reduce the current when run the SPI slave communication?

   

Thanks.

0 Likes
1 Solution
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

I would try the sequence (it's just a try)

   

SPI_Stop(),sleep,set the pins to Pin_DM_DIG_HIZ (not analog), deep sleep

   

and when woken up the reverse direction

   

SPI_Wakeup(), SPI_Init(), SPI_Start. The pins should be set by the Init API-

   

When still not working, I would suggest you to get in contact with Cypress directly: At top of this page select "Design support -> Create a Support Case" and ask your question. You will be helped by a Cypress engineer.

   

 

   

Bob

View solution in original post

0 Likes
3 Replies
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

Welcome in the forum.

   

Try to set the SPIS Tx pin to High-Z before going to sleep.

   

 

   

Bob

0 Likes
Anonymous
Not applicable

Thanks for your reply.
According to your suggestion,i added the related code(as shown below) in my project,but there is just a little change in the current of board(200uA).

   

(1)Is there any error in the code?

   

(2)And after wakeup , what do i need to do to recovery the SPI Slave communication,just to reconfigure the spi interface?
//=================================================//
SPIS_Sleep();//SPIS_Stop();
SPIS_miso_s_SetDriveMode(SPIS_miso_s_DM_ALG_HIZ);
SPIS_mosi_s_SetDriveMode(SPIS_mosi_s_DM_ALG_HIZ);
SPIS_sclk_s_SetDriveMode(SPIS_sclk_s_DM_ALG_HIZ);
CySysPmDeepSleep();
SPIS_Wakeup();//SPIS_Start();

0 Likes
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

I would try the sequence (it's just a try)

   

SPI_Stop(),sleep,set the pins to Pin_DM_DIG_HIZ (not analog), deep sleep

   

and when woken up the reverse direction

   

SPI_Wakeup(), SPI_Init(), SPI_Start. The pins should be set by the Init API-

   

When still not working, I would suggest you to get in contact with Cypress directly: At top of this page select "Design support -> Create a Support Case" and ask your question. You will be helped by a Cypress engineer.

   

 

   

Bob

0 Likes