/****************************************************************************** �� �� ����SPI_Master.c ����������SPI ����ģʽ������ͷ�ļ� �� �ߣ����� �� ����V1.0 �� �ڣ�2017.04.02 ******************************************************************************/ #ifndef _SPI_MASTER_H_ #define _SPI_MASTER_H_ #include "stdint.h" #include "mc9s12xhy128.h" #include "CRG.h" /****************************************************************************** SPI ���� ******************************************************************************/ #define SPI_GPIO_SELECT SPI_PS4_PS7 #define SPI_BAUD_RATE 4000000 //���Զ�����,��SPI_Master_Start�����ڶ��� #define SPI_DATA_BUFFER_SIZE 16 #define SPI_CALL_DATA_BLOCK_TX_ISR 1 //ʹ�����ݿ鴫������жϺ��� #define SPI_DUMMY_BYTE 0xFF #define SPI_DUMMY_WORD 0xFFFF /****************************************************************************** SPI���õ�GPIO ******************************************************************************/ #define SPI_PS4_PS7 0x00 #define SPI_PH0_PH3 0x10 #define SPI_PHV_PV3 0x20 /****************************************************************************** SPI����ģʽ ******************************************************************************/ #define SPI_MODE_0 0x00 #define SPI_MODE_1 0x04 #define SPI_MODE_2 0x08 #define SPI_MODE_3 0x0C /****************************************************************************** SPI��λ���� ******************************************************************************/ #define SPI_MSB_FIRST 0x00 #define SPI_LSB_FIRST 0x01 /****************************************************************************** SPIд״̬ ******************************************************************************/ #define SPI_WRITE_COMPLETE 0x00 #define SPI_UNWRITABLE 0x01 #define SPI_WRITE_NOT_COMPLETE 0x01 /****************************************************************************** SPI��ȡ��� ******************************************************************************/ #define SPI_READ_COMPLETE 0x00 #define SPI_READ_REQ_COMPLETE 0x00 #define SPI_READ_NOT_COMPLETE 0x01 /****************************************************************************** SPI���ݿ�״̬ ******************************************************************************/ #define SPI_DATA_BLOCK_IDLE 0x00 #define SPI_DATA_BLOCK_WRITE 0x01 #define SPI_DATA_BLOCK_READ 0x02 /****************************************************************************** SPI���ݿ�ṹ ******************************************************************************/ typedef struct { uint8_t Status; uint8_t ReadComplete; uint8_t Ptr; uint8_t Len; uint8_t Data[SPI_DATA_BUFFER_SIZE]; } SPIDataBlockStruct; /****************************************************************************** �������� ******************************************************************************/ void SPI_Master_Start(uint8_t Mode, uint8_t FirstBit); void SPI_Master_Stop(void); uint8_t SPI_Master_Get_Write_Status(void); uint8_t SPI_Master_Byte_Write(uint8_t Data); uint8_t SPI_Master_Byte_Read_Req(void); uint8_t SPI_Master_Get_Read_Byte(uint8_t *pData); uint8_t SPI_Master_Word_Write(uint16_t Data); uint8_t SPI_Master_Word_Read_Req(void); uint8_t SPI_Master_Get_Read_Word(uint16_t *pData); uint8_t SPI_Master_Block_Write(uint8_t *pData, uint8_t Len); uint8_t SPI_Master_Block_Read_Req(uint8_t Len); uint8_t SPI_Master_Get_Read_Block(uint8_t *pData, uint8_t Len); #if SPI_CALL_DATA_BLOCK_TX_ISR void SPI_Master_Block_Transmit_ISR(void); #endif #endif