You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

216 lines
5.7 KiB

// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// File name    : spi_reg.h
// Version      : V0.1
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#ifndef SPI_REG_H_
#define SPI_REG_H_
#include "type.h"
#pragma anon_unions
typedef struct
{
	__IO unsigned char SPIBR;//0x00
	__IO unsigned char SPIFR;//0x01
	__IO unsigned char SPICR1;//0x02
	__IO unsigned char SPICR2;//0x03
	__IO unsigned char SPIRXFTOCTR;//0x04
	__IO unsigned char SPITXFTOCTR;//0x05
	__IO unsigned char SPITXFCR;//0x06
	__IO unsigned char SPIRXFCR;//0x07
	__IO unsigned char SPIASCDR;//0x08
	__IO unsigned char SPIBSCDR;//0x09
	__IO unsigned char SPIDDR;//0x0a
	__IO unsigned char SPIPURD;//0x0b
	__IO unsigned char SPITCNTM   ;//0x0c
	__IO unsigned char SPITCNTH   ;//0x0d
//	__IO unsigned char SPIPORT   ;//0x0e
	union
	{
		__IO unsigned char SPIPORT   ;
		struct
		{
			__IO unsigned char MISO  :1;
			__IO unsigned char MOSI:1;
			__IO unsigned char SCK:1 ;
			__IO unsigned char SS:1 ;
			__IO unsigned char reserved:4;
			
		}U8SPIPORT;
		
	};
	__IO unsigned char SPITCNTL   ;//0x0f
	__IO unsigned char SPIIRSP   ;//0x010
	     unsigned char RESERVED1[1];//0x11
	__IO unsigned char SPIDR   ;//0x12
	__IO unsigned char SPIDRH   ;//0x13
	__IO unsigned char SPIRXFSR ;//0x14
	__IO unsigned char SPITXFSR ;//0x15
	union
	{
		__IO unsigned short SPISRHW;//0x16
		struct
		{
			__IO unsigned char SPISR;//0x16
			__IO unsigned char SPISRH;//0x17
		};
	};
	__IO unsigned char SPIFDCR ;//0x18
	__IO unsigned char SPIICR ;//0x19
	__IO unsigned char SPIDMACR ;//0x1a
	__IO unsigned char SPIDMATHR ;//0x1b
	__IO unsigned char SPIRXFDBGR ;//0x1c
	__IO unsigned char SPITXFDBGR ;//0x1e
}SPI_TypeDef;
/////////////////////////////////////////////////////////////////////////////////
/*SPI FIFO size*/
#define SPI_FIFO_SIZE	(8)
/*SPI default guard time*/
#define SPI_DFT_GT		(0x03)
/*SPI error-related interrupt*/
/*-----------------------------------------------------------------------------------
BIT11 | BIT10 | BIT9 | BIT8 | BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0
FLOST     *     MODF  RXFOVF RXFUDF RXFSER TXFOVF TXFUDF TXFSER  RXFTO  TXFTO  SPIE
-----------------------------------------------------------------------------------*/
#define SPI_ERROR_INT	(0x0bb6)
/*macro to enable FIFO time-out*/
#define SPI_TIMEOUT_EN	(0)
/*master/slave mode macros*/
#define SPI_MASTER		(0x01)
#define SPI_SLAVE		(0x00)
/*SPI interrupt macros*/
/*
BIT11 | BIT10 | BIT9 | BIT8 | BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0
FLOST     *     MODF  RXFOVF RXFUDF RXFSER TXFOVF TXFUDF TXFSER  RXFTO TXFTO   SPIE
*/
#define SPIIE_SPIE_MASK			(BIT0)
#define SPIIE_TXFTO_MASK        (BIT1)
#define SPIIE_RXFTO_MASK        (BIT2)
#define SPIIE_TXFSER_MASK		(BIT3)
#define SPIIE_TXFUDF_MASK       (BIT4)
#define SPIIE_TXFOVF_MASK       (BIT5)
#define SPIIE_RXFSER_MASK       (BIT6)
#define SPIIE_RXFUDF_MASK       (BIT7)
#define SPIIE_RXFOVF_MASK       (BIT8)
#define SPIIE_MODF_MASK       	(BIT9)
#define SPIIE_FLOST_MASK        (BIT11)
/*SPIFR macros*/
#define SPIFR_CONT_MASK			(0x80)
#define SPIFR_GTE_MASK			(0x40)
#define SPIFR_LBM_MASK			(0x20)
#define SPIFR_FFSEL_MASK		(0x10)
#define SPIFR_FMSZ_MASK			(0x0f)
#define FMSZ4_16(len)			(len-1)
/*Data regiter access mode macros*/
#define SPI_BYTE				(0x01)
#define SPI_HALFWORD			(0x00)
/*SPICR1 marcos*/
#define SPICR1_SPIE_MASK			(0x80)
#define SPICR1_SPE_MASK				(0x40)
#define SPICR1_SWOM_MASK			(0x20)
#define SPICR1_MSTR_MASK			(0x10)
#define SPICR1_CPOL_MASK			(0x08)
#define SPICR1_CPHA_MASK			(0x04)
#define SPICR1_SSOE_MASK			(0x02)
#define SPICR1_LSBFE_MASK			(0x01)
#define SPICR1_CLEAR_MASK           (0x00)
#define SPI_ENABLE                  (0x40)
/*SPITXFTOCTR macros*/
#define SPITXFTOCTR_TXFTOIE_MASK	(0x80)
#define SPITXFTOCTR_TXFTOE_MASK		(0x40)
/*SPIRXFTOCTR macros*/
#define SPIRXFTOCTR_RXFTOIE_MASK	(0x80)
#define SPIRXFTOCTR_RXFTOE_MASK		(0x40)
/*SPITXFCR macros*/
#define SPITXFCR_TXFCLR_MASK        (0x80)
#define SPITXFCR_TXFOVIE_MASK       (0x40)
#define SPITXFCR_TXFUDIE_MASK       (0x20)
#define SPITXFCR_TXFSTHIE_MASK      (0x10)
#define SPITXFCR_TXFSTH_MASK		(0x0f)
/*SPIRXFCR macros*/
#define SPIRXFCR_RXFCLR_MASK        (0x80)
#define SPIRXFCR_RXFOVIE_MASK       (0x40)
#define SPIRXFCR_RXFUDIE_MASK       (0x20)
#define SPIRXFCR_RXFSTHIE_MASK      (0x10)
#define SPIRXFCR_RXFSTH_MASK		(0x0f)
/*SPITXFCR macros*/
#define SPITXFCR_TXFSTH_MASK		(0x0f)
#define SPIRXFCR_RXFSTH_MASK		(0x0f)
/*SPIPURD macros*/
#define SPIPURD_HS_MASK 			(0x80)
#define SPIPURD_PSW_MASK 			(0x40)
#define SPIPURD_RDPSP_MASK 			(0x10)
#define SPIPURD_PDPSP_MASK 			(0x02)
#define SPIPURD_PUPSP_MASK 			(0x01)
/*SPIDDR macros*/
#define SPIDDR_SS_MASK				(0x08)
#define SPIDDR_SCK_MASK				(0x04)
#define SPIDDR_MOSI_MASK			(0x02)
#define SPIDDR_MISO_MASK			(0x01)
/*SPIPORT macros*/
#define SPIPORT_SS_MASK				(0x08)
#define SPIPORT_SCK_MASK			(0x04)
#define SPIPORT_MOSI_MASK			(0x02)
#define SPIPORT_MISO_MASK			(0x01)
/*SPITXFSR macros*/
#define SPITXFSR_TXNXTP_MASK		(0xf0)
#define SPITXFSR_TXFCTR_MASK		(0x0f)
/*SPISR macros*/
#define SPISR_TXFTO_MASK	        (0x8000)
#define SPISR_TXFOVF_MASK			(0x4000)
#define SPISR_TXFUDF_MASK			(0x2000)
#define SPISR_TXFSER_MASK	       	(0x1000)
#define SPISR_RXFTO_MASK			(0x0800)
#define SPISR_RXFOVF_MASK			(0x0400)
#define SPISR_RXFUDF_MASK			(0x0200)
#define SPISR_RXFSER_MASK			(0x0100)
#define SPISR_SPIF_MASK				(0x0080)
#define SPISR_FLOST_MASK			(0x0040)
#define SPISR_EOTF_MASK				(0x0020)
#define SPISR_MODF_MASK				(0x0010)
#define SPISR_TXFFULL_MASK			(0x0008)
#define SPISR_TXFEMP_MASK			(0x0004)
#define SPISR_RXFFULL_MASK			(0x0002)
#define SPISR_RXFEMP_MASK			(0x0001)
/*SPIICR macros*/
#define SPIICR_FLOSTIE_MASK			(0x40)
#define SPIICR_MODFIE_MASK			(0x10)
#endif /* SPI_REG_H_ */