SPI1 access or send command to flash in application level.

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

cross mob
Anonymous
Not applicable

Hi Broadcom helpers,

We have a BCM20737 connect with a MX25R1035F SPI flash, we have 2 issue now:

1. The power consumption: We found there is still 2 mA current consumption during deep sleep mode, we want to send the SPI command to make SPI flash goes to deep sleep mode too. Since the ROM code got the handle of this interface, how can we do that?

Since the SPI1 has already been init by ROM code, can we just pull down the CS pin, and just call "spiffyd_txData(SPIFFYD_1, 1, 0xB9)" without spiffyd_init(SPIFFTD_1) or some related initialisation?

2. The OTP access:

It seems there is no support for the OTP section of the SPI flash in BCM20737 API(Or there is? please kindly provide related information.) How can we access the the OTP section of the flash in application level?

Thanks.

0 Likes
1 Solution

bleprofile_*NVRAM will return only after the NV access is compete. After boot (which is when the app runs any way), you are free to call these (and spiffy_txData(SPIFFYD_1, 1, 0xAA) ) any time you want because there are only accessed by the application. If you are accessing SF, you do not need to call spiffyd_init() - you may access spiffy_* directly because that is implicitly the SF. If you have other SPI slaves on the same SPI bus and you want to reconfigure the SPI HW block (for a different speed/endianness etc), then you have to use spiffyd_* functions.

View solution in original post

0 Likes
3 Replies
Anonymous
Not applicable

Hello Henry,

Have you looked at this post:

How can I read an Unique ID number using SPIFFY1 ?

Thanks

JT

0 Likes
Anonymous
Not applicable

Hi JT,

Thanks for the information, my question is about the call timing.

Should I call spiffyd_init(SPIFFTD_1) first? I guess the ROM code has already done that since it will access the SPI flash during boot time. So I just call spiffy_txData(SPIFFYD_1, 1, 0xAA), is it safely or it will annoy the ROM code to manage the SPI1 bus?

By what kind of API call will trigger the SPI bus busy? Should I check something before I use spiffy_xxx low level APIs? (For example, after calling bleprofile_WriteNVRAM(), bleprofile_ReadNVRAM(), I should wait for the operation before I want to access the register of main SPI flash, right?)

0 Likes

bleprofile_*NVRAM will return only after the NV access is compete. After boot (which is when the app runs any way), you are free to call these (and spiffy_txData(SPIFFYD_1, 1, 0xAA) ) any time you want because there are only accessed by the application. If you are accessing SF, you do not need to call spiffyd_init() - you may access spiffy_* directly because that is implicitly the SF. If you have other SPI slaves on the same SPI bus and you want to reconfigure the SPI HW block (for a different speed/endianness etc), then you have to use spiffyd_* functions.

0 Likes