STM32L4xx_HAL_Driver  1.14.0
NOR SRAM Initialization/de-initialization functions

Functions

HAL_StatusTypeDef FMC_NORSRAM_Init (FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_InitTypeDef *Init)
 Initialize the FMC_NORSRAM device according to the specified control parameters in the FMC_NORSRAM_InitTypeDef. More...
 
HAL_StatusTypeDef FMC_NORSRAM_Timing_Init (FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank)
 Initialize the FMC_NORSRAM Timing according to the specified parameters in the FMC_NORSRAM_TimingTypeDef. More...
 
HAL_StatusTypeDef FMC_NORSRAM_Extended_Timing_Init (FMC_NORSRAM_EXTENDED_TypeDef *Device, FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank, uint32_t ExtendedMode)
 Initialize the FMC_NORSRAM Extended mode Timing according to the specified parameters in the FMC_NORSRAM_TimingTypeDef. More...
 
HAL_StatusTypeDef FMC_NORSRAM_DeInit (FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_EXTENDED_TypeDef *ExDevice, uint32_t Bank)
 DeInitialize the FMC_NORSRAM peripheral. More...
 

Detailed Description

Function Documentation

◆ FMC_NORSRAM_DeInit()

HAL_StatusTypeDef FMC_NORSRAM_DeInit ( FMC_NORSRAM_TypeDef *  Device,
FMC_NORSRAM_EXTENDED_TypeDef *  ExDevice,
uint32_t  Bank 
)

DeInitialize the FMC_NORSRAM peripheral.

Parameters
DevicePointer to NORSRAM device instance
ExDevicePointer to NORSRAM extended mode device instance
BankNORSRAM bank number
Return values
HALstatus

Definition at line 320 of file stm32l4xx_ll_fmc.c.

321 {
322  /* Check the parameters */
323  assert_param(IS_FMC_NORSRAM_DEVICE(Device));
324  assert_param(IS_FMC_NORSRAM_EXTENDED_DEVICE(ExDevice));
325  assert_param(IS_FMC_NORSRAM_BANK(Bank));
326 
327  /* Disable the FMC_NORSRAM device */
328  __FMC_NORSRAM_DISABLE(Device, Bank);
329 
330  /* De-initialize the FMC_NORSRAM device */
331  /* FMC_NORSRAM_BANK1 */
332  if (Bank == FMC_NORSRAM_BANK1)
333  {
334  Device->BTCR[Bank] = 0x000030DBU;
335  }
336  /* FMC_NORSRAM_BANK2, FMC_NORSRAM_BANK3 or FMC_NORSRAM_BANK4 */
337  else
338  {
339  Device->BTCR[Bank] = 0x000030D2U;
340  }
341 
342  Device->BTCR[Bank + 1] = 0x0FFFFFFFU;
343  ExDevice->BWTR[Bank] = 0x0FFFFFFFU;
344 
345  return HAL_OK;
346 }
return HAL_OK
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ FMC_NORSRAM_Extended_Timing_Init()

HAL_StatusTypeDef FMC_NORSRAM_Extended_Timing_Init ( FMC_NORSRAM_EXTENDED_TypeDef *  Device,
FMC_NORSRAM_TimingTypeDef Timing,
uint32_t  Bank,
uint32_t  ExtendedMode 
)

Initialize the FMC_NORSRAM Extended mode Timing according to the specified parameters in the FMC_NORSRAM_TimingTypeDef.

Parameters
DevicePointer to NORSRAM device instance
TimingPointer to NORSRAM Timing structure
BankNORSRAM bank number
ExtendedModeFMC Extended Mode This parameter can be one of the following values:
  • FMC_EXTENDED_MODE_DISABLE
  • FMC_EXTENDED_MODE_ENABLE
Return values
HALstatus

Definition at line 410 of file stm32l4xx_ll_fmc.c.

