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

📄 lle_spi.c

📁 BCM 控制demo源代码
💻 C
字号:
/*******************************************************************************/
/**
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);
}

/*******************************************************************************/

⌨️ 快捷键说明

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