cancel
Showing results for 
Search instead for 
Did you mean: 

Package data register on STM32F779

Francois Tremblay
Associate III
Posted on December 14, 2017 at 15:01

I am trying to have device detection code by reading the 'package data' register but I don't get the expected data.

I have a STM32F779I-EVAL board with a STM32F779 mcu. I am reading '0xFFFF' at address 0x1FFF 7BF0. According

to documentation (section 45.3 from RM0410/dm00224583.pdf), it should be a STM32F767/STM32F777 in a QFP208/BGA216

package.

So, there is a mismatch.

For validation purpose, I read the expected data from the 'flash size' register at address 0x1FF0F442.

Is there anybody having tried to read the 'package data' register on one of MCU part of STM32F7xx family?

Thanls

7 REPLIES 7
john doe
Lead
Posted on December 14, 2017 at 18:28

len =

0

;

char

pkgString[

128

] = {

0

};

uint32_t

pkg = *((

uint32_t

*)PACKAGE_BASE) &

0x0700

;

switch

(pkg)

{

case

0x00000100

: len +=

sprintf

(pkgString+len,

'

LQFP100

\r\n

'

);

break

;

case

0x00000200

: len +=

sprintf

(pkgString+len,

'

LQFP144 or WLCSP143

\r\n

'

);

break

;

case

0x00000300

: len +=

sprintf

(pkgString+len,

'

WLCSP180, LQFP176 or UFBGA176

\r\n

'

);

break

;

case

0x00000400

: len +=

sprintf

(pkgString+len,

'

LQFP176, LQFP208 or TFBGA216

\r\n

'

);

break

;

case

0x00000500

: len +=

sprintf

(pkgString+len,

'

LQFP176, LQFP208 or TFBGA216

\r\n

'

);

break

;

case

0x00000600

: len +=

sprintf

(pkgString+len,

'

LQFP176, LQFP208 or TFBGA216

\r\n

'

);

break

;

case

0x00000700

: len +=

sprintf

(pkgString+len,

'

LQFP176, LQFP208 or TFBGA216

\r\n

'

);

break

;

}

printf

(

'

%s

'

, pkgString);

this works on my f769

Posted on December 14, 2017 at 18:55

There is no difference between switch cases 0x0000004, 0x0000005, 0x0000006 and 0x0000007 in your printf string.

Which package are you using?

Posted on December 15, 2017 at 15:26

you're right. got lazy and didnt bother with variants i dont have, sorry.  im using bga216 on stm32f769i discovery. regardless, it reads the register.

see also STM32Cube/Repository/STM32Cube_FW_F7_V1.8.0/Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_ll_utils.h

Florian Fiebig
Associate II
Posted on March 05, 2018 at 14:05

Does it work for you?

I'm trying at STM32F722 and it doesn't. Reading at PACKAGE_BASE ends in a reset.

But if I change 0x1FFF7BF0 to 0x1FF07BF0 it seems to work. I have only one package for testing jet, so it could be coincidence.

Amel NASRI
ST Employee
Posted on March 06, 2018 at 11:12

Hello,

For all STM32F7 products, I confirm that base address for 'Package data register' is

0x1FF

0

7BF0, not

0x1FF

F

7BF0.

This is reported and will be fixed in relevant reference manuals, as well as STM32F7 header files in STM32CubeF7 package.

For example, forSTM32Cube_FW_F7_V1.9.0\Drivers\CMSIS\Device\ST\STM32F7xx\Include\stm32f777xx.h, the line 1495 should be replaced by:

#define PACKAGE_BASE 0x1FF07BF0U�?�?

Sorry for this inconvenienceand thanks for bringingthis error to our attention.

-Amel

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.

Posted on March 06, 2018 at 14:47

 ,

 ,

Can you validate for STM32H7 series?

I am using ,  , ,

♯ define PACKAGE_BASE (0x58000400+0x124)

and the result is not what described for SYSCFG_PKGR of section 12.3.9 from STM32H7 reference manual (en.DM00314099).

Thanks

-François

Amel NASRI
ST Employee
Posted on April 11, 2018 at 14:22

Hello,

After re-check for all STM32F7 products, the base address of the Package data register should be as following:

- STM32F76xx/STM32F77xx devices: 0x1FF0F7E0

- STM32F74xx/STM32F75xx devices: 0x1FF0F7E0

- STM32F72xx/STM32F73xx devices: 0x1FF07BF0

I'll come back later to check the STM32H7 case.

-Amel

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.