411 {
412  /* Check the parameters */
413  assert_param(IS_FMC_EXTENDED_MODE(ExtendedMode));
414 
415  /* Set NORSRAM device timing register for write configuration, if extended mode is used */
416  if (ExtendedMode == FMC_EXTENDED_MODE_ENABLE)
417  {
418  /* Check the parameters */
419  assert_param(IS_FMC_NORSRAM_EXTENDED_DEVICE(Device));
420  assert_param(IS_FMC_ADDRESS_SETUP_TIME(Timing->AddressSetupTime));
421  assert_param(IS_FMC_ADDRESS_HOLD_TIME(Timing->AddressHoldTime));
422  assert_param(IS_FMC_DATASETUP_TIME(Timing->DataSetupTime));
423 #if defined(FMC_BTRx_DATAHLD)
424  assert_param(IS_FMC_DATAHOLD_DURATION(Timing->DataHoldTime));
425 #endif /* FMC_BTRx_DATAHLD */
426  assert_param(IS_FMC_TURNAROUND_TIME(Timing->BusTurnAroundDuration));
427  assert_param(IS_FMC_ACCESS_MODE(Timing->AccessMode));
428  assert_param(IS_FMC_NORSRAM_BANK(Bank));
429 
430  /* Set NORSRAM device timing register for write configuration, if extended mode is used */
431  MODIFY_REG(Device->BWTR[Bank], BWTR_CLEAR_MASK, (Timing->AddressSetupTime |
432  ((Timing->AddressHoldTime) << FMC_BWTRx_ADDHLD_Pos) |
433  ((Timing->DataSetupTime) << FMC_BWTRx_DATAST_Pos) |
434 #if defined(FMC_BTRx_DATAHLD)
435  ((Timing->DataHoldTime) << FMC_BWTRx_DATAHLD_Pos) |
436 #endif /* FMC_BTRx_DATAHLD */
437  Timing->AccessMode |
438  ((Timing->BusTurnAroundDuration) << FMC_BWTRx_BUSTURN_Pos)));
439  }
440  else
441  {
442  Device->BWTR[Bank] = 0x0FFFFFFFU;
443  }
444 
445  return HAL_OK;
446 }
return HAL_OK
ADC handle Structure definition.
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ FMC_NORSRAM_Init()

HAL_StatusTypeDef FMC_NORSRAM_Init ( FMC_NORSRAM_TypeDef *  Device,
FMC_NORSRAM_InitTypeDef Init 
)

Initialize the FMC_NORSRAM device according to the specified control parameters in the FMC_NORSRAM_InitTypeDef.

Parameters
DevicePointer to NORSRAM device instance
InitPointer to NORSRAM Initialization structure
Return values
HALstatus

Definition at line 234 of file stm32l4xx_ll_fmc.c.

235 {
236  uint32_t flashaccess;
237 
238  /* Check the parameters */
239  assert_param(IS_FMC_NORSRAM_DEVICE(Device));
240  assert_param(IS_FMC_NORSRAM_BANK(Init->NSBank));
241  assert_param(IS_FMC_MUX(Init->DataAddressMux));
242  assert_param(IS_FMC_MEMORY(Init->MemoryType));
243  assert_param(IS_FMC_NORSRAM_MEMORY_WIDTH(Init->MemoryDataWidth));
244  assert_param(IS_FMC_BURSTMODE(Init->BurstAccessMode));
245  assert_param(IS_FMC_WAIT_POLARITY(Init->WaitSignalPolarity));
246  assert_param(IS_FMC_WAIT_SIGNAL_ACTIVE(Init->WaitSignalActive));
247  assert_param(IS_FMC_WRITE_OPERATION(Init->WriteOperation));
248  assert_param(IS_FMC_WAITE_SIGNAL(Init->WaitSignal));
249  assert_param(IS_FMC_EXTENDED_MODE(Init->ExtendedMode));
250  assert_param(IS_FMC_ASYNWAIT(Init->AsynchronousWait));
251  assert_param(IS_FMC_WRITE_BURST(Init->WriteBurst));
252  assert_param(IS_FMC_CONTINOUS_CLOCK(Init->ContinuousClock));
253 #if defined(FMC_BCR1_WFDIS)
254  assert_param(IS_FMC_WRITE_FIFO(Init->WriteFifo));
255 #endif /* FMC_BCR1_WFDIS */
256  assert_param(IS_FMC_PAGESIZE(Init->PageSize));
257 #if defined(FMC_BCRx_NBLSET)
258  assert_param(IS_FMC_NBL_SETUPTIME(Init->NBLSetupTime));
259 #endif /* FMC_BCRx_NBLSET */
260 
261  /* Disable NORSRAM Device */
262  __FMC_NORSRAM_DISABLE(Device, Init->NSBank);
263 
264  /* Set NORSRAM device control parameters */
265  if (Init->MemoryType == FMC_MEMORY_TYPE_NOR)
266  {
267  flashaccess = FMC_NORSRAM_FLASH_ACCESS_ENABLE;
268  }
269  else
270  {
271  flashaccess = FMC_NORSRAM_FLASH_ACCESS_DISABLE;
272  }
273 
274  MODIFY_REG(Device->BTCR[Init->NSBank], BCR_CLEAR_MASK, (flashaccess |
275  Init->DataAddressMux |
276  Init->MemoryType |
277  Init->MemoryDataWidth |
278  Init->BurstAccessMode |
279  Init->WaitSignalPolarity |
280  Init->WaitSignalActive |
281  Init->WriteOperation |
282  Init->WaitSignal |
283  Init->ExtendedMode |
284  Init->AsynchronousWait |
285  Init->WriteBurst |
286  Init->ContinuousClock |
287 #if defined(FMC_BCR1_WFDIS)
288  Init->WriteFifo |
289 #endif /* FMC_BCR1_WFDIS */
290 #if defined(FMC_BCRx_NBLSET)
291  Init->NBLSetupTime |
292 #endif /* FMC_BCRx_NBLSET */
293  Init->PageSize));
294 
295  /* Configure synchronous mode when Continuous clock is enabled for bank2..4 */
296  if ((Init->ContinuousClock == FMC_CONTINUOUS_CLOCK_SYNC_ASYNC) && (Init->NSBank != FMC_NORSRAM_BANK1))
297  {
298  MODIFY_REG(Device->BTCR[FMC_NORSRAM_BANK1], FMC_BCR1_CCLKEN, Init->ContinuousClock);
299  }
300 
301 #if defined(FMC_BCR1_WFDIS)
302  if (Init->NSBank != FMC_NORSRAM_BANK1)
303  {
304  /* Configure Write FIFO mode when Write Fifo is enabled for bank2..4 */
305  SET_BIT(Device->BTCR[FMC_NORSRAM_BANK1], (uint32_t)(Init->WriteFifo));
306  }
307 #endif /* FMC_BCR1_WFDIS */
308 
309  return HAL_OK;
310 }
return HAL_OK
ADC handle Structure definition.
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ FMC_NORSRAM_Timing_Init()

