📄 hspi.h
字号:
#ifndef __HSPI_H__
#define __HSPI_H__
#ifdef __cplusplus
extern "C" {
#endif
#define HSPI_BYTE 0
#define HSPI_HWORD 1
#define HSPI_WORD 2
#define Master 0
#define Slave 1
#define DMAMODE 0
#define INTMODE 1
#define POLLMODE 2
#define CPOLHIGH 0
#define CPOLLOW 1
#define FORMAT_A 0
#define FORMAT_B 1
#define HSPI_PCLK 0
#define HSPI_EPLL 2
#define HSPI_USBPHY 3
#define CH_SW_RST (1<<5)
#define CH_MASTER (0<<4)
#define CH_SLAVE (1<<4)
#define CH_RISING (0<<3)
#define CH_FALLING (1<<3)
#define CH_FORMAT_A (0<<2)
#define CH_FORMAT_B (1<<2)
#define CH_RXCH_OFF (0<<1)
#define CH_RXCH_ON (1<<1)
#define CH_TXCH_OFF (0<<0)
#define CH_TXCH_ON (1<<0)
#define CLK_CLKSEL_PCLK (0<<9)
#define CLK_CLKSEL_HCLK (1<<9)
#define CLK_CLKSEL_ECLK (2<<9)
#define CLK_CLKSEL_MPLL (3<<9)
#define CLK_ENCLK_DISABLE (0<<8)
#define CLK_ENCLK_ENABLE (1<<8)
#define MODE_BUS_SZ_BYTE (0<<18)
#define MODE_BUS_SZ_WORD (1<<18)
#define FEED_BACK_DELAY (1<<17)
#define MODE_BUS_4BURST (1<<0)
#define MODE_BUS_SINGLE (0<<0)
#define BURST 1
#define SINGLE 0
//#define MODE_SWAP_DISABLE (0<<3)
//#define MODE_SWAP_ENABLE (1<<3)
#define MODE_RXDMA_ON (1<<2)
#define MODE_TXDMA_ON (1<<1)
#define MODE_DMA_SINGLE 0
#define MODE_DMA_4BURST 1
#define INT_TRAILING (1<<6)
#define INT_RX_OVERRUN (1<<5)
#define INT_RX_UNDERRUN (1<<4)
#define INT_TX_OVERRUN (1<<3)
#define INT_TX_UNDERRUN (1<<2)
#define INT_RX_FIFORDY (1<<1)
#define INT_TX_FIFORDY (1<<0)
#define STUS_TX_DONE (1<<21)
#define STUS_TRAILCNT_ZERO (1<<20)
#define STUS_RX_OVERRUN (1<<5)
#define STUS_RX_UNDERRUN (1<<4)
#define STUS_TX_OVERRUN (1<<3)
#define STUS_TX_UNDERRUN (1<<2)
#define STUS_RX_FIFORDY (1<<1)
#define STUS_TX_FIFORDY (1<<0)
enum DMA_HS_MODE
{
DEMAND, HANDSHAKE
};
enum DMA_REQUEST_MODE
{
SOFTWARE, HARDWARE
};
#define LOCAHB 0
#define LOCAPB 1
#define ADDRINC 0
#define ADDRFIX 1
void Test_HSPI(void);
void Test_Master_INT_FullDuplex(void);
void Test_Slave_INT_FullDuplex(void);
void Test_Master_DMA_FullDuplex(void);
void Test_Slave_DMA_FullDuplex(void);
void Test_MasterTxOnly_INT(void);
void Test_SlaveRxOnly_INT(void);
void Test_MasterRxOnly_INT(void);
void Test_SlaveTxOnly_INT(void);
void Test_MasterTxOnly_DMA(void);
void Test_SlaveRxOnly_DMA(void);
void Test_MasterRxOnly_DMA(void);
void Test_SlaveTxOnly_DMA(void);
void InitHSPI(U32 MasterSlave, U32 Cpol, U32 Cpha, U32 ClkSel);
void TxDMAInit(U32 uSrcAddr, U32 uDstAddr, U32 uDataCnt);
void RxDMAInit(U32 uSrcAddr, U32 uDstAddr, U32 uDataCnt);
void HS_SPI_ERROR_CHECK(void);
void CalculationBPS(int Time);
void __irq HSPI_Int(void);
void __irq HSPI_Int_Byte(void);
void __irq DmaDone(void);
void __irq HSPI_Tx_Int(void);
void __irq HSPI_Rx_Int(void);
void __irq HSPI_Tx_Int_Byte(void);
void __irq HSPI_Rx_Int_Byte(void);
void __irq HSPI_ERR_Int(void);
void __irq DmaDone_FullDuplex(void);
void __irq HSPI_Int_Slave(void);
void __irq HSPI_Int_Master(void);
void CompareData(U32 a0, U32 a1, U32 bytes);
void Reset(void);
void nSSLow(void);
void nSSHigh(void);
void GPIOPortSet(void);
void __irq HSPI_Int_SlaveWord(void);
void __irq HSPI_Int_MasterWord(void);
#ifdef __cplusplus
}
#endif
#endif //__SPI_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -