117#if defined(FMC_Bank5_6)
123#ifdef HAL_SDRAM_MODULE_ENABLED
172HAL_StatusTypeDef HAL_SDRAM_Init(SDRAM_HandleTypeDef *hsdram, FMC_SDRAM_TimingTypeDef *Timing)
180 if (hsdram->State == HAL_SDRAM_STATE_RESET)
184#if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
185 if (hsdram->MspInitCallback == NULL)
187 hsdram->MspInitCallback = HAL_SDRAM_MspInit;
189 hsdram->RefreshErrorCallback = HAL_SDRAM_RefreshErrorCallback;
190 hsdram->DmaXferCpltCallback = HAL_SDRAM_DMA_XferCpltCallback;
191 hsdram->DmaXferErrorCallback = HAL_SDRAM_DMA_XferErrorCallback;
194 hsdram->MspInitCallback(hsdram);
197 HAL_SDRAM_MspInit(hsdram);
202 hsdram->State = HAL_SDRAM_STATE_BUSY;
205 (void)FMC_SDRAM_Init(hsdram->Instance, &(hsdram->Init));
208 (void)FMC_SDRAM_Timing_Init(hsdram->Instance, Timing, hsdram->Init.SDBank);
210 hsdram->State = HAL_SDRAM_STATE_READY;
223#if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
224 if (hsdram->MspDeInitCallback == NULL)
226 hsdram->MspDeInitCallback = HAL_SDRAM_MspDeInit;
230 hsdram->MspDeInitCallback(hsdram);
233 HAL_SDRAM_MspDeInit(hsdram);
237 (void)FMC_SDRAM_DeInit(hsdram->Instance, hsdram->Init.SDBank);
240 hsdram->State = HAL_SDRAM_STATE_RESET;
254__weak
void HAL_SDRAM_MspInit(SDRAM_HandleTypeDef *hsdram)
270__weak
void HAL_SDRAM_MspDeInit(SDRAM_HandleTypeDef *hsdram)
286void HAL_SDRAM_IRQHandler(SDRAM_HandleTypeDef *hsdram)
289 if (__FMC_SDRAM_GET_FLAG(hsdram->Instance, FMC_SDRAM_FLAG_REFRESH_IT))
292#if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
293 hsdram->RefreshErrorCallback(hsdram);
295 HAL_SDRAM_RefreshErrorCallback(hsdram);
299 __FMC_SDRAM_CLEAR_FLAG(hsdram->Instance, FMC_SDRAM_FLAG_REFRESH_ERROR);
309__weak
void HAL_SDRAM_RefreshErrorCallback(SDRAM_HandleTypeDef *hsdram)
377HAL_StatusTypeDef HAL_SDRAM_Read_8b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint8_t *pDstBuffer,
381 __IO uint8_t *pSdramAddress = (uint8_t *)pAddress;
382 uint8_t *pdestbuff = pDstBuffer;
383 HAL_SDRAM_StateTypeDef state = hsdram->State;
386 if (state == HAL_SDRAM_STATE_BUSY)
390 else if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
396 hsdram->State = HAL_SDRAM_STATE_BUSY;
399 for (size = BufferSize; size != 0U; size--)
401 *pdestbuff = *(__IO uint8_t *)pSdramAddress;
407 hsdram->State = state;
429HAL_StatusTypeDef HAL_SDRAM_Write_8b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint8_t *pSrcBuffer,
433 __IO uint8_t *pSdramAddress = (uint8_t *)pAddress;
434 uint8_t *psrcbuff = pSrcBuffer;
437 if (hsdram->State == HAL_SDRAM_STATE_BUSY)
441 else if (hsdram->State == HAL_SDRAM_STATE_READY)
447 hsdram->State = HAL_SDRAM_STATE_BUSY;
450 for (size = BufferSize; size != 0U; size--)
452 *(__IO uint8_t *)pSdramAddress = *psrcbuff;
458 hsdram->State = HAL_SDRAM_STATE_READY;
480HAL_StatusTypeDef HAL_SDRAM_Read_16b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint16_t *pDstBuffer,
484 __IO uint32_t *pSdramAddress = pAddress;
485 uint16_t *pdestbuff = pDstBuffer;
486 HAL_SDRAM_StateTypeDef state = hsdram->State;
489 if (state == HAL_SDRAM_STATE_BUSY)
493 else if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
499 hsdram->State = HAL_SDRAM_STATE_BUSY;
502 for (size = BufferSize; size >= 2U ; size -= 2U)
504 *pdestbuff = (uint16_t)((*pSdramAddress) & 0x0000FFFFU);
506 *pdestbuff = (uint16_t)(((*pSdramAddress) & 0xFFFF0000U) >> 16U);
512 if ((BufferSize % 2U) != 0U)
514 *pdestbuff = (uint16_t)((*pSdramAddress) & 0x0000FFFFU);
518 hsdram->State = state;
540HAL_StatusTypeDef HAL_SDRAM_Write_16b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint16_t *pSrcBuffer,
544 __IO uint32_t *psdramaddress = pAddress;
545 uint16_t *psrcbuff = pSrcBuffer;
548 if (hsdram->State == HAL_SDRAM_STATE_BUSY)
552 else if (hsdram->State == HAL_SDRAM_STATE_READY)
558 hsdram->State = HAL_SDRAM_STATE_BUSY;
561 for (size = BufferSize; size >= 2U ; size -= 2U)
563 *psdramaddress = (uint32_t)(*psrcbuff);
565 *psdramaddress |= ((uint32_t)(*psrcbuff) << 16U);
571 if ((BufferSize % 2U) != 0U)
573 *psdramaddress = ((uint32_t)(*psrcbuff) & 0x0000FFFFU) | ((*psdramaddress) & 0xFFFF0000U);
577 hsdram->State = HAL_SDRAM_STATE_READY;
599HAL_StatusTypeDef HAL_SDRAM_Read_32b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pDstBuffer,
603 __IO uint32_t *pSdramAddress = (uint32_t *)pAddress;
604 uint32_t *pdestbuff = pDstBuffer;
605 HAL_SDRAM_StateTypeDef state = hsdram->State;
608 if (state == HAL_SDRAM_STATE_BUSY)
612 else if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
618 hsdram->State = HAL_SDRAM_STATE_BUSY;
621 for (size = BufferSize; size != 0U; size--)
623 *pdestbuff = *(__IO uint32_t *)pSdramAddress;
629 hsdram->State = state;
651HAL_StatusTypeDef HAL_SDRAM_Write_32b(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pSrcBuffer,
655 __IO uint32_t *pSdramAddress = pAddress;
656 uint32_t *psrcbuff = pSrcBuffer;
659 if (hsdram->State == HAL_SDRAM_STATE_BUSY)
663 else if (hsdram->State == HAL_SDRAM_STATE_READY)
669 hsdram->State = HAL_SDRAM_STATE_BUSY;
672 for (size = BufferSize; size != 0U; size--)
674 *pSdramAddress = *psrcbuff;
680 hsdram->State = HAL_SDRAM_STATE_READY;
702HAL_StatusTypeDef HAL_SDRAM_Read_DMA(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pDstBuffer,
706 HAL_SDRAM_StateTypeDef state = hsdram->State;
709 if (state == HAL_SDRAM_STATE_BUSY)
713 else if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
719 hsdram->State = HAL_SDRAM_STATE_BUSY;
722 if (state == HAL_SDRAM_STATE_READY)
724 hsdram->hdma->XferCpltCallback = SDRAM_DMACplt;
728 hsdram->hdma->XferCpltCallback = SDRAM_DMACpltProt;
730 hsdram->hdma->XferErrorCallback = SDRAM_DMAError;
733 status =
HAL_DMA_Start_IT(hsdram->hdma, (uint32_t)pAddress, (uint32_t)pDstBuffer, (uint32_t)BufferSize);
755HAL_StatusTypeDef HAL_SDRAM_Write_DMA(SDRAM_HandleTypeDef *hsdram, uint32_t *pAddress, uint32_t *pSrcBuffer,
761 if (hsdram->State == HAL_SDRAM_STATE_BUSY)
765 else if (hsdram->State == HAL_SDRAM_STATE_READY)
771 hsdram->State = HAL_SDRAM_STATE_BUSY;
774 hsdram->hdma->XferCpltCallback = SDRAM_DMACplt;
775 hsdram->hdma->XferErrorCallback = SDRAM_DMAError;
778 status =
HAL_DMA_Start_IT(hsdram->hdma, (uint32_t)pSrcBuffer, (uint32_t)pAddress, (uint32_t)BufferSize);
791#if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
804HAL_StatusTypeDef HAL_SDRAM_RegisterCallback(SDRAM_HandleTypeDef *hsdram, HAL_SDRAM_CallbackIDTypeDef CallbackId,
805 pSDRAM_CallbackTypeDef pCallback)
808 HAL_SDRAM_StateTypeDef state;
810 if (pCallback == NULL)
815 state = hsdram->State;
816 if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
820 case HAL_SDRAM_MSP_INIT_CB_ID :
821 hsdram->MspInitCallback = pCallback;
823 case HAL_SDRAM_MSP_DEINIT_CB_ID :
824 hsdram->MspDeInitCallback = pCallback;
826 case HAL_SDRAM_REFRESH_ERR_CB_ID :
827 hsdram->RefreshErrorCallback = pCallback;
835 else if (hsdram->State == HAL_SDRAM_STATE_RESET)
839 case HAL_SDRAM_MSP_INIT_CB_ID :
840 hsdram->MspInitCallback = pCallback;
842 case HAL_SDRAM_MSP_DEINIT_CB_ID :
843 hsdram->MspDeInitCallback = pCallback;
873HAL_StatusTypeDef HAL_SDRAM_UnRegisterCallback(SDRAM_HandleTypeDef *hsdram, HAL_SDRAM_CallbackIDTypeDef CallbackId)
876 HAL_SDRAM_StateTypeDef state;
878 state = hsdram->State;
879 if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
883 case HAL_SDRAM_MSP_INIT_CB_ID :
884 hsdram->MspInitCallback = HAL_SDRAM_MspInit;
886 case HAL_SDRAM_MSP_DEINIT_CB_ID :
887 hsdram->MspDeInitCallback = HAL_SDRAM_MspDeInit;
889 case HAL_SDRAM_REFRESH_ERR_CB_ID :
890 hsdram->RefreshErrorCallback = HAL_SDRAM_RefreshErrorCallback;
892 case HAL_SDRAM_DMA_XFER_CPLT_CB_ID :
893 hsdram->DmaXferCpltCallback = HAL_SDRAM_DMA_XferCpltCallback;
895 case HAL_SDRAM_DMA_XFER_ERR_CB_ID :
896 hsdram->DmaXferErrorCallback = HAL_SDRAM_DMA_XferErrorCallback;
904 else if (hsdram->State == HAL_SDRAM_STATE_RESET)
908 case HAL_SDRAM_MSP_INIT_CB_ID :
909 hsdram->MspInitCallback = HAL_SDRAM_MspInit;
911 case HAL_SDRAM_MSP_DEINIT_CB_ID :
912 hsdram->MspDeInitCallback = HAL_SDRAM_MspDeInit;
940HAL_StatusTypeDef HAL_SDRAM_RegisterDmaCallback(SDRAM_HandleTypeDef *hsdram, HAL_SDRAM_CallbackIDTypeDef CallbackId,
941 pSDRAM_DmaCallbackTypeDef pCallback)
944 HAL_SDRAM_StateTypeDef state;
946 if (pCallback == NULL)
954 state = hsdram->State;
955 if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_WRITE_PROTECTED))
959 case HAL_SDRAM_DMA_XFER_CPLT_CB_ID :
960 hsdram->DmaXferCpltCallback = pCallback;
962 case HAL_SDRAM_DMA_XFER_ERR_CB_ID :
963 hsdram->DmaXferErrorCallback = pCallback;
1011 if (hsdram->State == HAL_SDRAM_STATE_BUSY)
1015 else if (hsdram->State == HAL_SDRAM_STATE_READY)
1018 hsdram->State = HAL_SDRAM_STATE_BUSY;
1021 (void)FMC_SDRAM_WriteProtection_Enable(hsdram->Instance, hsdram->Init.SDBank);
1024 hsdram->State = HAL_SDRAM_STATE_WRITE_PROTECTED;
1042 HAL_SDRAM_StateTypeDef state = hsdram->State;
1045 if (state == HAL_SDRAM_STATE_BUSY)
1049 else if (state == HAL_SDRAM_STATE_WRITE_PROTECTED)
1052 hsdram->State = HAL_SDRAM_STATE_BUSY;
1055 (void)FMC_SDRAM_WriteProtection_Disable(hsdram->Instance, hsdram->Init.SDBank);
1058 hsdram->State = HAL_SDRAM_STATE_READY;
1076HAL_StatusTypeDef HAL_SDRAM_SendCommand(SDRAM_HandleTypeDef *hsdram, FMC_SDRAM_CommandTypeDef *Command,
1079 HAL_SDRAM_StateTypeDef state = hsdram->State;
1082 if (state == HAL_SDRAM_STATE_BUSY)
1086 else if ((state == HAL_SDRAM_STATE_READY) || (state == HAL_SDRAM_STATE_PRECHARGED))
1089 hsdram->State = HAL_SDRAM_STATE_BUSY;
1092 (void)FMC_SDRAM_SendCommand(hsdram->Instance, Command, Timeout);
1095 if (Command->CommandMode == FMC_SDRAM_CMD_PALL)
1097 hsdram->State = HAL_SDRAM_STATE_PRECHARGED;
1101 hsdram->State = HAL_SDRAM_STATE_READY;
1119HAL_StatusTypeDef HAL_SDRAM_ProgramRefreshRate(SDRAM_HandleTypeDef *hsdram, uint32_t RefreshRate)
1122 if (hsdram->State == HAL_SDRAM_STATE_BUSY)
1126 else if (hsdram->State == HAL_SDRAM_STATE_READY)
1129 hsdram->State = HAL_SDRAM_STATE_BUSY;
1132 (void)FMC_SDRAM_ProgramRefreshRate(hsdram->Instance, RefreshRate);
1135 hsdram->State = HAL_SDRAM_STATE_READY;
1152HAL_StatusTypeDef HAL_SDRAM_SetAutoRefreshNumber(SDRAM_HandleTypeDef *hsdram, uint32_t AutoRefreshNumber)
1155 if (hsdram->State == HAL_SDRAM_STATE_BUSY)
1159 else if (hsdram->State == HAL_SDRAM_STATE_READY)
1162 hsdram->State = HAL_SDRAM_STATE_BUSY;
1165 (void)FMC_SDRAM_SetAutoRefreshNumber(hsdram->Instance, AutoRefreshNumber);
1168 hsdram->State = HAL_SDRAM_STATE_READY;
1184uint32_t HAL_SDRAM_GetModeStatus(SDRAM_HandleTypeDef *hsdram)
1187 return (FMC_SDRAM_GetModeStatus(hsdram->Instance, hsdram->Init.SDBank));
1215HAL_SDRAM_StateTypeDef HAL_SDRAM_GetState(SDRAM_HandleTypeDef *hsdram)
1217 return hsdram->State;
1238 SDRAM_HandleTypeDef *hsdram = (SDRAM_HandleTypeDef *)(hdma->
Parent);
1244 hsdram->State = HAL_SDRAM_STATE_READY;
1246#if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
1247 hsdram->DmaXferCpltCallback(hdma);
1249 HAL_SDRAM_DMA_XferCpltCallback(hdma);
1260 SDRAM_HandleTypeDef *hsdram = (SDRAM_HandleTypeDef *)(hdma->
Parent);
1266 hsdram->State = HAL_SDRAM_STATE_WRITE_PROTECTED;
1268#if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
1269 hsdram->DmaXferCpltCallback(hdma);
1271 HAL_SDRAM_DMA_XferCpltCallback(hdma);
1282 SDRAM_HandleTypeDef *hsdram = (SDRAM_HandleTypeDef *)(hdma->
Parent);
1288 hsdram->State = HAL_SDRAM_STATE_ERROR;
1290#if (USE_HAL_SDRAM_REGISTER_CALLBACKS == 1)
1291 hsdram->DmaXferErrorCallback(hdma);
1293 HAL_SDRAM_DMA_XferErrorCallback(hdma);
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
Start the DMA Transfer with interrupt enabled.
#define __HAL_DMA_DISABLE(__HANDLE__)
Disable the specified DMA Stream.
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef
HAL Status structures definition
#define __HAL_UNLOCK(__HANDLE__)
#define __HAL_LOCK(__HANDLE__)
DMA handle Structure definition.