HAL_StatusTypeDef FMC_NORSRAM_Timing_Init ( FMC_NORSRAM_TypeDef *  Device,
FMC_NORSRAM_TimingTypeDef Timing,
uint32_t  Bank 
)

Initialize the FMC_NORSRAM Timing according to the specified parameters in the FMC_NORSRAM_TimingTypeDef.

Parameters
DevicePointer to NORSRAM device instance
TimingPointer to NORSRAM Timing structure
BankNORSRAM bank number
Return values
HALstatus

Definition at line 357 of file stm32l4xx_ll_fmc.c.

358 {
359  uint32_t tmpr = 0;
360 
361  /* Check the parameters */
362  assert_param(IS_FMC_NORSRAM_DEVICE(Device));
363  assert_param(IS_FMC_ADDRESS_SETUP_TIME(Timing->AddressSetupTime));
364  assert_param(IS_FMC_ADDRESS_HOLD_TIME(Timing->AddressHoldTime));
365 #if defined(FMC_BTRx_DATAHLD)
366  assert_param(IS_FMC_DATAHOLD_DURATION(Timing->DataHoldTime));
367 #endif /* FMC_BTRx_DATAHLD */
368  assert_param(IS_FMC_DATASETUP_TIME(Timing->DataSetupTime));
369  assert_param(IS_FMC_TURNAROUND_TIME(Timing->BusTurnAroundDuration));
370  assert_param(IS_FMC_CLK_DIV(Timing->CLKDivision));
371  assert_param(IS_FMC_DATA_LATENCY(Timing->DataLatency));
372  assert_param(IS_FMC_ACCESS_MODE(Timing->AccessMode));
373  assert_param(IS_FMC_NORSRAM_BANK(Bank));
374 
375  /* Set FMC_NORSRAM device timing parameters */
376  MODIFY_REG(Device->BTCR[Bank + 1], BTR_CLEAR_MASK, (Timing->AddressSetupTime |
377  ((Timing->AddressHoldTime) << FMC_BTRx_ADDHLD_Pos) |
378  ((Timing->DataSetupTime) << FMC_BTRx_DATAST_Pos) |
379 #if defined(FMC_BTRx_DATAHLD)
380  ((Timing->DataHoldTime) << FMC_BTRx_DATAHLD_Pos) |
381 #endif /* FMC_BTRx_DATAHLD */
382  ((Timing->BusTurnAroundDuration) << FMC_BTRx_BUSTURN_Pos) |
383  (((Timing->CLKDivision) - 1) << FMC_BTRx_CLKDIV_Pos) |
384  (((Timing->DataLatency) - 2) << FMC_BTRx_DATLAT_Pos) |
385  (Timing->AccessMode)));
386 
387  /* Configure Clock division value (in NORSRAM bank 1) when continuous clock is enabled */
388  if (HAL_IS_BIT_SET(Device->BTCR[FMC_NORSRAM_BANK1], FMC_BCR1_CCLKEN))
389  {
390  tmpr = (uint32_t)(Device->BTCR[FMC_NORSRAM_BANK1 + 1] & ~(((uint32_t)0x0F) << FMC_BTRx_CLKDIV_Pos));
391  tmpr |= (uint32_t)(((Timing->CLKDivision) - 1) << FMC_BTRx_CLKDIV_Pos);
392  MODIFY_REG(Device->BTCR[FMC_NORSRAM_BANK1 + 1], FMC_BTRx_CLKDIV, tmpr);
393  }
394 
395  return HAL_OK;
396 }
return HAL_OK
ADC handle Structure definition.
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))