STM32F4xx_HAL_Driver  1.8.3
stm32f4xx_hal_pccard.c
Go to the documentation of this file.
1 
101 /* Includes ------------------------------------------------------------------*/
102 #include "stm32f4xx_hal.h"
103 
104 #if defined(FMC_Bank4) || defined(FSMC_Bank4)
105 
110 #ifdef HAL_PCCARD_MODULE_ENABLED
111 
116 /* Private typedef -----------------------------------------------------------*/
117 /* Private define ------------------------------------------------------------*/
118 
122 #define PCCARD_TIMEOUT_READ_ID 0x0000FFFFU
123 #define PCCARD_TIMEOUT_READ_WRITE_SECTOR 0x0000FFFFU
124 #define PCCARD_TIMEOUT_ERASE_SECTOR 0x00000400U
125 #define PCCARD_TIMEOUT_STATUS 0x01000000U
126 
127 #define PCCARD_STATUS_OK (uint8_t)0x58
128 #define PCCARD_STATUS_WRITE_OK (uint8_t)0x50
133 /* Private macro -------------------------------------------------------------*/
134 /* Private variables ---------------------------------------------------------*/
135 /* Private function ----------------------------------------------------------*/
136 /* Exported functions --------------------------------------------------------*/
165 HAL_StatusTypeDef HAL_PCCARD_Init(PCCARD_HandleTypeDef *hpccard, FMC_NAND_PCC_TimingTypeDef *ComSpaceTiming,
166  FMC_NAND_PCC_TimingTypeDef *AttSpaceTiming, FMC_NAND_PCC_TimingTypeDef *IOSpaceTiming)
167 {
168  /* Check the PCCARD controller state */
169  if (hpccard == NULL)
170  {
171  return HAL_ERROR;
172  }
173 
174  if (hpccard->State == HAL_PCCARD_STATE_RESET)
175  {
176  /* Allocate lock resource and initialize it */
177  hpccard->Lock = HAL_UNLOCKED;
178 #if (USE_HAL_PCCARD_REGISTER_CALLBACKS == 1)
179  if (hpccard->MspInitCallback == NULL)
180  {
181  hpccard->MspInitCallback = HAL_PCCARD_MspInit;
182  }
183  hpccard->ItCallback = HAL_PCCARD_ITCallback;
184 
185  /* Init the low level hardware */
186  hpccard->MspInitCallback(hpccard);
187 #else
188  /* Initialize the low level hardware (MSP) */
189  HAL_PCCARD_MspInit(hpccard);
190 #endif
191  }
192 
193  /* Initialize the PCCARD state */
194  hpccard->State = HAL_PCCARD_STATE_BUSY;
195 
196  /* Initialize PCCARD control Interface */
197  FMC_PCCARD_Init(hpccard->Instance, &(hpccard->Init));
198 
199  /* Init PCCARD common space timing Interface */
200  FMC_PCCARD_CommonSpace_Timing_Init(hpccard->Instance, ComSpaceTiming);
201 
202  /* Init PCCARD attribute space timing Interface */
203  FMC_PCCARD_AttributeSpace_Timing_Init(hpccard->Instance, AttSpaceTiming);
204 
205  /* Init PCCARD IO space timing Interface */
206  FMC_PCCARD_IOSpace_Timing_Init(hpccard->Instance, IOSpaceTiming);
207 
208  /* Enable the PCCARD device */
209  __FMC_PCCARD_ENABLE(hpccard->Instance);
210 
211  /* Update the PCCARD state */
212  hpccard->State = HAL_PCCARD_STATE_READY;
213 
214  return HAL_OK;
215 
216 }
217 
224 HAL_StatusTypeDef HAL_PCCARD_DeInit(PCCARD_HandleTypeDef *hpccard)
225 {
226 #if (USE_HAL_PCCARD_REGISTER_CALLBACKS == 1)
227  if (hpccard->MspDeInitCallback == NULL)
228  {
229  hpccard->MspDeInitCallback = HAL_PCCARD_MspDeInit;
230  }
231 
232  /* DeInit the low level hardware */
233  hpccard->MspDeInitCallback(hpccard);
234 #else
235  /* De-Initialize the low level hardware (MSP) */
236  HAL_PCCARD_MspDeInit(hpccard);
237 #endif
238 
239  /* Configure the PCCARD registers with their reset values */
240  FMC_PCCARD_DeInit(hpccard->Instance);
241 
242  /* Update the PCCARD controller state */
243  hpccard->State = HAL_PCCARD_STATE_RESET;
244 
245  /* Release Lock */
246  __HAL_UNLOCK(hpccard);
247 
248  return HAL_OK;
249 }
250 
258 {
259  /* Prevent unused argument(s) compilation warning */
260  UNUSED(hpccard);
261  /* NOTE : This function Should not be modified, when the callback is needed,
262  the HAL_PCCARD_MspInit could be implemented in the user file
263  */
264 }
265 
273 {
274  /* Prevent unused argument(s) compilation warning */
275  UNUSED(hpccard);
276  /* NOTE : This function Should not be modified, when the callback is needed,
277  the HAL_PCCARD_MspDeInit could be implemented in the user file
278  */
279 }
280 
308 HAL_StatusTypeDef HAL_PCCARD_Read_ID(PCCARD_HandleTypeDef *hpccard, uint8_t CompactFlash_ID[], uint8_t *pStatus)
309 {
310  uint32_t timeout = PCCARD_TIMEOUT_READ_ID, index = 0U;
311  uint8_t status = 0;
312 
313  /* Process Locked */
314  __HAL_LOCK(hpccard);
315 
316  /* Check the PCCARD controller state */
317  if (hpccard->State == HAL_PCCARD_STATE_BUSY)
318  {
319  return HAL_BUSY;
320  }
321 
322  /* Update the PCCARD controller state */
323  hpccard->State = HAL_PCCARD_STATE_BUSY;
324 
325  /* Initialize the PCCARD status */
326  *pStatus = PCCARD_READY;
327 
328  /* Send the Identify Command */
329  *(__IO uint16_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_STATUS_CMD) = (uint16_t)0xECEC;
330 
331  /* Read PCCARD IDs and timeout treatment */
332  do
333  {
334  /* Read the PCCARD status */
335  status = *(__IO uint8_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_STATUS_CMD_ALTERNATE);
336 
337  timeout--;
338  } while ((status != PCCARD_STATUS_OK) && timeout);
339 
340  if (timeout == 0U)
341  {
342  *pStatus = PCCARD_TIMEOUT_ERROR;
343  }
344  else
345  {
346  /* Read PCCARD ID bytes */
347  for (index = 0U; index < 16U; index++)
348  {
349  CompactFlash_ID[index] = *(__IO uint8_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_DATA);
350  }
351  }
352 
353  /* Update the PCCARD controller state */
354  hpccard->State = HAL_PCCARD_STATE_READY;
355 
356  /* Process unlocked */
357  __HAL_UNLOCK(hpccard);
358 
359  return HAL_OK;
360 }
361 
371 HAL_StatusTypeDef HAL_PCCARD_Read_Sector(PCCARD_HandleTypeDef *hpccard, uint16_t *pBuffer, uint16_t SectorAddress,
372  uint8_t *pStatus)
373 {
374  uint32_t timeout = PCCARD_TIMEOUT_READ_WRITE_SECTOR, index = 0U;
375  uint8_t status = 0;
376 
377  /* Process Locked */
378  __HAL_LOCK(hpccard);
379 
380  /* Check the PCCARD controller state */
381  if (hpccard->State == HAL_PCCARD_STATE_BUSY)
382  {
383  return HAL_BUSY;
384  }
385 
386  /* Update the PCCARD controller state */
387  hpccard->State = HAL_PCCARD_STATE_BUSY;
388 
389  /* Initialize PCCARD status */
390  *pStatus = PCCARD_READY;
391 
392  /* Set the parameters to write a sector */
393  *(__IO uint16_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_CYLINDER_HIGH) = (uint16_t)0x0000;
394  *(__IO uint16_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_SECTOR_COUNT) = ((uint16_t)0x0100) | ((uint16_t)SectorAddress);
395  *(__IO uint16_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_STATUS_CMD) = (uint16_t)0xE4A0;
396 
397  do
398  {
399  /* wait till the Status = 0x80 */
400  status = *(__IO uint16_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_STATUS_CMD_ALTERNATE);
401  timeout--;
402  } while ((status == 0x80U) && timeout);
403 
404  if (timeout == 0U)
405  {
406  *pStatus = PCCARD_TIMEOUT_ERROR;
407  }
408 
409  timeout = PCCARD_TIMEOUT_READ_WRITE_SECTOR;
410 
411  do
412  {
413  /* wait till the Status = PCCARD_STATUS_OK */
414  status = *(__IO uint16_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_STATUS_CMD_ALTERNATE);
415  timeout--;
416  } while ((status != PCCARD_STATUS_OK) && timeout);
417 
418  if (timeout == 0U)
419  {
420  *pStatus = PCCARD_TIMEOUT_ERROR;
421  }
422 
423  /* Read bytes */
424  for (; index < PCCARD_SECTOR_SIZE; index++)
425  {
426  *(uint16_t *)pBuffer++ = *(uint16_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR);
427  }
428 
429  /* Update the PCCARD controller state */
430  hpccard->State = HAL_PCCARD_STATE_READY;
431 
432  /* Process unlocked */
433  __HAL_UNLOCK(hpccard);
434 
435  return HAL_OK;
436 }
437 
438 
448 HAL_StatusTypeDef HAL_PCCARD_Write_Sector(PCCARD_HandleTypeDef *hpccard, uint16_t *pBuffer, uint16_t SectorAddress,
449  uint8_t *pStatus)
450 {
451  uint32_t timeout = PCCARD_TIMEOUT_READ_WRITE_SECTOR, index = 0U;
452  uint8_t status = 0;
453 
454  /* Process Locked */
455  __HAL_LOCK(hpccard);
456 
457  /* Check the PCCARD controller state */
458  if (hpccard->State == HAL_PCCARD_STATE_BUSY)
459  {
460  return HAL_BUSY;
461  }
462 
463  /* Update the PCCARD controller state */
464  hpccard->State = HAL_PCCARD_STATE_BUSY;
465 
466  /* Initialize PCCARD status */
467  *pStatus = PCCARD_READY;
468 
469  /* Set the parameters to write a sector */
470  *(__IO uint16_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_CYLINDER_HIGH) = (uint16_t)0x0000;
471  *(__IO uint16_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_SECTOR_COUNT) = ((uint16_t)0x0100) | ((uint16_t)SectorAddress);
472  *(__IO uint16_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_STATUS_CMD) = (uint16_t)0x30A0;
473 
474  do
475  {
476  /* Wait till the Status = PCCARD_STATUS_OK */
477  status = *(__IO uint8_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_STATUS_CMD_ALTERNATE);
478  timeout--;
479  } while ((status != PCCARD_STATUS_OK) && timeout);
480 
481  if (timeout == 0U)
482  {
483  *pStatus = PCCARD_TIMEOUT_ERROR;
484  }
485 
486  /* Write bytes */
487  for (; index < PCCARD_SECTOR_SIZE; index++)
488  {
489  *(uint16_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR) = *(uint16_t *)pBuffer++;
490  }
491 
492  do
493  {
494  /* Wait till the Status = PCCARD_STATUS_WRITE_OK */
495  status = *(__IO uint8_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_STATUS_CMD_ALTERNATE);
496  timeout--;
497  } while ((status != PCCARD_STATUS_WRITE_OK) && timeout);
498 
499  if (timeout == 0U)
500  {
501  *pStatus = PCCARD_TIMEOUT_ERROR;
502  }
503 
504  /* Update the PCCARD controller state */
505  hpccard->State = HAL_PCCARD_STATE_READY;
506 
507  /* Process unlocked */
508  __HAL_UNLOCK(hpccard);
509 
510  return HAL_OK;
511 }
512 
513 
522 HAL_StatusTypeDef HAL_PCCARD_Erase_Sector(PCCARD_HandleTypeDef *hpccard, uint16_t SectorAddress, uint8_t *pStatus)
523 {
524  uint32_t timeout = PCCARD_TIMEOUT_ERASE_SECTOR;
525  uint8_t status = 0;
526 
527  /* Process Locked */
528  __HAL_LOCK(hpccard);
529 
530  /* Check the PCCARD controller state */
531  if (hpccard->State == HAL_PCCARD_STATE_BUSY)
532  {
533  return HAL_BUSY;
534  }
535 
536  /* Update the PCCARD controller state */
537  hpccard->State = HAL_PCCARD_STATE_BUSY;
538 
539  /* Initialize PCCARD status */
540  *pStatus = PCCARD_READY;
541 
542  /* Set the parameters to write a sector */
543  *(__IO uint8_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_CYLINDER_LOW) = 0x00;
544  *(__IO uint8_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_CYLINDER_HIGH) = 0x00;
545  *(__IO uint8_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_SECTOR_NUMBER) = SectorAddress;
546  *(__IO uint8_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_SECTOR_COUNT) = 0x01;
547  *(__IO uint8_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_CARD_HEAD) = 0xA0;
548  *(__IO uint8_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_STATUS_CMD) = ATA_ERASE_SECTOR_CMD;
549 
550  /* wait till the PCCARD is ready */
551  status = *(__IO uint8_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_STATUS_CMD_ALTERNATE);
552 
553  while ((status != PCCARD_STATUS_WRITE_OK) && timeout)
554  {
555  status = *(__IO uint8_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_STATUS_CMD_ALTERNATE);
556  timeout--;
557  }
558 
559  if (timeout == 0U)
560  {
561  *pStatus = PCCARD_TIMEOUT_ERROR;
562  }
563 
564  /* Check the PCCARD controller state */
565  hpccard->State = HAL_PCCARD_STATE_READY;
566 
567  /* Process unlocked */
568  __HAL_UNLOCK(hpccard);
569 
570  return HAL_OK;
571 }
572 
579 HAL_StatusTypeDef HAL_PCCARD_Reset(PCCARD_HandleTypeDef *hpccard)
580 {
581  /* Process Locked */
582  __HAL_LOCK(hpccard);
583 
584  /* Check the PCCARD controller state */
585  if (hpccard->State == HAL_PCCARD_STATE_BUSY)
586  {
587  return HAL_BUSY;
588  }
589 
590  /* Provide a SW reset and Read and verify the:
591  - PCCard Configuration Option Register at address 0x98000200 --> 0x80
592  - Card Configuration and Status Register at address 0x98000202 --> 0x00
593  - Pin Replacement Register at address 0x98000204 --> 0x0C
594  - Socket and Copy Register at address 0x98000206 --> 0x00
595  */
596 
597  /* Check the PCCARD controller state */
598  hpccard->State = HAL_PCCARD_STATE_BUSY;
599 
600  *(__IO uint8_t *)(PCCARD_ATTRIBUTE_SPACE_ADDRESS | ATA_CARD_CONFIGURATION) = 0x01;
601 
602  /* Check the PCCARD controller state */
603  hpccard->State = HAL_PCCARD_STATE_READY;
604 
605  /* Process unlocked */
606  __HAL_UNLOCK(hpccard);
607 
608  return HAL_OK;
609 }
610 
618 {
619  /* Check PCCARD interrupt Rising edge flag */
620  if (__FMC_PCCARD_GET_FLAG(hpccard->Instance, FMC_FLAG_RISING_EDGE))
621  {
622  /* PCCARD interrupt callback*/
623 #if (USE_HAL_PCCARD_REGISTER_CALLBACKS == 1)
624  hpccard->ItCallback(hpccard);
625 #else
626  HAL_PCCARD_ITCallback(hpccard);
627 #endif
628 
629  /* Clear PCCARD interrupt Rising edge pending bit */
630  __FMC_PCCARD_CLEAR_FLAG(hpccard->Instance, FMC_FLAG_RISING_EDGE);
631  }
632 
633  /* Check PCCARD interrupt Level flag */
634  if (__FMC_PCCARD_GET_FLAG(hpccard->Instance, FMC_FLAG_LEVEL))
635  {
636  /* PCCARD interrupt callback*/
637 #if (USE_HAL_PCCARD_REGISTER_CALLBACKS == 1)
638  hpccard->ItCallback(hpccard);
639 #else
640  HAL_PCCARD_ITCallback(hpccard);
641 #endif
642 
643  /* Clear PCCARD interrupt Level pending bit */
644  __FMC_PCCARD_CLEAR_FLAG(hpccard->Instance, FMC_FLAG_LEVEL);
645  }
646 
647  /* Check PCCARD interrupt Falling edge flag */
648  if (__FMC_PCCARD_GET_FLAG(hpccard->Instance, FMC_FLAG_FALLING_EDGE))
649  {
650  /* PCCARD interrupt callback*/
651 #if (USE_HAL_PCCARD_REGISTER_CALLBACKS == 1)
652  hpccard->ItCallback(hpccard);
653 #else
654  HAL_PCCARD_ITCallback(hpccard);
655 #endif
656 
657  /* Clear PCCARD interrupt Falling edge pending bit */
658  __FMC_PCCARD_CLEAR_FLAG(hpccard->Instance, FMC_FLAG_FALLING_EDGE);
659  }
660 
661  /* Check PCCARD interrupt FIFO empty flag */
662  if (__FMC_PCCARD_GET_FLAG(hpccard->Instance, FMC_FLAG_FEMPT))
663  {
664  /* PCCARD interrupt callback*/
665 #if (USE_HAL_PCCARD_REGISTER_CALLBACKS == 1)
666  hpccard->ItCallback(hpccard);
667 #else
668  HAL_PCCARD_ITCallback(hpccard);
669 #endif
670 
671  /* Clear PCCARD interrupt FIFO empty pending bit */
672  __FMC_PCCARD_CLEAR_FLAG(hpccard->Instance, FMC_FLAG_FEMPT);
673  }
674 }
675 
683 {
684  /* Prevent unused argument(s) compilation warning */
685  UNUSED(hpccard);
686  /* NOTE : This function Should not be modified, when the callback is needed,
687  the HAL_PCCARD_ITCallback could be implemented in the user file
688  */
689 }
690 
691 #if (USE_HAL_PCCARD_REGISTER_CALLBACKS == 1)
705  pPCCARD_CallbackTypeDef pCallback)
706 {
707  HAL_StatusTypeDef status = HAL_OK;
708 
709  if (pCallback == NULL)
710  {
711  return HAL_ERROR;
712  }
713 
714  /* Process locked */
715  __HAL_LOCK(hpccard);
716 
717  if (hpccard->State == HAL_PCCARD_STATE_READY)
718  {
719  switch (CallbackId)
720  {
722  hpccard->MspInitCallback = pCallback;
723  break;
725  hpccard->MspDeInitCallback = pCallback;
726  break;
727  case HAL_PCCARD_IT_CB_ID :
728  hpccard->ItCallback = pCallback;
729  break;
730  default :
731  /* update return status */
732  status = HAL_ERROR;
733  break;
734  }
735  }
736  else if (hpccard->State == HAL_PCCARD_STATE_RESET)
737  {
738  switch (CallbackId)
739  {
741  hpccard->MspInitCallback = pCallback;
742  break;
744  hpccard->MspDeInitCallback = pCallback;
745  break;
746  default :
747  /* update return status */
748  status = HAL_ERROR;
749  break;
750  }
751  }
752  else
753  {
754  /* update return status */
755  status = HAL_ERROR;
756  }
757 
758  /* Release Lock */
759  __HAL_UNLOCK(hpccard);
760  return status;
761 }
762 
775 {
776  HAL_StatusTypeDef status = HAL_OK;
777 
778  /* Process locked */
779  __HAL_LOCK(hpccard);
780 
781  if (hpccard->State == HAL_PCCARD_STATE_READY)
782  {
783  switch (CallbackId)
784  {
786  hpccard->MspInitCallback = HAL_PCCARD_MspInit;
787  break;
789  hpccard->MspDeInitCallback = HAL_PCCARD_MspDeInit;
790  break;
791  case HAL_PCCARD_IT_CB_ID :
792  hpccard->ItCallback = HAL_PCCARD_ITCallback;
793  break;
794  default :
795  /* update return status */
796  status = HAL_ERROR;
797  break;
798  }
799  }
800  else if (hpccard->State == HAL_PCCARD_STATE_RESET)
801  {
802  switch (CallbackId)
803  {
805  hpccard->MspInitCallback = HAL_PCCARD_MspInit;
806  break;
808  hpccard->MspDeInitCallback = HAL_PCCARD_MspDeInit;
809  break;
810  default :
811  /* update return status */
812  status = HAL_ERROR;
813  break;
814  }
815  }
816  else
817  {
818  /* update return status */
819  status = HAL_ERROR;
820  }
821 
822  /* Release Lock */
823  __HAL_UNLOCK(hpccard);
824  return status;
825 }
826 #endif
827 
854 {
855  return hpccard->State;
856 }
857 
867 HAL_PCCARD_StatusTypeDef HAL_PCCARD_GetStatus(PCCARD_HandleTypeDef *hpccard)
868 {
869  uint32_t timeout = PCCARD_TIMEOUT_STATUS, status_pccard = 0U;
870 
871  /* Check the PCCARD controller state */
872  if (hpccard->State == HAL_PCCARD_STATE_BUSY)
873  {
874  return HAL_PCCARD_STATUS_ONGOING;
875  }
876 
877  status_pccard = *(__IO uint8_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_STATUS_CMD_ALTERNATE);
878 
879  while ((status_pccard == PCCARD_BUSY) && timeout)
880  {
881  status_pccard = *(__IO uint8_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_STATUS_CMD_ALTERNATE);
882  timeout--;
883  }
884 
885  if (timeout == 0U)
886  {
887  status_pccard = PCCARD_TIMEOUT_ERROR;
888  }
889 
890  /* Return the operation status */
891  return (HAL_PCCARD_StatusTypeDef) status_pccard;
892 }
893 
903 HAL_PCCARD_StatusTypeDef HAL_PCCARD_ReadStatus(PCCARD_HandleTypeDef *hpccard)
904 {
905  uint8_t data = 0U, status_pccard = PCCARD_BUSY;
906 
907  /* Check the PCCARD controller state */
908  if (hpccard->State == HAL_PCCARD_STATE_BUSY)
909  {
910  return HAL_PCCARD_STATUS_ONGOING;
911  }
912 
913  /* Read status operation */
914  data = *(__IO uint8_t *)(PCCARD_IO_SPACE_PRIMARY_ADDR | ATA_STATUS_CMD_ALTERNATE);
915 
916  if ((data & PCCARD_TIMEOUT_ERROR) == PCCARD_TIMEOUT_ERROR)
917  {
918  status_pccard = PCCARD_TIMEOUT_ERROR;
919  }
920  else if ((data & PCCARD_READY) == PCCARD_READY)
921  {
922  status_pccard = PCCARD_READY;
923  }
924 
925  return (HAL_PCCARD_StatusTypeDef) status_pccard;
926 }
927 
940 #endif /* HAL_PCCARD_MODULE_ENABLED */
941 
946 #endif /* FMC_Bank4 || FSMC_Bank4 */
FMC NAND Timing parameters structure definition.
HAL_StatusTypeDef FMC_PCCARD_CommonSpace_Timing_Init(FMC_PCCARD_TypeDef *Device, FMC_NAND_PCC_TimingTypeDef *Timing)
Initializes the FMC_PCCARD Common space Timing according to the specified parameters in the FMC_NAND_...
HAL_StatusTypeDef FMC_PCCARD_AttributeSpace_Timing_Init(FMC_PCCARD_TypeDef *Device, FMC_NAND_PCC_TimingTypeDef *Timing)
Initializes the FMC_PCCARD Attribute space Timing according to the specified parameters in the FMC_NA...
HAL_StatusTypeDef FMC_PCCARD_DeInit(FMC_PCCARD_TypeDef *Device)
DeInitializes the FMC_PCCARD device.
HAL_StatusTypeDef FMC_PCCARD_Init(FMC_PCCARD_TypeDef *Device, FMC_PCCARD_InitTypeDef *Init)
Initializes the FMC_PCCARD device according to the specified control parameters in the FMC_PCCARD_Han...
HAL_StatusTypeDef FMC_PCCARD_IOSpace_Timing_Init(FMC_PCCARD_TypeDef *Device, FMC_NAND_PCC_TimingTypeDef *Timing)
Initializes the FMC_PCCARD IO space Timing according to the specified parameters in the FMC_NAND_PCC_...
HAL_StatusTypeDef HAL_PCCARD_Init(PCCARD_HandleTypeDef *hpccard, FMC_NAND_PCC_TimingTypeDef *ComSpaceTiming, FMC_NAND_PCC_TimingTypeDef *AttSpaceTiming, FMC_NAND_PCC_TimingTypeDef *IOSpaceTiming)
Perform the PCCARD memory Initialization sequence.
void HAL_PCCARD_MspInit(PCCARD_HandleTypeDef *hpccard)
PCCARD MSP Init.
HAL_StatusTypeDef HAL_PCCARD_DeInit(PCCARD_HandleTypeDef *hpccard)
Perform the PCCARD memory De-initialization sequence.
void HAL_PCCARD_MspDeInit(PCCARD_HandleTypeDef *hpccard)
PCCARD MSP DeInit.
HAL_StatusTypeDef HAL_PCCARD_UnRegisterCallback(PCCARD_HandleTypeDef *hpccard, HAL_PCCARD_CallbackIDTypeDef CallbackId)
Unregister a User PCCARD Callback PCCARD Callback is redirected to the weak (surcharged) predefined c...
HAL_StatusTypeDef HAL_PCCARD_Reset(PCCARD_HandleTypeDef *hpccard)
Reset the PCCARD memory.
HAL_StatusTypeDef HAL_PCCARD_Read_ID(PCCARD_HandleTypeDef *hpccard, uint8_t CompactFlash_ID[], uint8_t *pStatus)
Read Compact Flash's ID.
HAL_StatusTypeDef HAL_PCCARD_Erase_Sector(PCCARD_HandleTypeDef *hpccard, uint16_t SectorAddress, uint8_t *pStatus)
Erase sector from PCCARD memory.
HAL_StatusTypeDef HAL_PCCARD_RegisterCallback(PCCARD_HandleTypeDef *hpccard, HAL_PCCARD_CallbackIDTypeDef CallbackId, pPCCARD_CallbackTypeDef pCallback)
Register a User PCCARD Callback To be used instead of the weak (surcharged) predefined callback.
void HAL_PCCARD_ITCallback(PCCARD_HandleTypeDef *hpccard)
PCCARD interrupt feature callback.
HAL_StatusTypeDef HAL_PCCARD_Write_Sector(PCCARD_HandleTypeDef *hpccard, uint16_t *pBuffer, uint16_t SectorAddress, uint8_t *pStatus)
Write sector to PCCARD memory.
void HAL_PCCARD_IRQHandler(PCCARD_HandleTypeDef *hpccard)
This function handles PCCARD device interrupt request.
HAL_StatusTypeDef HAL_PCCARD_Read_Sector(PCCARD_HandleTypeDef *hpccard, uint16_t *pBuffer, uint16_t SectorAddress, uint8_t *pStatus)
Read sector from PCCARD memory.
HAL_PCCARD_StatusTypeDef HAL_PCCARD_ReadStatus(PCCARD_HandleTypeDef *hpccard)
Reads the Compact Flash memory status using the Read status command.
HAL_PCCARD_StatusTypeDef HAL_PCCARD_GetStatus(PCCARD_HandleTypeDef *hpccard)
Get the compact flash memory status.
HAL_PCCARD_StateTypeDef HAL_PCCARD_GetState(PCCARD_HandleTypeDef *hpccard)
return the PCCARD controller state
HAL_PCCARD_CallbackIDTypeDef
HAL PCCARD Callback ID enumeration definition.
HAL_PCCARD_StateTypeDef
HAL PCCARD State structures definition.
struct __PCCARD_HandleTypeDef else typedef struct endif PCCARD_HandleTypeDef
FMC_PCCARD handle Structure definition.
void(* pPCCARD_CallbackTypeDef)(PCCARD_HandleTypeDef *hpccard)
HAL PCCARD Callback pointer definition.
@ HAL_PCCARD_MSP_DEINIT_CB_ID
@ HAL_PCCARD_IT_CB_ID
@ HAL_PCCARD_MSP_INIT_CB_ID
@ HAL_PCCARD_STATE_RESET
@ HAL_PCCARD_STATE_BUSY
@ HAL_PCCARD_STATE_READY
This file contains all the functions prototypes for the HAL module driver.