⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi.h

📁 ARM7 MCP2510的CAN程序
💻 H
字号:
#ifndef _SPI_H
#define _SPI_H


#include 	"2410addr.h"
#include 	"2410lib.h"
#include 	"def.h"

//===================== Register Configuration Constants ======================

#define CHIP_SELECT_nSS0				0xFFFFFFFB
#define CHIP_DESELECT_nSS0				0x00000004


#define SPI_INTERNAL_CLOCK_ENABLE		(1<<18)				// Enable CPU clock to SPI controller

//----- GPIO Configuration Masks -----
#define CLEAR_GPG2_MASK					0xFFFFFFCF
#define ENABLE_GPG2_OUTPUT				0x00000010
#define ENABLE_GPG2_PULLUP				0x0000FFFB;

#define ENABLE_SPICLK0					0x08000000
#define ENABLE_SPIMSIO					0x02000000
#define DISABLE_SPICLK_SPIMSIO_PULLUP	0x00003000

//----- Register definitions for SPCON0 control register (global config register) -----
#define SPI_MODE_POLLING				0x00000000				// Data transfer modes
#define SPI_MODE_DMA					0x00000040
#define SPI_MODE_INTERRUPT				0x00000020
#define SPI_CLOCK_ENABLE				0x00000010				// Enable SPI clock (in master mode)
#define SPI_SELECT_MASTER				0x00000008				// Select master mode
#define SPI_CLOCK_POLARITY_HIGH			0x00000000				// Determines active clock type (high or low)
#define SPI_CLOCK_POLARITY_LOW			0x00000004
#define SPI_CLOCK_PHASE_FORMAT_A		0x00000000				// Determines transfer format (A or B)
#define SPI_CLOCK_PHASE_FORMAT_B		0x00000002					
#define SPI_TX_AUTO_GARBAGE				0x00000001				// Used when only receiving data


//----- Register definitions for SPSTA0 status register (global status register) -----
#define SPI_DATA_COLLISION				0x00000004				// Indicates I/O timing error (see datasheet)
#define SPI_MULTI_MASTER_ERROR			0x00000002				// Indicates both sender/reciever configured as Master
#define SPI_TRANSFER_READY				0x00000001				// Indicates SPI is ready to transfer/receive

//----- Register definitions for SPPIN0 control register (global config register) -----
//		NOTE: Bit 1 always needs to be a '1'
#define SPI_MULTI_MASTER_ERROR_ENABLE	0x00000006				// Enables checking for multi-master error 
#define SPI_MASTER_OUT_KEEP				0x00000003				// Determines MOSI drive or release (see datasheet)


//----- Register definitions for SPPRE0 control register (global config register) -----
//		NOTE: The prescale values for selecting the baud rates are hardcoded in the
//			  SetSPIClockRate() routine.  The available baud rates are:
#define CLK_RATE_FULL					0x00					// Full Master clock
#define CLK_RATE_HALF					0x01					// 1/2 Master clock
#define CLK_RATE_FOUR					0x02					// 1/4 Master clock
#define CLK_RATE_EIGHT					0x03					// 1/8 Master clock
#define CLK_RATE_SIXTEEN				0x04					// 1/16 Master clock
#define CLK_RATE_THIRTY2				0x05					// 1/32 Master clock
#define CLK_RATE_SIXTY4					0x06					// 1/64 Master clock
#define CLK_RATE_SLOW					0x07	



//-------------------------- Public Interface ------------------------------
BOOL SPI_Init(VOID);
BOOL SPI_Deinit(VOID);
BOOL SPI_SendByte(BYTE bData, BYTE* pData);
BOOL SPI_WaitTxRxReady(VOID);
BOOL SPI_SendWord(WORD wData);

//-------------------- Private Interface (Helper routines) ------------------
VOID StartSPIClock(VOID);
VOID StopSPIClock(VOID);
VOID SetSPIClockRate(DWORD ClockRate);

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -