Statistics
| Branch: | Tag: | Revision:

amiro-blt / Target / Modules / PowerManagement_1-2 / Boot / lib / stdperiphlib / STM32F4xx_StdPeriph_Driver / inc / stm32f4xx_spi.h @ a270d48f

History | View | Annotate | Download (20.683 KB)

1
/**
2
  ******************************************************************************
3
  * @file    stm32f4xx_spi.h
4
  * @author  MCD Application Team
5
  * @version V1.1.0
6
  * @date    11-January-2013
7
  * @brief   This file contains all the functions prototypes for the SPI 
8
  *          firmware library. 
9
  ******************************************************************************
10
  * @attention
11
  *
12
  * <h2><center>&copy; COPYRIGHT 2013 STMicroelectronics</center></h2>
13
  *
14
  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
15
  * You may not use this file except in compliance with the License.
16
  * You may obtain a copy of the License at:
17
  *
18
  *        http://www.st.com/software_license_agreement_liberty_v2
19
  *
20
  * Unless required by applicable law or agreed to in writing, software 
21
  * distributed under the License is distributed on an "AS IS" BASIS, 
22
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23
  * See the License for the specific language governing permissions and
24
  * limitations under the License.
25
  *
26
  ******************************************************************************  
27
  */ 
28

    
29
/* Define to prevent recursive inclusion -------------------------------------*/
30
#ifndef __STM32F4xx_SPI_H
31
#define __STM32F4xx_SPI_H
32

    
33
#ifdef __cplusplus
34
 extern "C" {
35
#endif
36

    
37
/* Includes ------------------------------------------------------------------*/
38
#include "stm32f4xx.h"
39

    
40
/** @addtogroup STM32F4xx_StdPeriph_Driver
41
  * @{
42
  */
43

    
44
/** @addtogroup SPI
45
  * @{
46
  */ 
47

    
48
/* Exported types ------------------------------------------------------------*/
49

    
50
/** 
51
  * @brief  SPI Init structure definition  
52
  */
53

    
54
typedef struct
55
{
56
  uint16_t SPI_Direction;           /*!< Specifies the SPI unidirectional or bidirectional data mode.
57
                                         This parameter can be a value of @ref SPI_data_direction */
58

    
59
  uint16_t SPI_Mode;                /*!< Specifies the SPI operating mode.
60
                                         This parameter can be a value of @ref SPI_mode */
61

    
62
  uint16_t SPI_DataSize;            /*!< Specifies the SPI data size.
63
                                         This parameter can be a value of @ref SPI_data_size */
64

    
65
  uint16_t SPI_CPOL;                /*!< Specifies the serial clock steady state.
66
                                         This parameter can be a value of @ref SPI_Clock_Polarity */
67

    
68
  uint16_t SPI_CPHA;                /*!< Specifies the clock active edge for the bit capture.
69
                                         This parameter can be a value of @ref SPI_Clock_Phase */
70

    
71
  uint16_t SPI_NSS;                 /*!< Specifies whether the NSS signal is managed by
72
                                         hardware (NSS pin) or by software using the SSI bit.
73
                                         This parameter can be a value of @ref SPI_Slave_Select_management */
74
 
75
  uint16_t SPI_BaudRatePrescaler;   /*!< Specifies the Baud Rate prescaler value which will be
76
                                         used to configure the transmit and receive SCK clock.
77
                                         This parameter can be a value of @ref SPI_BaudRate_Prescaler
78
                                         @note The communication clock is derived from the master
79
                                               clock. The slave clock does not need to be set. */
80

    
81
  uint16_t SPI_FirstBit;            /*!< Specifies whether data transfers start from MSB or LSB bit.
82
                                         This parameter can be a value of @ref SPI_MSB_LSB_transmission */
83

    
84
  uint16_t SPI_CRCPolynomial;       /*!< Specifies the polynomial used for the CRC calculation. */
85
}SPI_InitTypeDef;
86

    
87
/** 
88
  * @brief  I2S Init structure definition  
89
  */
90

    
91
typedef struct
92
{
93

    
94
  uint16_t I2S_Mode;         /*!< Specifies the I2S operating mode.
95
                                  This parameter can be a value of @ref I2S_Mode */
96

    
97
  uint16_t I2S_Standard;     /*!< Specifies the standard used for the I2S communication.
98
                                  This parameter can be a value of @ref I2S_Standard */
99

    
100
  uint16_t I2S_DataFormat;   /*!< Specifies the data format for the I2S communication.
101
                                  This parameter can be a value of @ref I2S_Data_Format */
102

    
103
  uint16_t I2S_MCLKOutput;   /*!< Specifies whether the I2S MCLK output is enabled or not.
104
                                  This parameter can be a value of @ref I2S_MCLK_Output */
105

    
106
  uint32_t I2S_AudioFreq;    /*!< Specifies the frequency selected for the I2S communication.
107
                                  This parameter can be a value of @ref I2S_Audio_Frequency */
108

    
109
  uint16_t I2S_CPOL;         /*!< Specifies the idle state of the I2S clock.
110
                                  This parameter can be a value of @ref I2S_Clock_Polarity */
111
}I2S_InitTypeDef;
112

    
113
/* Exported constants --------------------------------------------------------*/
114

    
115
/** @defgroup SPI_Exported_Constants
116
  * @{
117
  */
118

    
119
#define IS_SPI_ALL_PERIPH(PERIPH) (((PERIPH) == SPI1) || \
120
                                   ((PERIPH) == SPI2) || \
121
                                   ((PERIPH) == SPI3) || \
122
                                   ((PERIPH) == SPI4) || \
123
                                   ((PERIPH) == SPI5) || \
124
                                   ((PERIPH) == SPI6))
