]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M4F_STM32F407ZG-SK/Libraries/STM32F4xx_StdPeriph_Driver/inc/stm32f4xx_spi.h
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / CORTEX_M4F_STM32F407ZG-SK / Libraries / STM32F4xx_StdPeriph_Driver / inc / stm32f4xx_spi.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f4xx_spi.h\r
4   * @author  MCD Application Team\r
5   * @version V1.0.0\r
6   * @date    30-September-2011\r
7   * @brief   This file contains all the functions prototypes for the SPI \r
8   *          firmware library.\r
9   ******************************************************************************\r
10   * @attention\r
11   *\r
12   * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
13   * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE\r
14   * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY\r
15   * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING\r
16   * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE\r
17   * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
18   *\r
19   * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>\r
20   ******************************************************************************  \r
21   */ \r
22 \r
23 /* Define to prevent recursive inclusion -------------------------------------*/\r
24 #ifndef __STM32F4xx_SPI_H\r
25 #define __STM32F4xx_SPI_H\r
26 \r
27 #ifdef __cplusplus\r
28  extern "C" {\r
29 #endif\r
30 \r
31 /* Includes ------------------------------------------------------------------*/\r
32 #include "stm32f4xx.h"\r
33 \r
34 /** @addtogroup STM32F4xx_StdPeriph_Driver\r
35   * @{\r
36   */\r
37 \r
38 /** @addtogroup SPI\r
39   * @{\r
40   */ \r
41 \r
42 /* Exported types ------------------------------------------------------------*/\r
43 \r
44 /** \r
45   * @brief  SPI Init structure definition  \r
46   */\r
47 \r
48 typedef struct\r
49 {\r
50   uint16_t SPI_Direction;           /*!< Specifies the SPI unidirectional or bidirectional data mode.\r
51                                          This parameter can be a value of @ref SPI_data_direction */\r
52 \r
53   uint16_t SPI_Mode;                /*!< Specifies the SPI operating mode.\r
54                                          This parameter can be a value of @ref SPI_mode */\r
55 \r
56   uint16_t SPI_DataSize;            /*!< Specifies the SPI data size.\r
57                                          This parameter can be a value of @ref SPI_data_size */\r
58 \r
59   uint16_t SPI_CPOL;                /*!< Specifies the serial clock steady state.\r
60                                          This parameter can be a value of @ref SPI_Clock_Polarity */\r
61 \r
62   uint16_t SPI_CPHA;                /*!< Specifies the clock active edge for the bit capture.\r
63                                          This parameter can be a value of @ref SPI_Clock_Phase */\r
64 \r
65   uint16_t SPI_NSS;                 /*!< Specifies whether the NSS signal is managed by\r
66                                          hardware (NSS pin) or by software using the SSI bit.\r
67                                          This parameter can be a value of @ref SPI_Slave_Select_management */\r
68  \r
69   uint16_t SPI_BaudRatePrescaler;   /*!< Specifies the Baud Rate prescaler value which will be\r
70                                          used to configure the transmit and receive SCK clock.\r
71                                          This parameter can be a value of @ref SPI_BaudRate_Prescaler\r
72                                          @note The communication clock is derived from the master\r
73                                                clock. The slave clock does not need to be set. */\r
74 \r
75   uint16_t SPI_FirstBit;            /*!< Specifies whether data transfers start from MSB or LSB bit.\r
76                                          This parameter can be a value of @ref SPI_MSB_LSB_transmission */\r
77 \r
78   uint16_t SPI_CRCPolynomial;       /*!< Specifies the polynomial used for the CRC calculation. */\r
79 }SPI_InitTypeDef;\r
80 \r
81 /** \r
82   * @brief  I2S Init structure definition  \r
83   */\r
84 \r
85 typedef struct\r
86 {\r
87 \r
88   uint16_t I2S_Mode;         /*!< Specifies the I2S operating mode.\r
89                                   This parameter can be a value of @ref I2S_Mode */\r
90 \r
91   uint16_t I2S_Standard;     /*!< Specifies the standard used for the I2S communication.\r
92                                   This parameter can be a value of @ref I2S_Standard */\r
93 \r
94   uint16_t I2S_DataFormat;   /*!< Specifies the data format for the I2S communication.\r
95                                   This parameter can be a value of @ref I2S_Data_Format */\r
96 \r
97   uint16_t I2S_MCLKOutput;   /*!< Specifies whether the I2S MCLK output is enabled or not.\r
98                                   This parameter can be a value of @ref I2S_MCLK_Output */\r
99 \r
100   uint32_t I2S_AudioFreq;    /*!< Specifies the frequency selected for the I2S communication.\r
101                                   This parameter can be a value of @ref I2S_Audio_Frequency */\r
102 \r
103   uint16_t I2S_CPOL;         /*!< Specifies the idle state of the I2S clock.\r
104                                   This parameter can be a value of @ref I2S_Clock_Polarity */\r
105 }I2S_InitTypeDef;\r
106 \r
107 /* Exported constants --------------------------------------------------------*/\r
108 \r
109 /** @defgroup SPI_Exported_Constants\r
110   * @{\r
111   */\r
112 \r
113 #define IS_SPI_ALL_PERIPH(PERIPH) (((PERIPH) == SPI1) || \\r
114                                    ((PERIPH) == SPI2) || \\r
115                                    ((PERIPH) == SPI3))\r
116 \r
117 #define IS_SPI_ALL_PERIPH_EXT(PERIPH) (((PERIPH) == SPI1) || \\r
118                                        ((PERIPH) == SPI2) || \\r
119                                        ((PERIPH) == SPI3) || \\r
120                                        ((PERIPH) == I2S2ext) || \\r
121                                        ((PERIPH) == I2S3ext))\r
122 \r
123 #define IS_SPI_23_PERIPH(PERIPH)  (((PERIPH) == SPI2) || \\r
124                                    ((PERIPH) == SPI3))\r
125 \r
126 #define IS_SPI_23_PERIPH_EXT(PERIPH)  (((PERIPH) == SPI2) || \\r
127                                        ((PERIPH) == SPI3) || \\r
128                                        ((PERIPH) == I2S2ext) || \\r
129                                        ((PERIPH) == I2S3ext))\r
130 \r
131 #define IS_I2S_EXT_PERIPH(PERIPH)  (((PERIPH) == I2S2ext) || \\r
132                                     ((PERIPH) == I2S3ext))\r
133 \r
134 \r
135 /** @defgroup SPI_data_direction \r
136   * @{\r
137   */\r
138   \r
139 #define SPI_Direction_2Lines_FullDuplex ((uint16_t)0x0000)\r
140 #define SPI_Direction_2Lines_RxOnly     ((uint16_t)0x0400)\r
141 #define SPI_Direction_1Line_Rx          ((uint16_t)0x8000)\r
142 #define SPI_Direction_1Line_Tx          ((uint16_t)0xC000)\r
143 #define IS_SPI_DIRECTION_MODE(MODE) (((MODE) == SPI_Direction_2Lines_FullDuplex) || \\r
144                                      ((MODE) == SPI_Direction_2Lines_RxOnly) || \\r
145                                      ((MODE) == SPI_Direction_1Line_Rx) || \\r
146                                      ((MODE) == SPI_Direction_1Line_Tx))\r
147 /**\r
148   * @}\r
149   */\r
150 \r
151 /** @defgroup SPI_mode \r
152   * @{\r
153   */\r
154 \r
155 #define SPI_Mode_Master                 ((uint16_t)0x0104)\r
156 #define SPI_Mode_Slave                  ((uint16_t)0x0000)\r
157 #define IS_SPI_MODE(MODE) (((MODE) == SPI_Mode_Master) || \\r
158                            ((MODE) == SPI_Mode_Slave))\r
159 /**\r
160   * @}\r
161   */\r
162 \r
163 /** @defgroup SPI_data_size \r
164   * @{\r
165   */\r
166 \r
167 #define SPI_DataSize_16b                ((uint16_t)0x0800)\r
168 #define SPI_DataSize_8b                 ((uint16_t)0x0000)\r
169 #define IS_SPI_DATASIZE(DATASIZE) (((DATASIZE) == SPI_DataSize_16b) || \\r
170                                    ((DATASIZE) == SPI_DataSize_8b))\r
171 /**\r
172   * @}\r
173   */ \r
174 \r
175 /** @defgroup SPI_Clock_Polarity \r
176   * @{\r
177   */\r
178 \r
179 #define SPI_CPOL_Low                    ((uint16_t)0x0000)\r
180 #define SPI_CPOL_High                   ((uint16_t)0x0002)\r
181 #define IS_SPI_CPOL(CPOL) (((CPOL) == SPI_CPOL_Low) || \\r
182                            ((CPOL) == SPI_CPOL_High))\r
183 /**\r
184   * @}\r
185   */\r
186 \r
187 /** @defgroup SPI_Clock_Phase \r
188   * @{\r
189   */\r
190 \r
191 #define SPI_CPHA_1Edge                  ((uint16_t)0x0000)\r
192 #define SPI_CPHA_2Edge                  ((uint16_t)0x0001)\r
193 #define IS_SPI_CPHA(CPHA) (((CPHA) == SPI_CPHA_1Edge) || \\r
194                            ((CPHA) == SPI_CPHA_2Edge))\r
195 /**\r
196   * @}\r
197   */\r
198 \r
199 /** @defgroup SPI_Slave_Select_management \r
200   * @{\r
201   */\r
202 \r
203 #define SPI_NSS_Soft                    ((uint16_t)0x0200)\r
204 #define SPI_NSS_Hard                    ((uint16_t)0x0000)\r
205 #define IS_SPI_NSS(NSS) (((NSS) == SPI_NSS_Soft) || \\r
206                          ((NSS) == SPI_NSS_Hard))\r
207 /**\r
208   * @}\r
209   */ \r
210 \r
211 /** @defgroup SPI_BaudRate_Prescaler \r
212   * @{\r
213   */\r
214 \r
215 #define SPI_BaudRatePrescaler_2         ((uint16_t)0x0000)\r
216 #define SPI_BaudRatePrescaler_4         ((uint16_t)0x0008)\r
217 #define SPI_BaudRatePrescaler_8         ((uint16_t)0x0010)\r
218 #define SPI_BaudRatePrescaler_16        ((uint16_t)0x0018)\r
219 #define SPI_BaudRatePrescaler_32        ((uint16_t)0x0020)\r
220 #define SPI_BaudRatePrescaler_64        ((uint16_t)0x0028)\r
221 #define SPI_BaudRatePrescaler_128       ((uint16_t)0x0030)\r
222 #define SPI_BaudRatePrescaler_256       ((uint16_t)0x0038)\r
223 #define IS_SPI_BAUDRATE_PRESCALER(PRESCALER) (((PRESCALER) == SPI_BaudRatePrescaler_2) || \\r
224                                               ((PRESCALER) == SPI_BaudRatePrescaler_4) || \\r
225                                               ((PRESCALER) == SPI_BaudRatePrescaler_8) || \\r
226                                               ((PRESCALER) == SPI_BaudRatePrescaler_16) || \\r
227                                               ((PRESCALER) == SPI_BaudRatePrescaler_32) || \\r
228                                               ((PRESCALER) == SPI_BaudRatePrescaler_64) || \\r
229                                               ((PRESCALER) == SPI_BaudRatePrescaler_128) || \\r
230                                               ((PRESCALER) == SPI_BaudRatePrescaler_256))\r
231 /**\r
232   * @}\r
233   */ \r
234 \r
235 /** @defgroup SPI_MSB_LSB_transmission \r
236   * @{\r
237   */\r
238 \r
239 #define SPI_FirstBit_MSB                ((uint16_t)0x0000)\r
240 #define SPI_FirstBit_LSB                ((uint16_t)0x0080)\r
241 #define IS_SPI_FIRST_BIT(BIT) (((BIT) == SPI_FirstBit_MSB) || \\r
242                                ((BIT) == SPI_FirstBit_LSB))\r
243 /**\r
244   * @}\r
245   */\r
246 \r
247 /** @defgroup SPI_I2S_Mode \r
248   * @{\r
249   */\r
250 \r
251 #define I2S_Mode_SlaveTx                ((uint16_t)0x0000)\r
252 #define I2S_Mode_SlaveRx                ((uint16_t)0x0100)\r
253 #define I2S_Mode_MasterTx               ((uint16_t)0x0200)\r
254 #define I2S_Mode_MasterRx               ((uint16_t)0x0300)\r
255 #define IS_I2S_MODE(MODE) (((MODE) == I2S_Mode_SlaveTx) || \\r
256                            ((MODE) == I2S_Mode_SlaveRx) || \\r
257                            ((MODE) == I2S_Mode_MasterTx)|| \\r
258                            ((MODE) == I2S_Mode_MasterRx))\r
259 /**\r
260   * @}\r
261   */\r
262   \r
263 \r
264 /** @defgroup SPI_I2S_Standard \r
265   * @{\r
266   */\r
267 \r
268 #define I2S_Standard_Phillips           ((uint16_t)0x0000)\r
269 #define I2S_Standard_MSB                ((uint16_t)0x0010)\r
270 #define I2S_Standard_LSB                ((uint16_t)0x0020)\r
271 #define I2S_Standard_PCMShort           ((uint16_t)0x0030)\r
272 #define I2S_Standard_PCMLong            ((uint16_t)0x00B0)\r
273 #define IS_I2S_STANDARD(STANDARD) (((STANDARD) == I2S_Standard_Phillips) || \\r
274                                    ((STANDARD) == I2S_Standard_MSB) || \\r
275                                    ((STANDARD) == I2S_Standard_LSB) || \\r
276                                    ((STANDARD) == I2S_Standard_PCMShort) || \\r
277                                    ((STANDARD) == I2S_Standard_PCMLong))\r
278 /**\r
279   * @}\r
280   */\r
281   \r
282 /** @defgroup SPI_I2S_Data_Format \r
283   * @{\r
284   */\r
285 \r
286 #define I2S_DataFormat_16b              ((uint16_t)0x0000)\r
287 #define I2S_DataFormat_16bextended      ((uint16_t)0x0001)\r
288 #define I2S_DataFormat_24b              ((uint16_t)0x0003)\r
289 #define I2S_DataFormat_32b              ((uint16_t)0x0005)\r
290 #define IS_I2S_DATA_FORMAT(FORMAT) (((FORMAT) == I2S_DataFormat_16b) || \\r
291                                     ((FORMAT) == I2S_DataFormat_16bextended) || \\r
292                                     ((FORMAT) == I2S_DataFormat_24b) || \\r
293                                     ((FORMAT) == I2S_DataFormat_32b))\r
294 /**\r
295   * @}\r
296   */\r
297 \r
298 /** @defgroup SPI_I2S_MCLK_Output \r
299   * @{\r
300   */\r
301 \r
302 #define I2S_MCLKOutput_Enable           ((uint16_t)0x0200)\r
303 #define I2S_MCLKOutput_Disable          ((uint16_t)0x0000)\r
304 #define IS_I2S_MCLK_OUTPUT(OUTPUT) (((OUTPUT) == I2S_MCLKOutput_Enable) || \\r
305                                     ((OUTPUT) == I2S_MCLKOutput_Disable))\r
306 /**\r
307   * @}\r
308   */\r
309 \r
310 /** @defgroup SPI_I2S_Audio_Frequency \r
311   * @{\r
312   */\r
313 \r
314 #define I2S_AudioFreq_192k               ((uint32_t)192000)\r
315 #define I2S_AudioFreq_96k                ((uint32_t)96000)\r
316 #define I2S_AudioFreq_48k                ((uint32_t)48000)\r
317 #define I2S_AudioFreq_44k                ((uint32_t)44100)\r
318 #define I2S_AudioFreq_32k                ((uint32_t)32000)\r
319 #define I2S_AudioFreq_22k                ((uint32_t)22050)\r
320 #define I2S_AudioFreq_16k                ((uint32_t)16000)\r
321 #define I2S_AudioFreq_11k                ((uint32_t)11025)\r
322 #define I2S_AudioFreq_8k                 ((uint32_t)8000)\r
323 #define I2S_AudioFreq_Default            ((uint32_t)2)\r
324 \r
325 #define IS_I2S_AUDIO_FREQ(FREQ) ((((FREQ) >= I2S_AudioFreq_8k) && \\r
326                                  ((FREQ) <= I2S_AudioFreq_192k)) || \\r
327                                  ((FREQ) == I2S_AudioFreq_Default))\r
328 /**\r
329   * @}\r
330   */\r
331             \r
332 /** @defgroup SPI_I2S_Clock_Polarity \r
333   * @{\r
334   */\r
335 \r
336 #define I2S_CPOL_Low                    ((uint16_t)0x0000)\r
337 #define I2S_CPOL_High                   ((uint16_t)0x0008)\r
338 #define IS_I2S_CPOL(CPOL) (((CPOL) == I2S_CPOL_Low) || \\r
339                            ((CPOL) == I2S_CPOL_High))\r
340 /**\r
341   * @}\r
342   */\r
343 \r
344 /** @defgroup SPI_I2S_DMA_transfer_requests \r
345   * @{\r
346   */\r
347 \r
348 #define SPI_I2S_DMAReq_Tx               ((uint16_t)0x0002)\r
349 #define SPI_I2S_DMAReq_Rx               ((uint16_t)0x0001)\r
350 #define IS_SPI_I2S_DMAREQ(DMAREQ) ((((DMAREQ) & (uint16_t)0xFFFC) == 0x00) && ((DMAREQ) != 0x00))\r
351 /**\r
352   * @}\r
353   */\r
354 \r
355 /** @defgroup SPI_NSS_internal_software_management \r
356   * @{\r
357   */\r
358 \r
359 #define SPI_NSSInternalSoft_Set         ((uint16_t)0x0100)\r
360 #define SPI_NSSInternalSoft_Reset       ((uint16_t)0xFEFF)\r
361 #define IS_SPI_NSS_INTERNAL(INTERNAL) (((INTERNAL) == SPI_NSSInternalSoft_Set) || \\r
362                                        ((INTERNAL) == SPI_NSSInternalSoft_Reset))\r
363 /**\r
364   * @}\r
365   */\r
366 \r
367 /** @defgroup SPI_CRC_Transmit_Receive \r
368   * @{\r
369   */\r
370 \r
371 #define SPI_CRC_Tx                      ((uint8_t)0x00)\r
372 #define SPI_CRC_Rx                      ((uint8_t)0x01)\r
373 #define IS_SPI_CRC(CRC) (((CRC) == SPI_CRC_Tx) || ((CRC) == SPI_CRC_Rx))\r
374 /**\r
375   * @}\r
376   */\r
377 \r
378 /** @defgroup SPI_direction_transmit_receive \r
379   * @{\r
380   */\r
381 \r
382 #define SPI_Direction_Rx                ((uint16_t)0xBFFF)\r
383 #define SPI_Direction_Tx                ((uint16_t)0x4000)\r
384 #define IS_SPI_DIRECTION(DIRECTION) (((DIRECTION) == SPI_Direction_Rx) || \\r
385                                      ((DIRECTION) == SPI_Direction_Tx))\r
386 /**\r
387   * @}\r
388   */\r
389 \r
390 /** @defgroup SPI_I2S_interrupts_definition \r
391   * @{\r
392   */\r
393 \r
394 #define SPI_I2S_IT_TXE                  ((uint8_t)0x71)\r
395 #define SPI_I2S_IT_RXNE                 ((uint8_t)0x60)\r
396 #define SPI_I2S_IT_ERR                  ((uint8_t)0x50)\r
397 #define I2S_IT_UDR                      ((uint8_t)0x53)\r
398 #define SPI_I2S_IT_TIFRFE               ((uint8_t)0x58)\r
399 \r
400 #define IS_SPI_I2S_CONFIG_IT(IT) (((IT) == SPI_I2S_IT_TXE) || \\r
401                                   ((IT) == SPI_I2S_IT_RXNE) || \\r
402                                   ((IT) == SPI_I2S_IT_ERR))\r
403 \r
404 #define SPI_I2S_IT_OVR                  ((uint8_t)0x56)\r
405 #define SPI_IT_MODF                     ((uint8_t)0x55)\r
406 #define SPI_IT_CRCERR                   ((uint8_t)0x54)\r
407 \r
408 #define IS_SPI_I2S_CLEAR_IT(IT) (((IT) == SPI_IT_CRCERR))\r
409 \r
410 #define IS_SPI_I2S_GET_IT(IT) (((IT) == SPI_I2S_IT_RXNE)|| ((IT) == SPI_I2S_IT_TXE) || \\r
411                                ((IT) == SPI_IT_CRCERR)  || ((IT) == SPI_IT_MODF) || \\r
412                                ((IT) == SPI_I2S_IT_OVR) || ((IT) == I2S_IT_UDR) ||\\r
413                                ((IT) == SPI_I2S_IT_TIFRFE))\r
414 /**\r
415   * @}\r
416   */\r
417 \r
418 /** @defgroup SPI_I2S_flags_definition \r
419   * @{\r
420   */\r
421 \r
422 #define SPI_I2S_FLAG_RXNE               ((uint16_t)0x0001)\r
423 #define SPI_I2S_FLAG_TXE                ((uint16_t)0x0002)\r
424 #define I2S_FLAG_CHSIDE                 ((uint16_t)0x0004)\r
425 #define I2S_FLAG_UDR                    ((uint16_t)0x0008)\r
426 #define SPI_FLAG_CRCERR                 ((uint16_t)0x0010)\r
427 #define SPI_FLAG_MODF                   ((uint16_t)0x0020)\r
428 #define SPI_I2S_FLAG_OVR                ((uint16_t)0x0040)\r
429 #define SPI_I2S_FLAG_BSY                ((uint16_t)0x0080)\r
430 #define SPI_I2S_FLAG_TIFRFE             ((uint16_t)0x0100)\r
431 \r
432 #define IS_SPI_I2S_CLEAR_FLAG(FLAG) (((FLAG) == SPI_FLAG_CRCERR))\r
433 #define IS_SPI_I2S_GET_FLAG(FLAG) (((FLAG) == SPI_I2S_FLAG_BSY) || ((FLAG) == SPI_I2S_FLAG_OVR) || \\r
434                                    ((FLAG) == SPI_FLAG_MODF) || ((FLAG) == SPI_FLAG_CRCERR) || \\r
435                                    ((FLAG) == I2S_FLAG_UDR) || ((FLAG) == I2S_FLAG_CHSIDE) || \\r
436                                    ((FLAG) == SPI_I2S_FLAG_TXE) || ((FLAG) == SPI_I2S_FLAG_RXNE)|| \\r
437                                    ((FLAG) == SPI_I2S_FLAG_TIFRFE))\r
438 /**\r
439   * @}\r
440   */\r
441 \r
442 /** @defgroup SPI_CRC_polynomial \r
443   * @{\r
444   */\r
445 \r
446 #define IS_SPI_CRC_POLYNOMIAL(POLYNOMIAL) ((POLYNOMIAL) >= 0x1)\r
447 /**\r
448   * @}\r
449   */\r
450 \r
451 /** @defgroup SPI_I2S_Legacy \r
452   * @{\r
453   */\r
454 \r
455 #define SPI_DMAReq_Tx                SPI_I2S_DMAReq_Tx\r
456 #define SPI_DMAReq_Rx                SPI_I2S_DMAReq_Rx\r
457 #define SPI_IT_TXE                   SPI_I2S_IT_TXE\r
458 #define SPI_IT_RXNE                  SPI_I2S_IT_RXNE\r
459 #define SPI_IT_ERR                   SPI_I2S_IT_ERR\r
460 #define SPI_IT_OVR                   SPI_I2S_IT_OVR\r
461 #define SPI_FLAG_RXNE                SPI_I2S_FLAG_RXNE\r
462 #define SPI_FLAG_TXE                 SPI_I2S_FLAG_TXE\r
463 #define SPI_FLAG_OVR                 SPI_I2S_FLAG_OVR\r
464 #define SPI_FLAG_BSY                 SPI_I2S_FLAG_BSY\r
465 #define SPI_DeInit                   SPI_I2S_DeInit\r
466 #define SPI_ITConfig                 SPI_I2S_ITConfig\r
467 #define SPI_DMACmd                   SPI_I2S_DMACmd\r
468 #define SPI_SendData                 SPI_I2S_SendData\r
469 #define SPI_ReceiveData              SPI_I2S_ReceiveData\r
470 #define SPI_GetFlagStatus            SPI_I2S_GetFlagStatus\r
471 #define SPI_ClearFlag                SPI_I2S_ClearFlag\r
472 #define SPI_GetITStatus              SPI_I2S_GetITStatus\r
473 #define SPI_ClearITPendingBit        SPI_I2S_ClearITPendingBit\r
474 /**\r
475   * @}\r
476   */\r
477   \r
478 /**\r
479   * @}\r
480   */\r
481 \r
482 /* Exported macro ------------------------------------------------------------*/\r
483 /* Exported functions --------------------------------------------------------*/ \r
484 \r
485 /*  Function used to set the SPI configuration to the default reset state *****/ \r
486 void SPI_I2S_DeInit(SPI_TypeDef* SPIx);\r
487 \r
488 /* Initialization and Configuration functions *********************************/\r
489 void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct);\r
490 void I2S_Init(SPI_TypeDef* SPIx, I2S_InitTypeDef* I2S_InitStruct);\r
491 void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct);\r
492 void I2S_StructInit(I2S_InitTypeDef* I2S_InitStruct);\r
493 void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState);\r
494 void I2S_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState);\r
495 void SPI_DataSizeConfig(SPI_TypeDef* SPIx, uint16_t SPI_DataSize);\r
496 void SPI_BiDirectionalLineConfig(SPI_TypeDef* SPIx, uint16_t SPI_Direction);\r
497 void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, uint16_t SPI_NSSInternalSoft);\r
498 void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState);\r
499 void SPI_TIModeCmd(SPI_TypeDef* SPIx, FunctionalState NewState);\r
500 \r
501 void I2S_FullDuplexConfig(SPI_TypeDef* I2Sxext, I2S_InitTypeDef* I2S_InitStruct);\r
502 \r
503 /* Data transfers functions ***************************************************/ \r
504 void SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data);\r
505 uint16_t SPI_I2S_ReceiveData(SPI_TypeDef* SPIx);\r
506 \r
507 /* Hardware CRC Calculation functions *****************************************/\r
508 void SPI_CalculateCRC(SPI_TypeDef* SPIx, FunctionalState NewState);\r
509 void SPI_TransmitCRC(SPI_TypeDef* SPIx);\r
510 uint16_t SPI_GetCRC(SPI_TypeDef* SPIx, uint8_t SPI_CRC);\r
511 uint16_t SPI_GetCRCPolynomial(SPI_TypeDef* SPIx);\r
512 \r
513 /* DMA transfers management functions *****************************************/\r
514 void SPI_I2S_DMACmd(SPI_TypeDef* SPIx, uint16_t SPI_I2S_DMAReq, FunctionalState NewState);\r
515 \r
516 /* Interrupts and flags management functions **********************************/\r
517 void SPI_I2S_ITConfig(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT, FunctionalState NewState);\r
518 FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG);\r
519 void SPI_I2S_ClearFlag(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG);\r
520 ITStatus SPI_I2S_GetITStatus(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT);\r
521 void SPI_I2S_ClearITPendingBit(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT);\r
522 \r
523 #ifdef __cplusplus\r
524 }\r
525 #endif\r
526 \r
527 #endif /*__STM32F4xx_SPI_H */\r
528 \r
529 /**\r
530   * @}\r
531   */\r
532 \r
533 /**\r
534   * @}\r
535   */\r
536 \r
537 /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/\r