STM32F439xx HAL User Manual
stm32f4xx_hal_pccard.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32f4xx_hal_pccard.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of PCCARD HAL module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
00010   *
00011   * Redistribution and use in source and binary forms, with or without modification,
00012   * are permitted provided that the following conditions are met:
00013   *   1. Redistributions of source code must retain the above copyright notice,
00014   *      this list of conditions and the following disclaimer.
00015   *   2. Redistributions in binary form must reproduce the above copyright notice,
00016   *      this list of conditions and the following disclaimer in the documentation
00017   *      and/or other materials provided with the distribution.
00018   *   3. Neither the name of STMicroelectronics nor the names of its contributors
00019   *      may be used to endorse or promote products derived from this software
00020   *      without specific prior written permission.
00021   *
00022   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00023   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00024   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00025   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00026   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00027   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00028   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00029   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00030   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00031   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00032   *
00033   ******************************************************************************
00034   */ 
00035 
00036 /* Define to prevent recursive inclusion -------------------------------------*/
00037 #ifndef __STM32F4xx_HAL_PCCARD_H
00038 #define __STM32F4xx_HAL_PCCARD_H
00039 
00040 #ifdef __cplusplus
00041  extern "C" {
00042 #endif
00043 
00044 /* Includes ------------------------------------------------------------------*/
00045 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)
00046   #include "stm32f4xx_ll_fsmc.h"
00047 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx */
00048 
00049 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
00050   #include "stm32f4xx_ll_fmc.h"
00051 #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */
00052 
00053 /** @addtogroup STM32F4xx_HAL_Driver
00054   * @{
00055   */
00056 
00057 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) ||\
00058     defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
00059 
00060 /** @addtogroup PCCARD
00061   * @{
00062   */ 
00063 
00064 /* Exported typedef ----------------------------------------------------------*/
00065 /** @defgroup PCCARD_Exported_Types PCCARD Exported Types
00066   * @{
00067   */
00068 
00069 /** 
00070   * @brief  HAL PCCARD State structures definition  
00071   */ 
00072 typedef enum
00073 {
00074   HAL_PCCARD_STATE_RESET     = 0x00U,    /*!< PCCARD peripheral not yet initialized or disabled */
00075   HAL_PCCARD_STATE_READY     = 0x01U,    /*!< PCCARD peripheral ready                           */
00076   HAL_PCCARD_STATE_BUSY      = 0x02U,    /*!< PCCARD peripheral busy                            */
00077   HAL_PCCARD_STATE_ERROR     = 0x04U     /*!< PCCARD peripheral error                           */
00078 }HAL_PCCARD_StateTypeDef;
00079 
00080 typedef enum
00081 {
00082   HAL_PCCARD_STATUS_SUCCESS = 0U,
00083   HAL_PCCARD_STATUS_ONGOING,
00084   HAL_PCCARD_STATUS_ERROR,
00085   HAL_PCCARD_STATUS_TIMEOUT
00086 }HAL_PCCARD_StatusTypeDef;
00087 
00088 /** 
00089   * @brief  FMC_PCCARD handle Structure definition  
00090   */   
00091 typedef struct
00092 {
00093   FMC_PCCARD_TypeDef           *Instance;              /*!< Register base address for PCCARD device          */
00094   
00095   FMC_PCCARD_InitTypeDef       Init;                   /*!< PCCARD device control configuration parameters   */
00096 
00097   __IO HAL_PCCARD_StateTypeDef State;                  /*!< PCCARD device access state                       */
00098    
00099   HAL_LockTypeDef              Lock;                   /*!< PCCARD Lock                                      */ 
00100  
00101 }PCCARD_HandleTypeDef;
00102 /**
00103   * @}
00104   */
00105 
00106 /* Exported constants --------------------------------------------------------*/
00107 /* Exported macro ------------------------------------------------------------*/
00108 /** @defgroup PCCARD_Exported_Macros PCCARD Exported Macros
00109   * @{
00110   */
00111 /** @brief Reset PCCARD handle state
00112   * @param  __HANDLE__ specifies the PCCARD handle.
00113   * @retval None
00114   */
00115 #define __HAL_PCCARD_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_PCCARD_STATE_RESET)
00116 /**
00117   * @}
00118   */ 
00119 
00120 /* Exported functions --------------------------------------------------------*/
00121 /** @addtogroup PCCARD_Exported_Functions 
00122   * @{
00123   */
00124 
00125 /** @addtogroup PCCARD_Exported_Functions_Group1 
00126   * @{
00127   */
00128 /* Initialization/de-initialization functions  **********************************/
00129 HAL_StatusTypeDef  HAL_PCCARD_Init(PCCARD_HandleTypeDef *hpccard, FMC_NAND_PCC_TimingTypeDef *ComSpaceTiming, FMC_NAND_PCC_TimingTypeDef *AttSpaceTiming, FMC_NAND_PCC_TimingTypeDef *IOSpaceTiming);
00130 HAL_StatusTypeDef  HAL_PCCARD_DeInit(PCCARD_HandleTypeDef *hpccard);
00131 void HAL_PCCARD_MspInit(PCCARD_HandleTypeDef *hpccard);
00132 void HAL_PCCARD_MspDeInit(PCCARD_HandleTypeDef *hpccard);
00133 /**
00134   * @}
00135   */
00136 
00137 /** @addtogroup PCCARD_Exported_Functions_Group2
00138   * @{
00139   */
00140 /* IO operation functions  *****************************************************/
00141 HAL_StatusTypeDef  HAL_PCCARD_Read_ID(PCCARD_HandleTypeDef *hpccard, uint8_t CompactFlash_ID[], uint8_t *pStatus);
00142 HAL_StatusTypeDef  HAL_PCCARD_Write_Sector(PCCARD_HandleTypeDef *hpccard, uint16_t *pBuffer, uint16_t SectorAddress,  uint8_t *pStatus);
00143 HAL_StatusTypeDef  HAL_PCCARD_Read_Sector(PCCARD_HandleTypeDef *hpccard, uint16_t *pBuffer, uint16_t SectorAddress, uint8_t *pStatus);
00144 HAL_StatusTypeDef  HAL_PCCARD_Erase_Sector(PCCARD_HandleTypeDef *hpccard, uint16_t SectorAddress, uint8_t *pStatus);
00145 HAL_StatusTypeDef  HAL_PCCARD_Reset(PCCARD_HandleTypeDef *hpccard);
00146 void               HAL_PCCARD_IRQHandler(PCCARD_HandleTypeDef *hpccard);
00147 void               HAL_PCCARD_ITCallback(PCCARD_HandleTypeDef *hpccard);
00148 
00149 /**
00150   * @}
00151   */
00152 
00153 /** @addtogroup PCCARD_Exported_Functions_Group3
00154   * @{
00155   */
00156 /* PCCARD State functions *******************************************************/
00157 HAL_PCCARD_StateTypeDef  HAL_PCCARD_GetState(PCCARD_HandleTypeDef *hpccard);
00158 HAL_PCCARD_StatusTypeDef HAL_PCCARD_GetStatus(PCCARD_HandleTypeDef *hpccard);
00159 HAL_PCCARD_StatusTypeDef HAL_PCCARD_ReadStatus(PCCARD_HandleTypeDef *hpccard);
00160 /**
00161   * @}
00162   */
00163 
00164 /**
00165   * @}
00166   */
00167 /* Private types -------------------------------------------------------------*/
00168 /* Private variables ---------------------------------------------------------*/
00169 /* Private constants ---------------------------------------------------------*/
00170 /** @defgroup PCCARD_Private_Constants PCCARD Private Constants
00171   * @{
00172   */
00173 #define PCCARD_DEVICE_ADDRESS             0x90000000U
00174 #define PCCARD_ATTRIBUTE_SPACE_ADDRESS    0x98000000U              /* Attribute space size to @0x9BFF FFFF */
00175 #define PCCARD_COMMON_SPACE_ADDRESS       PCCARD_DEVICE_ADDRESS    /* Common space size to @0x93FF FFFF    */
00176 #define PCCARD_IO_SPACE_ADDRESS           0x9C000000U              /* IO space size to @0x9FFF FFFF        */
00177 #define PCCARD_IO_SPACE_PRIMARY_ADDR      0x9C0001F0U              /* IO space size to @0x9FFF FFFF        */
00178 
00179 /* Flash-ATA registers description */
00180 #define ATA_DATA                       ((uint8_t)0x00)    /* Data register */
00181 #define ATA_SECTOR_COUNT               ((uint8_t)0x02)    /* Sector Count register */
00182 #define ATA_SECTOR_NUMBER              ((uint8_t)0x03)    /* Sector Number register */
00183 #define ATA_CYLINDER_LOW               ((uint8_t)0x04)    /* Cylinder low register */
00184 #define ATA_CYLINDER_HIGH              ((uint8_t)0x05)    /* Cylinder high register */
00185 #define ATA_CARD_HEAD                  ((uint8_t)0x06)    /* Card/Head register */
00186 #define ATA_STATUS_CMD                 ((uint8_t)0x07)    /* Status(read)/Command(write) register */
00187 #define ATA_STATUS_CMD_ALTERNATE       ((uint8_t)0x0E)    /* Alternate Status(read)/Command(write) register */
00188 #define ATA_COMMON_DATA_AREA           ((uint16_t)0x0400) /* Start of data area (for Common access only!) */
00189 #define ATA_CARD_CONFIGURATION         ((uint16_t)0x0202) /* Card Configuration and Status Register */
00190 
00191 /* Flash-ATA commands */
00192 #define ATA_READ_SECTOR_CMD            ((uint8_t)0x20)
00193 #define ATA_WRITE_SECTOR_CMD           ((uint8_t)0x30)
00194 #define ATA_ERASE_SECTOR_CMD           ((uint8_t)0xC0)
00195 #define ATA_IDENTIFY_CMD               ((uint8_t)0xEC)
00196 
00197 /* PC Card/Compact Flash status */
00198 #define PCCARD_TIMEOUT_ERROR           ((uint8_t)0x60)
00199 #define PCCARD_BUSY                    ((uint8_t)0x80)
00200 #define PCCARD_PROGR                   ((uint8_t)0x01)
00201 #define PCCARD_READY                   ((uint8_t)0x40)
00202 
00203 #define PCCARD_SECTOR_SIZE             255U               /* In half words */ 
00204 
00205 /**
00206   * @}
00207   */
00208 /* Compact Flash redefinition */
00209 #define HAL_CF_Init                 HAL_PCCARD_Init
00210 #define HAL_CF_DeInit               HAL_PCCARD_DeInit
00211 #define HAL_CF_MspInit              HAL_PCCARD_MspInit
00212 #define HAL_CF_MspDeInit            HAL_PCCARD_MspDeInit
00213 
00214 #define HAL_CF_Read_ID              HAL_PCCARD_Read_ID
00215 #define HAL_CF_Write_Sector         HAL_PCCARD_Write_Sector
00216 #define HAL_CF_Read_Sector          HAL_PCCARD_Read_Sector
00217 #define HAL_CF_Erase_Sector         HAL_PCCARD_Erase_Sector
00218 #define HAL_CF_Reset                HAL_PCCARD_Reset
00219 #define HAL_CF_IRQHandler           HAL_PCCARD_IRQHandler
00220 #define HAL_CF_ITCallback           HAL_PCCARD_ITCallback
00221 
00222 #define HAL_CF_GetState             HAL_PCCARD_GetState
00223 #define HAL_CF_GetStatus            HAL_PCCARD_GetStatus
00224 #define HAL_CF_ReadStatus           HAL_PCCARD_ReadStatus
00225 
00226 #define HAL_CF_STATUS_SUCCESS       HAL_PCCARD_STATUS_SUCCESS
00227 #define HAL_CF_STATUS_ONGOING       HAL_PCCARD_STATUS_ONGOING
00228 #define HAL_CF_STATUS_ERROR         HAL_PCCARD_STATUS_ERROR
00229 #define HAL_CF_STATUS_TIMEOUT       HAL_PCCARD_STATUS_TIMEOUT
00230 #define HAL_CF_StatusTypeDef        HAL_PCCARD_StatusTypeDef
00231 
00232 #define CF_DEVICE_ADDRESS           PCCARD_DEVICE_ADDRESS
00233 #define CF_ATTRIBUTE_SPACE_ADDRESS  PCCARD_ATTRIBUTE_SPACE_ADDRESS
00234 #define CF_COMMON_SPACE_ADDRESS     PCCARD_COMMON_SPACE_ADDRESS   
00235 #define CF_IO_SPACE_ADDRESS         PCCARD_IO_SPACE_ADDRESS       
00236 #define CF_IO_SPACE_PRIMARY_ADDR    PCCARD_IO_SPACE_PRIMARY_ADDR  
00237 
00238 #define CF_TIMEOUT_ERROR            PCCARD_TIMEOUT_ERROR
00239 #define CF_BUSY                     PCCARD_BUSY         
00240 #define CF_PROGR                    PCCARD_PROGR        
00241 #define CF_READY                    PCCARD_READY        
00242 
00243 #define CF_SECTOR_SIZE              PCCARD_SECTOR_SIZE
00244 
00245 /* Private macros ------------------------------------------------------------*/
00246 /**
00247   * @}
00248   */
00249 
00250 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx ||\
00251           STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */
00252 
00253 
00254 /**
00255   * @}
00256   */
00257   
00258 #ifdef __cplusplus
00259 }
00260 #endif
00261 
00262 #endif /* __STM32F4xx_HAL_PCCARD_H */
00263 
00264 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/