2017-11-17 12:17 AM
Hello all,
I want to move our STM32F429 from a BGA169 package to a LQFP100 package. A few pins need to be remapped. so I would like to know the package in run time.
in the STM32F429xx.h there is a definition for a Package size register #define PACKAGE_BASE 0x1FFF7BF0U /*!< Package size register base address */but there is nothing in the Reference manual about this register.Does it exist? or is there a mean to know the package or pins number from software ?Thanks
2017-11-17 01:43 AM
Do you have a 'spare' pin that you could tie differently between the two designs?
I guess there are quite a few pins on the BGA169 that are floating (not wired to anything on the pcb) or tied high or tied low.
If there will still be one (or more) pins you won't be using for anything on the LQFP100, then you could tie it differently and it will simply be a matter of reading the appropriate bit of the appropriate port to tell which package/pcb-revision you have.
Where the pin is currently floating and will be (for example) tied low in the new design, you'll need to read it with pull-up enabled. And a third revision could have the pin tied high, so you need to read it with pull-down as well to distinguish between floating, tied high and tied low.
I think some people have gone a stage further and had a revision-dependent potential-divider on a pin, and use an ADC to read which pcb revision the firmware is running on.
Hope this helps,
Danish
2017-11-17 02:09 AM
Thanks for the suggestion.
We have a board revision coding by pull up/down on some pins.But I would prefer the register if it exists. Thanks2017-11-27 05:25 AM
Hello,
I will use the GPIOF_OSPEEDR register to detect the package size by writing and then reading.
I expect that in the LQFP100 package the GPIOF registers do not exist. Could someone confirm that if the pins do not exist, the associated GPIO registers do not exist also.Thanks and regards
2017-11-27 06:59 AM
Shouldn't that lead to a fault handler then? Reading from non existent pieces of memory.
2017-11-27 09:07 AM
I expect that in the LQFP100 package the GPIOF registers do not exist.
Wrong - it does exist. The die in individual packages are the same. The 0x1FFFxxxx addresses contain a factory-programmed and presumably locked portion of FLASH which contains various info, public and not.
The PACKAGE_BASE address indeed exists at least in 'F4, 'L4 and 'F7 Cubes, although it got there quite recently, maybe a year ago. I'd lóve to hear ST's comment on this.
JW