125

    
126
#define IS_SPI_ALL_PERIPH_EXT(PERIPH) (((PERIPH) == SPI1)    || \
127
                                       ((PERIPH) == SPI2)    || \
128
                                       ((PERIPH) == SPI3)    || \
129
                                       ((PERIPH) == SPI4)    || \
130
                                       ((PERIPH) == SPI5)    || \
131
                                       ((PERIPH) == SPI6)    || \
132
                                       ((PERIPH) == I2S2ext) || \
133
                                       ((PERIPH) == I2S3ext))
134

    
135
#define IS_SPI_23_PERIPH(PERIPH)  (((PERIPH) == SPI2) || \
136
                                   ((PERIPH) == SPI3))
137

    
138
#define IS_SPI_23_PERIPH_EXT(PERIPH)  (((PERIPH) == SPI2)    || \
139
                                       ((PERIPH) == SPI3)    || \
140
                                       ((PERIPH) == I2S2ext) || \
141
                                       ((PERIPH) == I2S3ext))
142

    
143
#define IS_I2S_EXT_PERIPH(PERIPH)  (((PERIPH) == I2S2ext) || \
144
                                    ((PERIPH) == I2S3ext))
145

    
146

    
147
/** @defgroup SPI_data_direction 
148
  * @{
149
  */
150
  
151
#define SPI_Direction_2Lines_FullDuplex ((uint16_t)0x0000)
152
#define SPI_Direction_2Lines_RxOnly     ((uint16_t)0x0400)
153
#define SPI_Direction_1Line_Rx          ((uint16_t)0x8000)
154
#define SPI_Direction_1Line_Tx          ((uint16_t)0xC000)
155
#define IS_SPI_DIRECTION_MODE(MODE) (((MODE) == SPI_Direction_2Lines_FullDuplex) || \
156
                                     ((MODE) == SPI_Direction_2Lines_RxOnly) || \
157
                                     ((MODE) == SPI_Direction_1Line_Rx) || \
158
                                     ((MODE) == SPI_Direction_1Line_Tx))
159
/**
160
  * @}
161
  */
162

    
163
/** @defgroup SPI_mode 
164
  * @{
165
  */
