www.pudn.com > Micrium-ST-uCOS-II-LCD-STM32-SK.rar > stm32f10x_spi.h


/******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 
* File Name          : stm32f10x_spi.h 
* Author             : MCD Application Team 
* Date First Issued  : 09/29/2006 
* Description        : This file contains all the functions prototypes for the 
*                      SPI firmware library. 
******************************************************************************** 
* History: 
* 05/21/2007: V0.3 
* 04/02/2007: V0.2 
* 02/05/2007: V0.1 
* 09/29/2006: V0.01 
******************************************************************************** 
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 
* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 
*******************************************************************************/ 
 
/* Define to prevent recursive inclusion -------------------------------------*/ 
#ifndef __STM32F10x_SPI_H 
#define __STM32F10x_SPI_H 
 
/* Includes ------------------------------------------------------------------*/ 
#include "stm32f10x_map.h" 
 
/* Exported types ------------------------------------------------------------*/ 
/* SPI Init structure definition */ 
typedef struct 
{ 
  u16 SPI_Direction; 
  u16 SPI_Mode; 
  u16 SPI_DataSize; 
  u16 SPI_CPOL; 
  u16 SPI_CPHA; 
  u16 SPI_NSS; 
  u16 SPI_BaudRatePrescaler; 
  u16 SPI_FirstBit; 
  u16 SPI_CRCPolynomial; 
}SPI_InitTypeDef; 
 
/* Exported constants --------------------------------------------------------*/ 
/* SPI data direction mode */ 
#define SPI_Direction_2Lines_FullDuplex    ((u16)0x0000) 
#define SPI_Direction_2Lines_RxOnly        ((u16)0x0400) 
#define SPI_Direction_1Line_Rx             ((u16)0x8000) 
#define SPI_Direction_1Line_Tx             ((u16)0xC000) 
 
#define IS_SPI_DIRECTION_MODE(MODE) ((MODE == SPI_Direction_2Lines_FullDuplex) || \ 
                                     (MODE == SPI_Direction_2Lines_RxOnly) || \ 
                                     (MODE == SPI_Direction_1Line_Rx) || \ 
						             (MODE == SPI_Direction_1Line_Tx)) 
 
/* SPI master/slave mode */ 
#define SPI_Mode_Master                    ((u16)0x0104) 
#define SPI_Mode_Slave                     ((u16)0x0000) 
 
#define IS_SPI_MODE(MODE) ((MODE == SPI_Mode_Master) || \ 
                           (MODE == SPI_Mode_Slave)) 
 
/* SPI data size */ 
#define SPI_DataSize_16b                   ((u16)0x0800) 
#define SPI_DataSize_8b                    ((u16)0x0000) 
 
#define IS_SPI_DATASIZE(DATASIZE) ((DATASIZE == SPI_DataSize_16b) || \ 
                                   (DATASIZE == SPI_DataSize_8b)) 
 
/* SPI Clock Polarity */ 
#define SPI_CPOL_Low                       ((u16)0x0000) 
#define SPI_CPOL_High                      ((u16)0x0002) 
 
#define IS_SPI_CPOL(CPOL) ((CPOL == SPI_CPOL_Low) || \ 
                           (CPOL == SPI_CPOL_High)) 
 
/* SPI Clock Phase */ 
#define SPI_CPHA_1Edge                     ((u16)0x0000) 
#define SPI_CPHA_2Edge                     ((u16)0x0001) 
 
#define IS_SPI_CPHA(CPHA) ((CPHA == SPI_CPHA_1Edge) || \ 
                           (CPHA == SPI_CPHA_2Edge)) 
 
/* SPI Slave Select management */ 
#define SPI_NSS_Soft                       ((u16)0x0200) 
#define SPI_NSS_Hard                       ((u16)0x0000) 
 
#define IS_SPI_NSS(NSS) ((NSS == SPI_NSS_Soft) || \ 
                         (NSS == SPI_NSS_Hard)) 
 
/* SPI BaudRate Prescaler  */ 
#define SPI_BaudRatePrescaler_2            ((u16)0x0000) 
#define SPI_BaudRatePrescaler_4            ((u16)0x0008) 
#define SPI_BaudRatePrescaler_8            ((u16)0x0010) 
#define SPI_BaudRatePrescaler_16           ((u16)0x0018) 
#define SPI_BaudRatePrescaler_32           ((u16)0x0020) 
#define SPI_BaudRatePrescaler_64           ((u16)0x0028) 
#define SPI_BaudRatePrescaler_128          ((u16)0x0030) 
#define SPI_BaudRatePrescaler_256          ((u16)0x0038) 
 
#define IS_SPI_BAUDRATE_PRESCALER(PRESCALER) ((PRESCALER == SPI_BaudRatePrescaler_2) || \ 
                                              (PRESCALER == SPI_BaudRatePrescaler_4) || \ 
                                              (PRESCALER == SPI_BaudRatePrescaler_8) || \ 
                                              (PRESCALER == SPI_BaudRatePrescaler_16) || \ 
                                              (PRESCALER == SPI_BaudRatePrescaler_32) || \ 
                                              (PRESCALER == SPI_BaudRatePrescaler_64) || \ 
                                              (PRESCALER == SPI_BaudRatePrescaler_128) || \ 
                                              (PRESCALER == SPI_BaudRatePrescaler_256)) 
 
/* SPI MSB/LSB transmission */ 
#define SPI_FirstBit_MSB                   ((u16)0x0000) 
#define SPI_FirstBit_LSB                   ((u16)0x0080) 
 
#define IS_SPI_FIRST_BIT(BIT) ((BIT == SPI_FirstBit_MSB) || \ 
                               (BIT == SPI_FirstBit_LSB)) 
 
