?? lle_spi.c
字號(hào):
/*******************************************************************************/
/**
Copyright (c) 2007 Freescale Semiconductor
\file lle_SPI.c
\brief Driver for basic SPI operation
\author Freescale Semiconductor
\author B05114
\version 0.2
\date December/2007
*/
/*******************************************************************************/
/** S12X derivative information */
#include <MC9S12XEP100.h>
/** Variable types and common definitions */
#include "typedefs.h"
/** SPI definitions */
#include "lle_SPI.h"
/** Definitions and function prototypes for timing */
#include "lle_TIME.h"
/*******************************************************************************/
/**
* \brief SPI1 module initializing in Master mode @ 500kHz
* \author B05114
* \param void
* \return void
*/
void lle_SPI_Init(void)
{
SPI1CR1 = 0x04; /* SPI module disabled */
SPI1CR2 = 0x00;
(void)SPI1SR; /* Read the status register and */
(void)SPI1DR; /* read the data register to clear the status flags */
SPI1BR_SPPR = SPI_SPPR; /* Baud rate divider */
SPI1BR_SPR = SPI_SPR;
SPI1CR2_MODFEN = 0; /* Slave select output pin not used by SPI module */
SPI1CR1_SSOE = 0;
SPI1CR1_MSTR = 1; /* SPI in Master mode */
SPI1CR1_CPHA = 1; /* Data sampling at falling edges */
SPI1CR1_SPE = 1; /* SPI module enabled */
}
/*******************************************************************************/
/**
* \brief 8 bit transmission and reception through SPI
* \author B05114
* \param *ptSPI: Pointer to array with the data to be sent
* \return void
*/
UINT8 lle_SPI_8(UINT8 *ptSPI)
{
lle_SW_Delay(SPI_DELAY);
while (!SPI1SR_SPTEF) /* Wait for empty data register */
;
SPI1DR = ptSPI[0]; /* Load byte in data transmission register */
while (!SPI1SR_SPIF) /* Wait for end of transfer */
;
lle_SW_Delay(SPI_DELAY);
return SPI1DRL; /* Return the read value */
}
/*******************************************************************************/
/**
* \brief 16 bit transmission and reception through SPI
* \author B05114
* \param *ptSPI: Pointer to array with the data to be sent
* \return void (The received data is stored in the input array)
*/
void lle_SPI_16(UINT8 *ptSPI)
{
UINT8 u8index;
lle_SW_Delay(SPI_DELAY);
for(u8index = 0; u8index<2; u8index++)
{
while (!SPI1SR_SPTEF) /* Wait for empty data register */
;
SPI1DR = ptSPI[u8index]; /* Load byte in data transmission register */
while (!SPI1SR_SPIF) /* Wait for end of transfer */
;
ptSPI[u8index] = SPI1DRL; /* Store-back the read value */
}
lle_SW_Delay(SPI_DELAY);
}
/*******************************************************************************/
/**
* \brief 24 bit transmission and reception through SPI
* \author B05114
* \param *ptSPI: Pointer to array with the data to be sent
* \return void (The received data is stored in the input array)
*/
void lle_SPI_24(UINT8 *ptSPI)
{
UINT8 u8index;
lle_SW_Delay(SPI_DELAY);
for(u8index = 0; u8index<3; u8index++)
{
while (!SPI1SR_SPTEF) /* Wait for empty data register */
;
SPI1DR = ptSPI[u8index]; /* Load byte in data transmission register */
while (!SPI1SR_SPIF) /* Wait for end of transfer */
;
ptSPI[u8index] = SPI1DRL; /* Store-back the read value */
}
lle_SW_Delay(SPI_DELAY);
}
/*******************************************************************************/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -