Enable SRAM parity check
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2018-08-14 8:02 AM
How can I enable the parity check in the SRAM 2 of the STM32L4?
Is there a HAL function?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2018-08-14 8:32 AM
You have to configure a bit in the Options Bytes, try looking at related examples for reading/writing those and extend to your requirements
STM32Cube_FW_L4_V1.12.0\Projects\STM32L476G-EVAL\Applications\IAP\IAP_Main\Src\flash_if.c
STM32Cube_FW_L4_V1.12.0\Projects\32L476GDISCOVERY\Examples\FLASH\FLASH_DualBoot\Src
STM32Cube_FW_L4_V1.12.0\Projects\32L476GDISCOVERY\Examples\FLASH\FLASH_WriteProtection\Src
STM32Cube_FW_L4_V1.12.0\Drivers\STM32L4xx_HAL_Driver\Src\stm32l4xx_hal_flash_ex.c
/**
* @brief Program the FLASH User Option Byte.
*
* @note To configure the user option bytes, the option lock bit OPTLOCK must
* be cleared with the call of the HAL_FLASH_OB_Unlock() function.
* @note To validate the user option bytes, the option bytes must be reloaded
* through the call of the HAL_FLASH_OB_Launch() function.
*
* @param UserType: The FLASH User Option Bytes to be modified
* @param UserConfig: The FLASH User Option Bytes values:
* BOR_LEV(Bit8-10), nRST_STOP(Bit12), nRST_STDBY(Bit13), IWDG_SW(Bit16),
* IWDG_STOP(Bit17), IWDG_STDBY(Bit18), WWDG_SW(Bit19), BFB2(Bit20),
* DUALBANK(Bit21), nBOOT1(Bit23), SRAM2_PE(Bit24) and SRAM2_RST(Bit25).
*
* @retval HAL status
*/
static HAL_StatusTypeDef FLASH_OB_UserConfig(uint32_t UserType, uint32_t UserConfig)
{
..
if((UserType & OB_USER_SRAM2_PE) != 0U)
{
/* SRAM2_PE option byte should be modified */
assert_param(IS_OB_USER_SRAM2_PARITY(UserConfig & FLASH_OPTR_SRAM2_PE));
/* Set value and mask for SRAM2_PE option byte */
optr_reg_val |= (UserConfig & FLASH_OPTR_SRAM2_PE);
optr_reg_mask |= FLASH_OPTR_SRAM2_PE;
}
Up vote any posts that you find helpful, it shows what's working..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2018-08-15 11:19 PM
FLASH_OB_UserConfig() is a static function. I use HAL_FLASHEx_OBProgram() which calls FLASH_OB_UserConfig():
HAL_FLASHEx_OBGetConfig(&optionBytesInit);
optionBytesInit.USERType |= OB_USER_SRAM2_PE;
optionBytesInit.USERConfig &= ~FLASH_OPTR_SRAM2_PE_Msk;
HAL_FLASH_OB_Unlock();
HAL_FLASHEx_OBProgram(&optionBytesInit);
HAL_FLASH_OB_Lock();
HAL_FLASH_OB_Launch();
But HAL_FLASH_OB_Unlock() generates a hard fault.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2018-08-16 1:02 AM
Do you have some of the lock or other options set through device programming?
JW
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2018-08-16 5:30 AM
I don't set anything actively during programming, but we use IAR (V8.20) and HAL (V1.8.3).
The value of the option register (FLASH->OPTR) is 0xFFEFF8AA.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2018-11-02 7:38 AM
Do someone from ST could check if the SRAM2 parity enable bit can be reset to 0 (0 = parity check enabled!) in the STM32L4A6ZG?
The code in not working:
FLASH_OBProgramInitTypeDef optionBytesInit = {0U};
HAL_FLASHEx_OBGetConfig(&optionBytesInit);
optionBytesInit.USERType |= OB_USER_SRAM2_PE;
optionBytesInit.USERConfig &= ~FLASH_OPTR_SRAM2_PE;
HAL_FLASH_OB_Unlock();
HAL_FLASH_Unlock();
HAL_FLASHEx_OBProgram(&optionBytesInit);
if (HAL_FLASH_OB_Launch() != HAL_OK)
{
while(1);
}
HAL_FLASH_OB_Lock();
HAL_FLASH_Lock();
The SRAM2_PE is always 1 (instead of 0).
And a bus fault arise afterwards.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2018-11-02 8:09 AM
>>Do someone from ST could check if the SRAM2 parity enable bit...
This is predominantly a user forum, you should work with the ST FAE supporting your account, or those at your distributor. Or file an Online Support request.
Up vote any posts that you find helpful, it shows what's working..
