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

📄 spi.c

📁 mega88的无线bootload, 无线芯片cc1100,支持flash读写, eeprom读写, 编译环境IAR for AVR 4.20
💻 C
字号:
/*
*********************************************************************************************************
*                                              Atmega88
*                                          spi functions
*
* File    : SPI.C
* Data	  : March 20, 2007
*********************************************************************************************************
*/

#include "bootloader.h"

/*
*********************************************************************************************************
*                                     INTERRUPT VECTOR FOR "SPI_STC"
*
* Description      :
* Note(s)/Warnings :
*********************************************************************************************************
*/
/*
#pragma vector = SPI_STC_vect
__interrupt void SPI_STC_isr(void)
{
}
*/

/*
*********************************************************************************************************
*                                     SPI_PUT    SPI_HEAD
*
* Description      :
* Arguments        :
* Returned Values  : 
* Note(s)/Warnings :
*********************************************************************************************************
*/
void SpiPut(BYTE data)
{
    SPDR = data;
    SPI_WAIT();
}

void SpiHead(BYTE data)
{
    CLR_CSN;
    while (READ_MISO);
    SpiPut(data);
}

/*
*********************************************************************************************************
*                                         SpiWriteReg
*
* Description      :
* Arguments        :
* Returned Values  : none
* Note(s)/Warnings :
*********************************************************************************************************
*/
void SpiWriteReg(BYTE addr, BYTE val)
{
    SpiHead(addr);
    SpiPut(val);
    SET_CSN;
}
/*
*********************************************************************************************************
*                                         SpiReadReg
*
* Description      :
* Arguments        :
* Returned Values  : none
* Note(s)/Warnings :
*********************************************************************************************************
*/
BYTE SpiReadReg(BYTE addr)
{
	BYTE x;

    SpiHead(addr | READ_SINGLE);
    SpiPut(0);
    x = SPDR;
    SET_CSN;
    return x;
}
/*
*********************************************************************************************************
*                                         SpiStrobe
*
* Description      :
* Arguments        :
* Returned Values  : none
* Note(s)/Warnings :
*********************************************************************************************************
*/
void SpiStrobe(BYTE strobe)
{
    SpiHead(strobe);
    SET_CSN;
}

/*
*********************************************************************************************************
*                                         SPI_INIT
*
* Description      :
* Arguments        :
* Returned Values  : none
* Note(s)/Warnings :
*********************************************************************************************************
*/
      //SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0 [SPCR]
      // 0    1   0    1    0    0    0    0

      //SPIF WCOL – – – – – SPI2X [SPSR]
      //MSB - - - - - - LSB [SPDR]


      //---CPOL Functionality---
      //CPOL (Leading Edge)( Trailing Edge)
      // 0      Rising        Falling
      // 1      Falling       Rising

      //---CPHA Functionality---
      //CPHA (Leading Edge) (Trailing Edge)
      // 0      Sample        Setup
      // 1      Setup         Sample

      // SPI2X SPR1 SPR0 SCK Frequency
      //  0     0    0     fosc/4
      //  0     0    1     fosc/16
      //  0     1    0     fosc/64
      //  0     1    1     fosc/128
      //  1     0    0     fosc/2
      //  1     0    1     fosc/8
      //  1     1    0     fosc/32
      //  1     1    1     fosc/64
/*
void SPI_INIT(void){

    SPCR = B0101_0001;
    SPSR = B0000_0001
}*/

⌨️ 快捷键说明

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