166

    
167
#define SPI_Mode_Master                 ((uint16_t)0x0104)
168
#define SPI_Mode_Slave                  ((uint16_t)0x0000)
169
#define IS_SPI_MODE(MODE) (((MODE) == SPI_Mode_Master) || \
170
                           ((MODE) == SPI_Mode_Slave))
171
/**
172
  * @}
173
  */
174

    
175
/** @defgroup SPI_data_size 
176
  * @{
177
  */
178

    
179
#define SPI_DataSize_16b                ((uint16_t)0x0800)
180
#define SPI_DataSize_8b                 ((uint16_t)0x0000)
181
#define IS_SPI_DATASIZE(DATASIZE) (((DATASIZE) == SPI_DataSize_16b) || \
182
                                   ((DATASIZE) == SPI_DataSize_8b))
183
/**
184
  * @}
185
  */ 
186

    
187
/** @defgroup SPI_Clock_Polarity 
188
  * @{
189
  */
190

    
191
#define SPI_CPOL_Low                    ((uint16_t)0x0000)
192
#define SPI_CPOL_High                   ((uint16_t)0x0002)
193
#define IS_SPI_CPOL(CPOL) (((CPOL) == SPI_CPOL_Low) || \
194
                           ((CPOL) == SPI_CPOL_High))
195
/**
196
  * @}
197
  */
198

    
199
/** @defgroup SPI_Clock_Phase 
200
  * @{
201
  */
202

    
203
#define SPI_CPHA_1Edge                  ((uint16_t)0x0000)
204
#define SPI_CPHA_2Edge                  ((uint16_t)0x0001)
205
#define IS_SPI_CPHA(CPHA) (((CPHA) == SPI_CPHA_1Edge) || \
206
                           ((CPHA) == SPI_CPHA_2Edge))
207
/**
208
  * @}
209
  */
210

    
211
/** @defgroup SPI_Slave_Select_management 
212
  * @{
213
  */
214

    
215
#define SPI_NSS_Soft                    ((uint16_t)0x0200)
216
#define SPI_NSS_Hard                    ((uint16_t)0x0000)
217
#define IS_SPI_NSS(NSS) (((NSS) == SPI_NSS_Soft) || \
218
                         ((NSS) == SPI_NSS_Hard))
219
/**
220
  * @}
221
  */ 
222

    
223
/** @defgroup SPI_BaudRate_Prescaler 
224
  * @{
225
  */
226

    
227
#define SPI_BaudRatePrescaler_2         ((uint16_t)0x0000)
228
#define SPI_BaudRatePrescaler_4         ((uint16_t)0x0008)
229
#define SPI_BaudRatePrescaler_8         ((uint16_t)0x0010)
230
#define SPI_BaudRatePrescaler_16        ((uint16_t)0x0018)
231
#define SPI_BaudRatePrescaler_32        ((uint16_t)0x0020)
232
#define SPI_BaudRatePrescaler_64        ((uint16_t)0x0028)
233
#define SPI_BaudRatePrescaler_128       ((uint16_t)0x0030)
234
#define SPI_BaudRatePrescaler_256       ((uint16_t)0x0038)
235
#define IS_SPI_BAUDRATE_PRESCALER(PRESCALER) (((PRESCALER) == SPI_BaudRatePrescaler_2) || \
236
                                              ((PRESCALER) == SPI_BaudRatePrescaler_4) || \
237
                                              ((PRESCALER) == SPI_BaudRatePrescaler_8) || \
238
                                              ((PRESCALER) == SPI_BaudRatePrescaler_16) || \
239
                                              ((PRESCALER) == SPI_BaudRatePrescaler_32) || \
240
                                              ((PRESCALER) == SPI_BaudRatePrescaler_64) || \
241
                                              ((PRESCALER) == SPI_BaudRatePrescaler_128) || \
242
                                              ((PRESCALER) == SPI_BaudRatePrescaler_256))
