Subversion Repositories LedShow

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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