Subversion Repositories DashDisplay

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32f1xx_hal_pccard.h
  4.   * @author  MCD Application Team
  5.   * @version V1.0.4
  6.   * @date    29-April-2016
  7.   * @brief   Header file of PCCARD HAL module.
  8.   ******************************************************************************
  9.   * @attention
  10.   *
  11.   * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
  12.   *
  13.   * Redistribution and use in source and binary forms, with or without modification,
  14.   * are permitted provided that the following conditions are met:
  15.   *   1. Redistributions of source code must retain the above copyright notice,
  16.   *      this list of conditions and the following disclaimer.
  17.   *   2. Redistributions in binary form must reproduce the above copyright notice,
  18.   *      this list of conditions and the following disclaimer in the documentation
  19.   *      and/or other materials provided with the distribution.
  20.   *   3. Neither the name of STMicroelectronics nor the names of its contributors
  21.   *      may be used to endorse or promote products derived from this software
  22.   *      without specific prior written permission.
  23.   *
  24.   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  25.   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  26.   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  27.   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  28.   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  29.   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  30.   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  31.   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  32.   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  33.   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  34.   *
  35.   ******************************************************************************
  36.   */
  37.  
  38. /* Define to prevent recursive inclusion -------------------------------------*/
  39. #ifndef __STM32F1xx_HAL_PCCARD_H
  40. #define __STM32F1xx_HAL_PCCARD_H
  41.  
  42. #ifdef __cplusplus
  43.  extern "C" {
  44. #endif
  45.  
  46. /* Includes ------------------------------------------------------------------*/
  47. #include "stm32f1xx_ll_fsmc.h"
  48.  
  49. /** @addtogroup STM32F1xx_HAL_Driver
  50.   * @{
  51.   */
  52.  
  53. #if defined (STM32F101xE) || defined(STM32F103xE) || defined(STM32F101xG) || defined(STM32F103xG)
  54. /** @addtogroup PCCARD
  55.   * @{
  56.   */
  57.  
  58. /** @addtogroup PCCARD_Private_Constants
  59.   * @{
  60.   */
  61.  
  62. #define PCCARD_DEVICE_ADDRESS           FSMC_BANK4
  63. #define PCCARD_ATTRIBUTE_SPACE_ADDRESS  ((uint32_t)(FSMC_BANK4 + 0x08000000))  /* Attribute space size to @0x9BFF FFFF */
  64. #define PCCARD_COMMON_SPACE_ADDRESS     PCCARD_DEVICE_ADDRESS                           /* Common space size to @0x93FF FFFF    */
  65. #define PCCARD_IO_SPACE_ADDRESS         ((uint32_t)(FSMC_BANK4 + 0x0C000000))  /* IO space size to @0x9FFF FFFF        */
  66. #define PCCARD_IO_SPACE_PRIMARY_ADDR    ((uint32_t)(FSMC_BANK4 + 0x0C0001F0))  /* IO space size to @0x9FFF FFFF        */
  67.  
  68. /* Compact Flash-ATA registers description */
  69. #define ATA_DATA                        ((uint8_t)0x00)    /* Data register */
  70. #define ATA_SECTOR_COUNT                ((uint8_t)0x02)    /* Sector Count register */
  71. #define ATA_SECTOR_NUMBER               ((uint8_t)0x03)    /* Sector Number register */
  72. #define ATA_CYLINDER_LOW                ((uint8_t)0x04)    /* Cylinder low register */
  73. #define ATA_CYLINDER_HIGH               ((uint8_t)0x05)    /* Cylinder high register */
  74. #define ATA_CARD_HEAD                   ((uint8_t)0x06)    /* Card/Head register */
  75. #define ATA_STATUS_CMD                  ((uint8_t)0x07)    /* Status(read)/Command(write) register */
  76. #define ATA_STATUS_CMD_ALTERNATE        ((uint8_t)0x0E)    /* Alternate Status(read)/Command(write) register */
  77. #define ATA_COMMON_DATA_AREA            ((uint16_t)0x0400) /* Start of data area (for Common access only!) */
  78. #define ATA_CARD_CONFIGURATION          ((uint16_t)0x0202) /* Card Configuration and Status Register */
  79.  
  80. /* Compact Flash-ATA commands */
  81. #define ATA_READ_SECTOR_CMD             ((uint8_t)0x20)
  82. #define ATA_WRITE_SECTOR_CMD            ((uint8_t)0x30)
  83. #define ATA_ERASE_SECTOR_CMD            ((uint8_t)0xC0)
  84. #define ATA_IDENTIFY_CMD                ((uint8_t)0xEC)
  85.  
  86. /* Compact Flash status */
  87. #define PCCARD_TIMEOUT_ERROR            ((uint8_t)0x60)
  88. #define PCCARD_BUSY                     ((uint8_t)0x80)
  89. #define PCCARD_PROGR                    ((uint8_t)0x01)
  90. #define PCCARD_READY                    ((uint8_t)0x40)
  91.  
  92. #define PCCARD_SECTOR_SIZE              ((uint32_t)255)    /* In half words */
  93.  
  94.  
  95. /* Compact Flash redefinition */
  96. #define HAL_CF_Read_ID              HAL_PCCARD_Read_ID
  97. #define HAL_CF_Write_Sector         HAL_PCCARD_Write_Sector
  98. #define HAL_CF_Read_Sector          HAL_PCCARD_Read_Sector
  99. #define HAL_CF_Erase_Sector         HAL_PCCARD_Erase_Sector
  100. #define HAL_CF_Reset                HAL_PCCARD_Reset
  101.                                        
  102. #define HAL_CF_GetStatus            HAL_PCCARD_GetStatus
  103. #define HAL_CF_ReadStatus           HAL_PCCARD_ReadStatus
  104.                                        
  105. #define CF_SUCCESS                  HAL_PCCARD_STATUS_SUCCESS
  106. #define CF_ONGOING                  HAL_PCCARD_STATUS_ONGOING
  107. #define CF_ERROR                    HAL_PCCARD_STATUS_ERROR
  108. #define CF_TIMEOUT                  HAL_PCCARD_STATUS_TIMEOUT
  109. #define CF_StatusTypedef            HAL_PCCARD_StatusTypeDef
  110.  
  111.  
  112. #define CF_DEVICE_ADDRESS           PCCARD_DEVICE_ADDRESS              
  113. #define CF_ATTRIBUTE_SPACE_ADDRESS  PCCARD_ATTRIBUTE_SPACE_ADDRESS
  114. #define CF_COMMON_SPACE_ADDRESS     PCCARD_COMMON_SPACE_ADDRESS  
  115. #define CF_IO_SPACE_ADDRESS         PCCARD_IO_SPACE_ADDRESS      
  116. #define CF_IO_SPACE_PRIMARY_ADDR    PCCARD_IO_SPACE_PRIMARY_ADDR  
  117.  
  118. #define CF_TIMEOUT_ERROR            PCCARD_TIMEOUT_ERROR
  119. #define CF_BUSY                     PCCARD_BUSY        
  120. #define CF_PROGR                    PCCARD_PROGR        
  121. #define CF_READY                    PCCARD_READY        
  122.  
  123. #define CF_SECTOR_SIZE              PCCARD_SECTOR_SIZE
  124.  
  125. /**
  126.   * @}
  127.   */
  128.  
  129. /* Exported typedef ----------------------------------------------------------*/
  130. /** @defgroup PCCARD_Exported_Types PCCARD Exported Types
  131.   * @{
  132.   */
  133.  
  134. /**
  135.   * @brief  HAL PCCARD State structures definition  
  136.   */
  137. typedef enum
  138. {
  139.   HAL_PCCARD_STATE_RESET     = 0x00,    /*!< PCCARD peripheral not yet initialized or disabled */
  140.   HAL_PCCARD_STATE_READY     = 0x01,    /*!< PCCARD peripheral ready                           */
  141.   HAL_PCCARD_STATE_BUSY      = 0x02,    /*!< PCCARD peripheral busy                            */  
  142.   HAL_PCCARD_STATE_ERROR     = 0x04     /*!< PCCARD peripheral error                           */
  143. }HAL_PCCARD_StateTypeDef;
  144.  
  145. typedef enum
  146. {
  147.   HAL_PCCARD_STATUS_SUCCESS = 0,
  148.   HAL_PCCARD_STATUS_ONGOING,
  149.   HAL_PCCARD_STATUS_ERROR,
  150.   HAL_PCCARD_STATUS_TIMEOUT
  151. }HAL_PCCARD_StatusTypeDef;
  152.  
  153. /**
  154.   * @brief  FSMC_PCCARD handle Structure definition  
  155.   */  
  156. typedef struct
  157. {
  158.   FSMC_PCCARD_TypeDef           *Instance;              /*!< Register base address for PCCARD device          */
  159.  
  160.   FSMC_PCCARD_InitTypeDef       Init;                   /*!< PCCARD device control configuration parameters   */
  161.  
  162.   __IO HAL_PCCARD_StateTypeDef State;                  /*!< PCCARD device access state                       */
  163.    
  164.   HAL_LockTypeDef              Lock;                   /*!< PCCARD Lock                                      */
  165.  
  166. }PCCARD_HandleTypeDef;
  167. /**
  168.   * @}
  169.   */
  170.  
  171. /* Exported constants --------------------------------------------------------*/
  172. /* Exported macro ------------------------------------------------------------*/
  173. /** @defgroup PCCARD_Exported_Macros PCCARD Exported Macros
  174.   * @{
  175.   */
  176.  
  177. /** @brief Reset PCCARD handle state
  178.   * @param  __HANDLE__: specifies the PCCARD handle.
  179.   * @retval None
  180.   */
  181. #define __HAL_PCCARD_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_PCCARD_STATE_RESET)
  182. /**
  183.   * @}
  184.   */
  185.  
  186. /* Exported functions --------------------------------------------------------*/
  187. /** @addtogroup PCCARD_Exported_Functions PCCARD Exported Functions
  188.   * @{
  189.   */
  190.  
  191. /** @addtogroup PCCARD_Exported_Functions_Group1 Initialization and de-initialization functions
  192.   * @{
  193.   */
  194. /* Initialization/de-initialization functions  **********************************/
  195. HAL_StatusTypeDef  HAL_PCCARD_Init(PCCARD_HandleTypeDef *hpccard, FSMC_NAND_PCC_TimingTypeDef *ComSpaceTiming, FSMC_NAND_PCC_TimingTypeDef *AttSpaceTiming, FSMC_NAND_PCC_TimingTypeDef *IOSpaceTiming);
  196. HAL_StatusTypeDef  HAL_PCCARD_DeInit(PCCARD_HandleTypeDef *hpccard);  
  197. void               HAL_PCCARD_MspInit(PCCARD_HandleTypeDef *hpccard);
  198. void               HAL_PCCARD_MspDeInit(PCCARD_HandleTypeDef *hpccard);
  199. /**
  200.   * @}
  201.   */
  202.  
  203. /** @addtogroup PCCARD_Exported_Functions_Group2 Input Output and memory functions
  204.   * @{
  205.   */
  206. /* IO operation functions  *****************************************************/
  207. HAL_StatusTypeDef  HAL_PCCARD_Read_ID(PCCARD_HandleTypeDef *hpccard, uint8_t CompactFlash_ID[], uint8_t *pStatus);
  208. HAL_StatusTypeDef  HAL_PCCARD_Write_Sector(PCCARD_HandleTypeDef *hpccard, uint16_t *pBuffer, uint16_t SectorAddress,  uint8_t *pStatus);
  209. HAL_StatusTypeDef  HAL_PCCARD_Read_Sector(PCCARD_HandleTypeDef *hpccard, uint16_t *pBuffer, uint16_t SectorAddress, uint8_t *pStatus);
  210. HAL_StatusTypeDef  HAL_PCCARD_Erase_Sector(PCCARD_HandleTypeDef *hpccard, uint16_t SectorAddress, uint8_t *pStatus);
  211. HAL_StatusTypeDef  HAL_PCCARD_Reset(PCCARD_HandleTypeDef *hpccard);
  212. void               HAL_PCCARD_IRQHandler(PCCARD_HandleTypeDef *hpccard);
  213. void               HAL_PCCARD_ITCallback(PCCARD_HandleTypeDef *hpccard);
  214.  
  215. /**
  216.   * @}
  217.   */
  218.  
  219. /** @defgroup PCCARD_Exported_Functions_Group3 Peripheral State functions
  220.   * @{
  221.   */
  222. /* PCCARD State functions *******************************************************/
  223. HAL_PCCARD_StateTypeDef  HAL_PCCARD_GetState(PCCARD_HandleTypeDef *hpccard);
  224. HAL_PCCARD_StatusTypeDef HAL_PCCARD_GetStatus(PCCARD_HandleTypeDef *hpccard);
  225. HAL_PCCARD_StatusTypeDef HAL_PCCARD_ReadStatus(PCCARD_HandleTypeDef *hpccard);
  226. /**
  227.   * @}
  228.   */
  229.  
  230. /**
  231.   * @}
  232.   */
  233.  
  234. /**
  235.   * @}
  236.   */
  237.  
  238. #endif /* STM32F101xE || STM32F103xE || STM32F101xG || STM32F103xG */
  239. /**
  240.   * @}
  241.   */
  242.  
  243. #ifdef __cplusplus
  244. }
  245. #endif
  246.  
  247. #endif /* __STM32F1xx_HAL_PCCARD_H */
  248.  
  249. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
  250.