243
/**
244
  * @}
245
  */ 
246

    
247
/** @defgroup SPI_MSB_LSB_transmission 
248
  * @{
249
  */
250

    
251
#define SPI_FirstBit_MSB                ((uint16_t)0x0000)
252
#define SPI_FirstBit_LSB                ((uint16_t)0x0080)
253
#define IS_SPI_FIRST_BIT(BIT) (((BIT) == SPI_FirstBit_MSB) || \
254
                               ((BIT) == SPI_FirstBit_LSB))
255
/**
256
  * @}
257
  */
258

    
259
/** @defgroup SPI_I2S_Mode 
260
  * @{
261
  */
262

    
263
#define I2S_Mode_SlaveTx                ((uint16_t)0x0000)
264
#define I2S_Mode_SlaveRx                ((uint16_t)0x0100)
265
#define I2S_Mode_MasterTx               ((uint16_t)0x0200)
266
#define I2S_Mode_MasterRx               ((uint16_t)0x0300)
267
#define IS_I2S_MODE(MODE) (((MODE) == I2S_Mode_SlaveTx) || \
268
                           ((MODE) == I2S_Mode_SlaveRx) || \
269
                           ((MODE) == I2S_Mode_MasterTx)|| \
270
                           ((MODE) == I2S_Mode_MasterRx))
271
/**
272
  * @}
273
  */
274
  
275

    
276
/** @defgroup SPI_I2S_Standard 
277
  * @{
278
  */
279

    
280
#define I2S_Standard_Phillips           ((uint16_t)0x0000)
281
#define I2S_Standard_MSB                ((uint16_t)0x0010)
282
#define I2S_Standard_LSB                ((uint16_t)0x0020)
283
#define I2S_Standard_PCMShort           ((uint16_t)0x0030)
284
#define I2S_Standard_PCMLong            ((uint16_t)0x00B0)
285
#define IS_I2S_STANDARD(STANDARD) (((STANDARD) == I2S_Standard_Phillips) || \
286
                                   ((STANDARD) == I2S_Standard_MSB) || \
287
                                   ((STANDARD) == I2S_Standard_LSB) || \
288
                                   ((STANDARD) == I2S_Standard_PCMShort) || \
289
                                   ((STANDARD) == I2S_Standard_PCMLong))
290
/**
291
  * @}
292
  */
293
  
294
/** @defgroup SPI_I2S_Data_Format 
295
  * @{
296
  */
297

    
298
#define I2S_DataFormat_16b              ((uint16_t)0x0000)
299
#define I2S_DataFormat_16bextended      ((uint16_t)0x0001)
300
#define I2S_DataFormat_24b              ((uint16_t)0x0003)
301
#define I2S_DataFormat_32b              ((uint16_t)0x0005)
302
#define IS_I2S_DATA_FORMAT(FORMAT) (((FORMAT) == I2S_DataFormat_16b) || \
303
                                    ((FORMAT) == I2S_DataFormat_16bextended) || \
304
                                    ((FORMAT) == I2S_DataFormat_24b) || \
305
                                    ((FORMAT) == I2S_DataFormat_32b))
306
/**
307
  * @}
308
  */
309

    
310
/** @defgroup SPI_I2S_MCLK_Output 
311
  * @{
312
  */
313

    
314
#define I2S_MCLKOutput_Enable           ((uint16_t)0x0200)
315
#define I2S_MCLKOutput_Disable          ((uint16_t)0x0000)
316
#define IS_I2S_MCLK_OUTPUT(OUTPUT) (((OUTPUT) == I2S_MCLKOutput_Enable) || \
317
                                    ((OUTPUT) == I2S_MCLKOutput_Disable))
318
/**
319
  * @}
320
  */
321

    
322
/** @defgroup SPI_I2S_Audio_Frequency 
323
  * @{
324
  */
