Skip to main content
Francois Tremblay
Associate II
December 14, 2017
Question

Package data register on STM32F779

  • December 14, 2017
  • 7 replies
  • 1756 views
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

    This topic has been closed for replies.

    7 replies

    john doe
    Senior III
    December 14, 2017
    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

    Francois Tremblay
    Associate II
    December 14, 2017
    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?

    john doe
    Senior III
    December 15, 2017
    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
    March 5, 2018
    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 Technical Moderator
    March 6, 2018
    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 "Best Answer" on the reply which solved your issue or answered your question.
    Francois Tremblay
    Associate II
    March 6, 2018
    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 Technical Moderator
    April 11, 2018
    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 "Best Answer" on the reply which solved your issue or answered your question.