Search This Blog

Monday, July 30, 2018

ARM - STM32F030 observations

Projects / Misc ARM Projects  Original post date:02/03/2016

STM32F030 Observations

While I was testing out my STM32F030 in the IoT project, I found something interesting from the ST-Link Util. At the time, I found it odd that the family was identified as 05X. The same device ID and rev also shows up in the STM32F030 user manual.


There used to be a STM32F050 part before they reorganized their portfolio. The STM32F05x line now only consists of the 051 part which is not available in the TSSOP 20 package.

STM32F050 family features
The old STM32F050:

  • there was a 32kB part in the TSSOP20 package (suffix F).
  • The SPI can also works as I2S

The STM32F030 line up shows only SPI.

STM32F030 family features
Looking at the Flash size data register in the debugger, I can see 0x10 = 16 k bytes of FLASH. My guess is that these values are factory programmed into the part likely some OTP FLASH memory.


Keil Memory editor - in Debugger
The FLASH memory space starts from 0x0800 0000


Of the two of the chips that I bought from China back in Nov 2015, they were from Philippines fab on 2015 week 33 rev. A (date code PIL 533A), the debugger shows that there is actually something all the way up to 0x0800 7FFF (32kB). The 0xAA seems to indicate memory space not populated


There are settable I2S registers on my parts. (remember to turn on the clock for I2S in RCC) I haven't got around to play around to see if it does anything.



The LoT board power consumption running the blinky program: 2.67mA (including LDO)

The breakout board under similar condition: 2.59mA (without LDO)

From the STM32F050 datasheet, the current for internal clock with all peripheral off is close to 2.4mA (typ), 2.6mA (max). This is pretty close to the values I measured. (The analog VDD is on a different table, but are included in my measured results)


Now here is the interesting part, the STM32F030 datasheet shows the following:
The last line shows the maximum current consumption with all peripheral on at 85C for the STM32F030Cx device is 5.6mA vs the 4.0mA values for the 050 part. (030 parts uses +40% more current.)


I have bumped up the clock speed by enabling the PLL in the clock tree by adding the following code to SystemInit(). This is a piece of code that runs before main() get called.


What I have seen is that blinky actually ran up to 4MHz * 13 = 52MHz with 0 wait states. With the wait state set to 1, blinky runs at 4MHz * 16 = 64MHz.

There seems to be quite a bit of headroom for these part. I can only speculate that they are using similar design and process as their 72MHz line. Needless to say I haven't have sufficient coverage for memory access nor tests to cover the process corners.

Current consumption: 11.42mA at 48MHz (25C, all peripherals off except for GPIO) which agrees with the 11.7mA value for the F050.

Note: The internal FLASH runs at 0 WS when SYSCLK <= 24MHz and requires 1 WS for higher frequencies.

Conclusion:

The parts I have probably are using the F05x die. ST might (or plan to) have an alternate lower cost fab/process/design used for the F030 part. The F030 could also be binned from their F05x parts (or based on demands).

The power consumption of the small samples I have is consistent with the STM32F050 datasheet values.

The undocumented features on my parts are probably not tested. Since they have been making these for at least 3 years or so, they probably have high enough yields that the extra memory and I2S might work. I might try them out at some point.

Stuff that aren't documented in the datasheet might or might not be in the parts that you have. YMMV.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.