325

    
326
#define I2S_AudioFreq_192k               ((uint32_t)192000)
327
#define I2S_AudioFreq_96k                ((uint32_t)96000)
328
#define I2S_AudioFreq_48k                ((uint32_t)48000)
329
#define I2S_AudioFreq_44k                ((uint32_t)44100)
330
#define I2S_AudioFreq_32k                ((uint32_t)32000)
331
#define I2S_AudioFreq_22k                ((uint32_t)22050)
332
#define I2S_AudioFreq_16k                ((uint32_t)16000)
333
#define I2S_AudioFreq_11k                ((uint32_t)11025)
334
#define I2S_AudioFreq_8k                 ((uint32_t)8000)
335
#define I2S_AudioFreq_Default            ((uint32_t)2)
336

    
337
#define IS_I2S_AUDIO_FREQ(FREQ) ((((FREQ) >= I2S_AudioFreq_8k) && \
338
                                 ((FREQ) <= I2S_AudioFreq_192k)) || \
339
                                 ((FREQ) == I2S_AudioFreq_Default))
340
/**
341
  * @}
342
  */
343
            
344
/** @defgroup SPI_I2S_Clock_Polarity 
345
  * @{
346
  */
347

    
348
#define I2S_CPOL_Low                    ((uint16_t)0x0000)
349
#define I2S_CPOL_High                   ((uint16_t)0x0008)
350
#define IS_I2S_CPOL(CPOL) (((CPOL) == I2S_CPOL_Low) || \
351
                           ((CPOL) == I2S_CPOL_High))
352
/**
353
  * @}
354
  */
355

    
356
/** @defgroup SPI_I2S_DMA_transfer_requests 
357
  * @{
358
  */
359

    
360
#define SPI_I2S_DMAReq_Tx               ((uint16_t)0x0002)
361
#define SPI_I2S_DMAReq_Rx               ((uint16_t)0x0001)
362
#define IS_SPI_I2S_DMAREQ(DMAREQ) ((((DMAREQ) & (uint16_t)0xFFFC) == 0x00) && ((DMAREQ) != 0x00))
363
/**
364
  * @}
365
  */
366

    
367
/** @defgroup SPI_NSS_internal_software_management 
368
  * @{
369
  */
370

    
371
#define SPI_NSSInternalSoft_Set         ((uint16_t)0x0100)
372
#define SPI_NSSInternalSoft_Reset       ((uint16_t)0xFEFF)
373
#define IS_SPI_NSS_INTERNAL(INTERNAL) (((INTERNAL) == SPI_NSSInternalSoft_Set) || \
374
                                       ((INTERNAL) == SPI_NSSInternalSoft_Reset))
375
/**
376
  * @}
377
  */
378

    
379
/** @defgroup SPI_CRC_Transmit_Receive 
380
  * @{
381
  */
382

    
383
#define SPI_CRC_Tx                      ((uint8_t)0x00)
384
#define SPI_CRC_Rx                      ((uint8_t)0x01)
385
#define IS_SPI_CRC(CRC) (((CRC) == SPI_CRC_Tx) || ((CRC) == SPI_CRC_Rx))
386
/**
387
  * @}
388
  */
389

    
390
/** @defgroup SPI_direction_transmit_receive 
391
  * @{
392
  */
393

    
394
#define SPI_Direction_Rx                ((uint16_t)0xBFFF)
395
#define SPI_Direction_Tx                ((uint16_t)0x4000)
396
#define IS_SPI_DIRECTION(DIRECTION) (((DIRECTION) == SPI_Direction_Rx) || \
397
                                     ((DIRECTION) == SPI_Direction_Tx))
398
/**
399
  * @}
400
  */
401

    
402
/** @defgroup SPI_I2S_interrupts_definition 
403
  * @{
404
  */