/* SPI DMA transfer requests */ 
#define SPI_DMAReq_Tx                      ((u16)0x0002) 
#define SPI_DMAReq_Rx                      ((u16)0x0001) 
 
#define IS_SPI_DMA_REQ(REQ) (((REQ & (u16)0xFFFC) == 0x00) && (REQ != 0x00)) 
 
/* SPI NSS internal software mangement */ 
#define SPI_NSSInternalSoft_Set            ((u16)0x0100) 
#define SPI_NSSInternalSoft_Reset          ((u16)0xFEFF) 
 
#define IS_SPI_NSS_INTERNAL(INTERNAL) ((INTERNAL == SPI_NSSInternalSoft_Set) || \ 
                                       (INTERNAL == SPI_NSSInternalSoft_Reset)) 
 
/* SPI CRC Transmit/Receive */ 
#define SPI_CRC_Tx                         ((u8)0x00) 
#define SPI_CRC_Rx                         ((u8)0x01) 
 
#define IS_SPI_CRC(CRC) ((CRC == SPI_CRC_Tx) || (CRC == SPI_CRC_Rx)) 
 
/* SPI direction transmit/receive */ 
#define SPI_Direction_Rx                   ((u16)0xBFFF) 
#define SPI_Direction_Tx                   ((u16)0x4000) 
 
#define IS_SPI_DIRECTION(DIRECTION) ((DIRECTION == SPI_Direction_Rx) || \ 
                                     (DIRECTION == SPI_Direction_Tx)) 
 
/* SPI interrupts definition */ 
#define SPI_IT_TXE                         ((u8)0x71) 
#define SPI_IT_RXNE                        ((u8)0x60) 
#define SPI_IT_ERR                         ((u8)0x50) 
 
#define IS_SPI_CONFIG_IT(IT) ((IT == SPI_IT_TXE) || (IT == SPI_IT_RXNE) || \ 
                              (IT == SPI_IT_ERR)) 
 
#define SPI_IT_OVR                         ((u8)0x56) 
#define SPI_IT_MODF                        ((u8)0x55) 
#define SPI_IT_CRCERR                      ((u8)0x54) 
 
#define IS_SPI_CLEAR_IT(IT) ((IT == SPI_IT_OVR) || (IT == SPI_IT_MODF) || \ 
                             (IT == SPI_IT_CRCERR)) 
 
#define IS_SPI_GET_IT(IT) ((IT == SPI_IT_TXE) || (IT == SPI_IT_RXNE) || \ 
                           (IT == SPI_IT_OVR) || (IT == SPI_IT_MODF) || \ 
                           (IT == SPI_IT_CRCERR)) 
 
/* SPI flags definition */ 
#define SPI_FLAG_RXNE                      ((u16)0x0001) 
#define SPI_FLAG_TXE                       ((u16)0x0002) 
#define SPI_FLAG_CRCERR                    ((u16)0x0010) 
#define SPI_FLAG_MODF                      ((u16)0x0020) 
#define SPI_FLAG_OVR                       ((u16)0x0040) 
#define SPI_FLAG_BSY                       ((u16)0x0080) 
 
#define IS_SPI_CLEAR_FLAG(FLAG) (((FLAG & (u16)0xFF8F) == 0x00) && (FLAG != 0x00)) 
#define IS_SPI_GET_FLAG(FLAG) ((FLAG == SPI_FLAG_BSY) || (FLAG == SPI_FLAG_OVR) || \ 
                               (FLAG == SPI_FLAG_MODF) || (FLAG == SPI_FLAG_CRCERR) || \ 
                               (FLAG == SPI_FLAG_TXE) || (FLAG == SPI_FLAG_RXNE)) 
 
/* SPI CRC polynomial --------------------------------------------------------*/ 
#define IS_SPI_CRC_POLYNOMIAL(POLYNOMIAL) (POLYNOMIAL >= 0x1) 
 
/* Exported macro ------------------------------------------------------------*/ 
/* Exported functions ------------------------------------------------------- */ 
void SPI_DeInit(SPI_TypeDef* SPIx); 
void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct); 
void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct); 
void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState); 
void SPI_ITConfig(SPI_TypeDef* SPIx, u8 SPI_IT, FunctionalState NewState); 
void SPI_DMACmd(SPI_TypeDef* SPIx, u16 SPI_DMAReq, FunctionalState NewState); 
void SPI_SendData(SPI_TypeDef* SPIx, u16 Data); 
u16 SPI_ReceiveData(SPI_TypeDef* SPIx); 
void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, u16 SPI_NSSInternalSoft); 
void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState); 
void SPI_DataSizeConfig(SPI_TypeDef* SPIx, u16 SPI_DataSize); 
void SPI_TransmitCRC(SPI_TypeDef* SPIx); 
void SPI_CalculateCRC(SPI_TypeDef* SPIx, FunctionalState NewState); 
u16 SPI_GetCRC(SPI_TypeDef* SPIx, u8 SPI_CRC); 
u16 SPI_GetCRCPolynomial(SPI_TypeDef* SPIx); 
void SPI_BiDirectionalLineConfig(SPI_TypeDef* SPIx, u16 SPI_Direction); 
FlagStatus SPI_GetFlagStatus(SPI_TypeDef* SPIx, u16 SPI_FLAG); 
void SPI_ClearFlag(SPI_TypeDef* SPIx, u16 SPI_FLAG); 
ITStatus SPI_GetITStatus(SPI_TypeDef* SPIx, u8 SPI_IT); 
void SPI_ClearITPendingBit(SPI_TypeDef* SPIx, u8 SPI_IT); 
 
#endif /*__STM32F10x_SPI_H */ 
 
/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/