405

    
406
#define SPI_I2S_IT_TXE                  ((uint8_t)0x71)
407
#define SPI_I2S_IT_RXNE                 ((uint8_t)0x60)
408
#define SPI_I2S_IT_ERR                  ((uint8_t)0x50)
409
#define I2S_IT_UDR                      ((uint8_t)0x53)
410
#define SPI_I2S_IT_TIFRFE               ((uint8_t)0x58)
411

    
412
#define IS_SPI_I2S_CONFIG_IT(IT) (((IT) == SPI_I2S_IT_TXE) || \
413
                                  ((IT) == SPI_I2S_IT_RXNE) || \
414
                                  ((IT) == SPI_I2S_IT_ERR))
415

    
416
#define SPI_I2S_IT_OVR                  ((uint8_t)0x56)
417
#define SPI_IT_MODF                     ((uint8_t)0x55)
418
#define SPI_IT_CRCERR                   ((uint8_t)0x54)
419

    
420
#define IS_SPI_I2S_CLEAR_IT(IT) (((IT) == SPI_IT_CRCERR))
421

    
422
#define IS_SPI_I2S_GET_IT(IT) (((IT) == SPI_I2S_IT_RXNE)|| ((IT) == SPI_I2S_IT_TXE) || \
423
                               ((IT) == SPI_IT_CRCERR)  || ((IT) == SPI_IT_MODF) || \
424
                               ((IT) == SPI_I2S_IT_OVR) || ((IT) == I2S_IT_UDR) ||\
425
                               ((IT) == SPI_I2S_IT_TIFRFE))
426
/**
427
  * @}
428
  */
429

    
430
/** @defgroup SPI_I2S_flags_definition 
431
  * @{
432
  */
433

    
434
#define SPI_I2S_FLAG_RXNE               ((uint16_t)0x0001)
435
#define SPI_I2S_FLAG_TXE                ((uint16_t)0x0002)
436
#define I2S_FLAG_CHSIDE                 ((uint16_t)0x0004)
437
#define I2S_FLAG_UDR                    ((uint16_t)0x0008)
438
#define SPI_FLAG_CRCERR                 ((uint16_t)0x0010)
439
#define SPI_FLAG_MODF                   ((uint16_t)0x0020)
440
#define SPI_I2S_FLAG_OVR                ((uint16_t)0x0040)
441
#define SPI_I2S_FLAG_BSY                ((uint16_t)0x0080)
442
#define SPI_I2S_FLAG_TIFRFE             ((uint16_t)0x0100)
443

    
444
#define IS_SPI_I2S_CLEAR_FLAG(FLAG) (((FLAG) == SPI_FLAG_CRCERR))
445
#define IS_SPI_I2S_GET_FLAG(FLAG) (((FLAG) == SPI_I2S_FLAG_BSY) || ((FLAG) == SPI_I2S_FLAG_OVR) || \
446
                                   ((FLAG) == SPI_FLAG_MODF) || ((FLAG) == SPI_FLAG_CRCERR) || \
447
                                   ((FLAG) == I2S_FLAG_UDR) || ((FLAG) == I2S_FLAG_CHSIDE) || \
448
                                   ((FLAG) == SPI_I2S_FLAG_TXE) || ((FLAG) == SPI_I2S_FLAG_RXNE)|| \
449
                                   ((FLAG) == SPI_I2S_FLAG_TIFRFE))
450
/**
451
  * @}
452
  */
453

    
454
/** @defgroup SPI_CRC_polynomial 
455
  * @{
456
  */
457

    
458
#define IS_SPI_CRC_POLYNOMIAL(POLYNOMIAL) ((POLYNOMIAL) >= 0x1)
459
/**
460
  * @}
461
  */
462

    
463
/** @defgroup SPI_I2S_Legacy 
464
  * @{
465
  */
466

    
467
#define SPI_DMAReq_Tx                SPI_I2S_DMAReq_Tx
468
#define SPI_DMAReq_Rx                SPI_I2S_DMAReq_Rx
469
#define SPI_IT_TXE                   SPI_I2S_IT_TXE
470
#define SPI_IT_RXNE                  SPI_I2S_IT_RXNE
471
#define SPI_IT_ERR                   SPI_I2S_IT_ERR
472
#define SPI_IT_OVR                   SPI_I2S_IT_OVR
473
#define SPI_FLAG_RXNE                SPI_I2S_FLAG_RXNE
474
#define SPI_FLAG_TXE                 SPI_I2S_FLAG_TXE
475
#define SPI_FLAG_OVR                 SPI_I2S_FLAG_OVR
476
#define SPI_FLAG_BSY                 SPI_I2S_FLAG_BSY
477
#define SPI_DeInit                   SPI_I2S_DeInit
478
#define SPI_ITConfig                 SPI_I2S_ITConfig
479
#define SPI_DMACmd                   SPI_I2S_DMACmd
480
#define SPI_SendData                 SPI_I2S_SendData
481
#define SPI_ReceiveData              SPI_I2S_ReceiveData
482
#define SPI_GetFlagStatus            SPI_I2S_GetFlagStatus
483
#define SPI_ClearFlag                SPI_I2S_ClearFlag
484
#define SPI_GetITStatus              SPI_I2S_GetITStatus
485
#define SPI_ClearITPendingBit        SPI_I2S_ClearITPendingBit
486
/**
487
  * @}
488
  */
489
  
490
/**
491
  * @}
492
  */
493

    
494
/* Exported macro ------------------------------------------------------------*/
495
/* Exported functions --------------------------------------------------------*/ 
496

    
497
/*  Function used to set the SPI configuration to the default reset state *****/ 
498
void SPI_I2S_DeInit(SPI_TypeDef* SPIx);
499

    
500
/* Initialization and Configuration functions *********************************/
501
void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct);
502
void I2S_Init(SPI_TypeDef* SPIx, I2S_InitTypeDef* I2S_InitStruct);
503
void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct);
504
void I2S_StructInit(I2S_InitTypeDef* I2S_InitStruct);
505
void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState);
506
void I2S_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState);
507
void SPI_DataSizeConfig(SPI_TypeDef* SPIx, uint16_t SPI_DataSize);
508
void SPI_BiDirectionalLineConfig(SPI_TypeDef* SPIx, uint16_t SPI_Direction);
509
void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, uint16_t SPI_NSSInternalSoft);
510
void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState);
511
void SPI_TIModeCmd(SPI_TypeDef* SPIx, FunctionalState NewState);
512

    
513
void I2S_FullDuplexConfig(SPI_TypeDef* I2Sxext, I2S_InitTypeDef* I2S_InitStruct);
514

    
515
/* Data transfers functions ***************************************************/ 
516
void SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data);
517
uint16_t SPI_I2S_ReceiveData(SPI_TypeDef* SPIx);
518

    
519
/* Hardware CRC Calculation functions *****************************************/
520
void SPI_CalculateCRC(SPI_TypeDef* SPIx, FunctionalState NewState);
521
void SPI_TransmitCRC(SPI_TypeDef* SPIx);
522
uint16_t SPI_GetCRC(SPI_TypeDef* SPIx, uint8_t SPI_CRC);
523
uint16_t SPI_GetCRCPolynomial(SPI_TypeDef* SPIx);
524

    
525
/* DMA transfers management functions *****************************************/
526
void SPI_I2S_DMACmd(SPI_TypeDef* SPIx, uint16_t SPI_I2S_DMAReq, FunctionalState NewState);
527

    
528
/* Interrupts and flags management functions **********************************/
529
void SPI_I2S_ITConfig(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT, FunctionalState NewState);
530
FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG);
531
void SPI_I2S_ClearFlag(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG);
532
ITStatus SPI_I2S_GetITStatus(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT);
533
void SPI_I2S_ClearITPendingBit(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT);
534

    
535
#ifdef __cplusplus
536
}
537
#endif
538

    
539
#endif /*__STM32F4xx_SPI_H */
540

    
541
/**
542
  * @}
543
  */
544

    
545
/**
546
  * @}
547
  */
548

    
549
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/